vagrant-skytap 0.1.11 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.byebug_history +242 -19
- data/CHANGELOG.md +9 -0
- data/README.md +30 -8
- data/Vagrantfile.rej +83 -0
- data/_patches-20160112/0 +388 -0
- data/_patches-20160112/1 +82 -0
- data/_patches-20160112/2 +239 -0
- data/_patches-20160112/COMPLETED-ABOVE-THIS-LINE +4 -0
- data/_patches-20160112/COMPLETED-BELOW-THIS-LINE +4 -0
- data/_patches-20160112/CR-ABOVE-THIS-LINE +4 -0
- data/_patches-20160112/CR-BELOW-THIS-LINE +4 -0
- data/_patches-20160112/WIP-ABOVE-THIS-LINE +4 -0
- data/_patches-20160112/WIP-BELOW-THIS-LINE +4 -0
- data/_patches-20160112/acceptance-test-runner +29 -0
- data/_patches-20160112/ansible-1 +92 -0
- data/_patches-20160112/cache-api-client-in-up +40 -0
- data/_patches-20160112/dead-code-in-actions +44 -0
- data/_patches-20160112/debug-changes +42 -0
- data/_patches-20160112/demo-rails-app +1276 -0
- data/_patches-20160112/eng-10166-halt-spec +40 -0
- data/_patches-20160112/eng-10256 +527 -0
- data/_patches-20160112/eng-10256-2 +162 -0
- data/_patches-20160112/eng-10256-ubuntu-testing +88 -0
- data/_patches-20160112/eng-10269-test-stuff +87 -0
- data/_patches-20160112/eng-10269-wtf +119 -0
- data/_patches-20160112/eng-10369 +143 -0
- data/_patches-20160112/eng-10369-tmp +60 -0
- data/_patches-20160112/eng-10919 +56 -0
- data/_patches-20160112/eng-11177-fix-actions-requires +44 -0
- data/_patches-20160112/eng-11442 +4 -0
- data/_patches-20160112/eng-11616 +403 -0
- data/_patches-20160112/eng-11616-2 +67 -0
- data/_patches-20160112/eng-11616-actual +184 -0
- data/_patches-20160112/eng-11625a +4 -0
- data/_patches-20160112/eng-11711 +85 -0
- data/_patches-20160112/eng-12232-command-spec +236 -0
- data/_patches-20160112/eng-12235 +83 -0
- data/_patches-20160112/eng-12235-override-refactor +140 -0
- data/_patches-20160112/eng-12240 +103 -0
- data/_patches-20160112/eng-12249 +40 -0
- data/_patches-20160112/eng-12301 +50 -0
- data/_patches-20160112/eng-12843 +95 -0
- data/_patches-20160112/env-source +112 -0
- data/_patches-20160112/frickin-vagrant-spec +163 -0
- data/_patches-20160112/gem-pre-version +14 -0
- data/_patches-20160112/gems-old +9 -0
- data/_patches-20160112/googles-specs +713 -0
- data/_patches-20160112/local-configs-ignore +61 -0
- data/_patches-20160112/misc +79 -0
- data/_patches-20160112/network-unreachable +31 -0
- data/_patches-20160112/new-boxfile +288 -0
- data/_patches-20160112/parallelization-maybe +198 -0
- data/_patches-20160112/read-state +23 -0
- data/_patches-20160112/refactor-to-use-public_address-cap +25 -0
- data/_patches-20160112/series +60 -0
- data/_patches-20160112/status +12 -0
- data/_patches-20160112/test-move-env-data +231 -0
- data/_patches-20160112/test-vagrantfile-vm1 +167 -0
- data/_patches-20160112/the_version_in_0.1.13.pre1 +598 -0
- data/_patches-20160112/vagrant-spec-mock-api +137 -0
- data/_patches-20160112/vagrant-vmware-plugin +233 -0
- data/_patches-20160112/vagrantfile +403 -0
- data/_patches-20160112/vagrantfile-for-acceptance-tests +29 -0
- data/_patches-20160112/vagrantfile-for-nick +95 -0
- data/_patches-20160112/vagrantfiles-to-forget-what-they-are-for +134 -0
- data/_patches-20160112/vm-vanished +42 -0
- data/_patches-20160112a/01 +148 -0
- data/_patches-20160112a/2 +239 -0
- data/_patches-20160112a/COMPLETED-ABOVE-THIS-LINE +4 -0
- data/_patches-20160112a/COMPLETED-BELOW-THIS-LINE +4 -0
- data/_patches-20160112a/CR-ABOVE-THIS-LINE +4 -0
- data/_patches-20160112a/CR-BELOW-THIS-LINE +4 -0
- data/_patches-20160112a/WIP-ABOVE-THIS-LINE +4 -0
- data/_patches-20160112a/WIP-BELOW-THIS-LINE +4 -0
- data/_patches-20160112a/acceptance-test-runner +29 -0
- data/_patches-20160112a/ansible-1 +92 -0
- data/_patches-20160112a/cache-api-client-in-up +40 -0
- data/_patches-20160112a/dead-code-in-actions +44 -0
- data/_patches-20160112a/debug-changes +42 -0
- data/_patches-20160112a/demo-rails-app +1276 -0
- data/_patches-20160112a/eng-10166-halt-spec +40 -0
- data/_patches-20160112a/eng-10256-ubuntu-testing +88 -0
- data/_patches-20160112a/eng-10269-test-stuff +87 -0
- data/_patches-20160112a/eng-10269-wtf +119 -0
- data/_patches-20160112a/eng-10369 +143 -0
- data/_patches-20160112a/eng-10369-tmp +60 -0
- data/_patches-20160112a/eng-10919 +56 -0
- data/_patches-20160112a/eng-11177-fix-actions-requires +44 -0
- data/_patches-20160112a/eng-11442 +4 -0
- data/_patches-20160112a/eng-11616 +403 -0
- data/_patches-20160112a/eng-11616-2 +67 -0
- data/_patches-20160112a/eng-11616-actual +184 -0
- data/_patches-20160112a/eng-11625a +4 -0
- data/_patches-20160112a/eng-11711 +85 -0
- data/_patches-20160112a/eng-12232-command-spec +236 -0
- data/_patches-20160112a/eng-12235 +83 -0
- data/_patches-20160112a/eng-12235-override-refactor +140 -0
- data/_patches-20160112a/eng-12240 +103 -0
- data/_patches-20160112a/eng-12249 +40 -0
- data/_patches-20160112a/eng-12301 +50 -0
- data/_patches-20160112a/eng-12843 +95 -0
- data/_patches-20160112a/env-source +112 -0
- data/_patches-20160112a/frickin-vagrant-spec +163 -0
- data/_patches-20160112a/gem-pre-version +14 -0
- data/_patches-20160112a/gems-old +9 -0
- data/_patches-20160112a/googles-specs +713 -0
- data/_patches-20160112a/local-configs-ignore +61 -0
- data/_patches-20160112a/misc +79 -0
- data/_patches-20160112a/network-unreachable +31 -0
- data/_patches-20160112a/new-boxfile +288 -0
- data/_patches-20160112a/parallelization-maybe +198 -0
- data/_patches-20160112a/read-state +23 -0
- data/_patches-20160112a/refactor-to-use-public_address-cap +25 -0
- data/_patches-20160112a/series +58 -0
- data/_patches-20160112a/status +14 -0
- data/_patches-20160112a/test-move-env-data +231 -0
- data/_patches-20160112a/test-vagrantfile-vm1 +167 -0
- data/_patches-20160112a/the_version_in_0.1.13.pre1 +612 -0
- data/_patches-20160112a/then-copy-the-newer-files +632 -0
- data/_patches-20160112a/vagrant-spec-mock-api +137 -0
- data/_patches-20160112a/vagrant-vmware-plugin +233 -0
- data/_patches-20160112a/vagrantfile +403 -0
- data/_patches-20160112a/vagrantfile-for-acceptance-tests +29 -0
- data/_patches-20160112a/vagrantfile-for-nick +95 -0
- data/_patches-20160112a/vagrantfiles-to-forget-what-they-are-for +134 -0
- data/_patches-20160112a/vm-vanished +42 -0
- data/_patches-20160113/COMPLETED-ABOVE-THIS-LINE +4 -0
- data/_patches-20160113/COMPLETED-BELOW-THIS-LINE +4 -0
- data/_patches-20160113/CR-ABOVE-THIS-LINE +4 -0
- data/_patches-20160113/CR-BELOW-THIS-LINE +4 -0
- data/_patches-20160113/WIP-ABOVE-THIS-LINE +4 -0
- data/_patches-20160113/WIP-BELOW-THIS-LINE +4 -0
- data/_patches-20160113/acceptance-test-runner +29 -0
- data/_patches-20160113/ansible-1 +92 -0
- data/_patches-20160113/cache-api-client-in-up +40 -0
- data/_patches-20160113/dead-code-in-actions +44 -0
- data/_patches-20160113/debug-changes +55 -0
- data/_patches-20160113/demo-rails-app +1276 -0
- data/_patches-20160113/eng-10166-halt-spec +40 -0
- data/_patches-20160113/eng-10256 +543 -0
- data/_patches-20160113/eng-10256-ubuntu-testing +88 -0
- data/_patches-20160113/eng-10269-test-stuff +87 -0
- data/_patches-20160113/eng-10269-wtf +119 -0
- data/_patches-20160113/eng-10369 +143 -0
- data/_patches-20160113/eng-10369-tmp +60 -0
- data/_patches-20160113/eng-10919 +56 -0
- data/_patches-20160113/eng-11177-fix-actions-requires +44 -0
- data/_patches-20160113/eng-11442 +4 -0
- data/_patches-20160113/eng-11616 +403 -0
- data/_patches-20160113/eng-11616-2 +67 -0
- data/_patches-20160113/eng-11616-actual +184 -0
- data/_patches-20160113/eng-11625a +4 -0
- data/_patches-20160113/eng-11711 +85 -0
- data/_patches-20160113/eng-12232-command-spec +236 -0
- data/_patches-20160113/eng-12235 +83 -0
- data/_patches-20160113/eng-12235-override-refactor +140 -0
- data/_patches-20160113/eng-12240 +103 -0
- data/_patches-20160113/eng-12249 +40 -0
- data/_patches-20160113/eng-12301 +50 -0
- data/_patches-20160113/eng-12720 +47 -0
- data/_patches-20160113/eng-12843 +95 -0
- data/_patches-20160113/env-source +112 -0
- data/_patches-20160113/frickin-vagrant-spec +163 -0
- data/_patches-20160113/gem-pre-version +14 -0
- data/_patches-20160113/gems-old +9 -0
- data/_patches-20160113/googles-specs +713 -0
- data/_patches-20160113/local-configs-ignore +61 -0
- data/_patches-20160113/misc +79 -0
- data/_patches-20160113/network-unreachable +31 -0
- data/_patches-20160113/new-boxfile +288 -0
- data/_patches-20160113/parallelization-maybe +198 -0
- data/_patches-20160113/read-state +23 -0
- data/_patches-20160113/refactor-to-use-public_address-cap +25 -0
- data/_patches-20160113/series +56 -0
- data/_patches-20160113/status +14 -0
- data/_patches-20160113/test-move-env-data +231 -0
- data/_patches-20160113/test-vagrantfile-vm1 +167 -0
- data/_patches-20160113/vagrant-spec-mock-api +137 -0
- data/_patches-20160113/vagrant-vmware-plugin +233 -0
- data/_patches-20160113/vagrantfile +403 -0
- data/_patches-20160113/vagrantfile-for-acceptance-tests +29 -0
- data/_patches-20160113/vagrantfile-for-nick +95 -0
- data/_patches-20160113/vagrantfiles-to-forget-what-they-are-for +134 -0
- data/_patches-20160113/vm-vanished +42 -0
- data/_patches-20160118/COMPLETED-ABOVE-THIS-LINE +4 -0
- data/_patches-20160118/COMPLETED-BELOW-THIS-LINE +4 -0
- data/_patches-20160118/CR-ABOVE-THIS-LINE +4 -0
- data/_patches-20160118/CR-BELOW-THIS-LINE +4 -0
- data/_patches-20160118/WIP-ABOVE-THIS-LINE +4 -0
- data/_patches-20160118/WIP-BELOW-THIS-LINE +4 -0
- data/_patches-20160118/acceptance-test-runner +29 -0
- data/_patches-20160118/ansible-1 +92 -0
- data/_patches-20160118/cache-api-client-in-up +40 -0
- data/_patches-20160118/dead-code-in-actions +44 -0
- data/_patches-20160118/debug-changes +55 -0
- data/_patches-20160118/demo-rails-app +1276 -0
- data/_patches-20160118/eng-10166-halt-spec +40 -0
- data/_patches-20160118/eng-10256 +554 -0
- data/_patches-20160118/eng-10256-cr +314 -0
- data/_patches-20160118/eng-10256-ubuntu-testing +88 -0
- data/_patches-20160118/eng-10269-test-stuff +87 -0
- data/_patches-20160118/eng-10269-wtf +119 -0
- data/_patches-20160118/eng-10369 +143 -0
- data/_patches-20160118/eng-10369-tmp +60 -0
- data/_patches-20160118/eng-10919 +56 -0
- data/_patches-20160118/eng-11177-fix-actions-requires +44 -0
- data/_patches-20160118/eng-11442 +4 -0
- data/_patches-20160118/eng-11616 +403 -0
- data/_patches-20160118/eng-11616-2 +67 -0
- data/_patches-20160118/eng-11616-actual +184 -0
- data/_patches-20160118/eng-11625a +4 -0
- data/_patches-20160118/eng-11711 +85 -0
- data/_patches-20160118/eng-12232-command-spec +236 -0
- data/_patches-20160118/eng-12235 +83 -0
- data/_patches-20160118/eng-12235-override-refactor +140 -0
- data/_patches-20160118/eng-12240 +103 -0
- data/_patches-20160118/eng-12249 +40 -0
- data/_patches-20160118/eng-12301 +50 -0
- data/_patches-20160118/eng-12720 +74 -0
- data/_patches-20160118/eng-12843 +95 -0
- data/_patches-20160118/eng-13040 +291 -0
- data/_patches-20160118/env-source +112 -0
- data/_patches-20160118/frickin-vagrant-spec +163 -0
- data/_patches-20160118/gem-pre-version +14 -0
- data/_patches-20160118/gems-old +9 -0
- data/_patches-20160118/googles-specs +713 -0
- data/_patches-20160118/local-configs-ignore +61 -0
- data/_patches-20160118/misc +79 -0
- data/_patches-20160118/network-unreachable +31 -0
- data/_patches-20160118/new-boxfile +288 -0
- data/_patches-20160118/parallelization-maybe +198 -0
- data/_patches-20160118/port-forwarding-processes +87 -0
- data/_patches-20160118/read-state +23 -0
- data/_patches-20160118/refactor-to-use-public_address-cap +25 -0
- data/_patches-20160118/series +59 -0
- data/_patches-20160118/status +13 -0
- data/_patches-20160118/test-move-env-data +231 -0
- data/_patches-20160118/test-vagrantfile-vm1 +167 -0
- data/_patches-20160118/vagrant-spec-mock-api +137 -0
- data/_patches-20160118/vagrant-vmware-plugin +233 -0
- data/_patches-20160118/vagrantfile +403 -0
- data/_patches-20160118/vagrantfile-for-acceptance-tests +29 -0
- data/_patches-20160118/vagrantfile-for-nick +95 -0
- data/_patches-20160118/vagrantfiles-to-forget-what-they-are-for +134 -0
- data/_patches-20160118/vm-vanished +42 -0
- data/_patches-20160118a/COMPLETED-ABOVE-THIS-LINE +4 -0
- data/_patches-20160118a/COMPLETED-BELOW-THIS-LINE +4 -0
- data/_patches-20160118a/CR-ABOVE-THIS-LINE +4 -0
- data/_patches-20160118a/CR-BELOW-THIS-LINE +4 -0
- data/_patches-20160118a/WIP-ABOVE-THIS-LINE +4 -0
- data/_patches-20160118a/WIP-BELOW-THIS-LINE +4 -0
- data/_patches-20160118a/acceptance-test-runner +29 -0
- data/_patches-20160118a/ansible-1 +92 -0
- data/_patches-20160118a/bar +189 -0
- data/_patches-20160118a/cache-api-client-in-up +40 -0
- data/_patches-20160118a/dead-code-in-actions +44 -0
- data/_patches-20160118a/debug-changes +55 -0
- data/_patches-20160118a/demo-rails-app +1276 -0
- data/_patches-20160118a/eng-10166-halt-spec +40 -0
- data/_patches-20160118a/eng-10256 +554 -0
- data/_patches-20160118a/eng-10256-cr +314 -0
- data/_patches-20160118a/eng-10256-ubuntu-testing +88 -0
- data/_patches-20160118a/eng-10269-test-stuff +87 -0
- data/_patches-20160118a/eng-10269-wtf +119 -0
- data/_patches-20160118a/eng-10369 +143 -0
- data/_patches-20160118a/eng-10369-tmp +60 -0
- data/_patches-20160118a/eng-10919 +56 -0
- data/_patches-20160118a/eng-11177-fix-actions-requires +44 -0
- data/_patches-20160118a/eng-11442 +4 -0
- data/_patches-20160118a/eng-11616 +403 -0
- data/_patches-20160118a/eng-11616-2 +67 -0
- data/_patches-20160118a/eng-11616-actual +184 -0
- data/_patches-20160118a/eng-11625a +4 -0
- data/_patches-20160118a/eng-11711 +85 -0
- data/_patches-20160118a/eng-12232-command-spec +236 -0
- data/_patches-20160118a/eng-12235 +83 -0
- data/_patches-20160118a/eng-12235-override-refactor +140 -0
- data/_patches-20160118a/eng-12240 +103 -0
- data/_patches-20160118a/eng-12249 +40 -0
- data/_patches-20160118a/eng-12301 +50 -0
- data/_patches-20160118a/eng-12720 +74 -0
- data/_patches-20160118a/eng-12843 +95 -0
- data/_patches-20160118a/eng-13040 +291 -0
- data/_patches-20160118a/env-source +112 -0
- data/_patches-20160118a/foo +169 -0
- data/_patches-20160118a/frickin-vagrant-spec +163 -0
- data/_patches-20160118a/gem-pre-version +14 -0
- data/_patches-20160118a/gems-old +9 -0
- data/_patches-20160118a/googles-specs +713 -0
- data/_patches-20160118a/guestport-madness +59 -0
- data/_patches-20160118a/local-configs-ignore +61 -0
- data/_patches-20160118a/misc +79 -0
- data/_patches-20160118a/network-unreachable +31 -0
- data/_patches-20160118a/new-boxfile +288 -0
- data/_patches-20160118a/parallelization-maybe +198 -0
- data/_patches-20160118a/port-forwarding-processes +87 -0
- data/_patches-20160118a/read-state +23 -0
- data/_patches-20160118a/refactor-to-use-public_address-cap +25 -0
- data/_patches-20160118a/series +62 -0
- data/_patches-20160118a/status +14 -0
- data/_patches-20160118a/test-move-env-data +231 -0
- data/_patches-20160118a/test-vagrantfile-vm1 +167 -0
- data/_patches-20160118a/vagrant-spec-mock-api +137 -0
- data/_patches-20160118a/vagrant-vmware-plugin +233 -0
- data/_patches-20160118a/vagrantfile +403 -0
- data/_patches-20160118a/vagrantfile-for-acceptance-tests +29 -0
- data/_patches-20160118a/vagrantfile-for-nick +95 -0
- data/_patches-20160118a/vagrantfiles-to-forget-what-they-are-for +134 -0
- data/_patches-20160118a/vm-vanished +42 -0
- data/lib/vagrant-skytap/action/clear_forwarded_ports.rb +19 -0
- data/lib/vagrant-skytap/action/forward_ports.rb +42 -0
- data/lib/vagrant-skytap/action/prepare_forwarded_port_collision_params.rb +37 -0
- data/lib/vagrant-skytap/action.rb +18 -0
- data/lib/vagrant-skytap/api/environment.rb +19 -4
- data/lib/vagrant-skytap/api/vm.rb +10 -6
- data/lib/vagrant-skytap/command/up.rb +7 -1
- data/lib/vagrant-skytap/errors.rb +4 -0
- data/lib/vagrant-skytap/hosts/bsd/cap/ssh_tunnel.rb +15 -0
- data/lib/vagrant-skytap/hosts/common/cap/ssh_tunnel.rb +183 -0
- data/lib/vagrant-skytap/hosts/linux/cap/ssh_tunnel.rb +15 -0
- data/lib/vagrant-skytap/hosts/windows/cap/ssh_tunnel.rb +27 -0
- data/lib/vagrant-skytap/model/forwarded_port.rb +78 -0
- data/lib/vagrant-skytap/plugin.rb +15 -0
- data/lib/vagrant-skytap/util/compile_forwarded_ports.rb +35 -0
- data/lib/vagrant-skytap/version.rb +1 -1
- data/locales/en.yml +3 -0
- data/spec/unit/environment_spec.rb +14 -2
- data/spec/unit/forwarded_port_spec.rb +45 -0
- data/spec/unit/hosts/common/cap/ssh_tunnel_spec.rb +180 -0
- data/spec/unit/prepare_collision_params_spec.rb +57 -0
- data/spec/unit/support/forwarded_ports/machines/vm1/skytap/id +1 -0
- data/spec/unit/support/forwarded_ports/machines/vm1/skytap/private_key +4 -0
- data/spec/unit/support/forwarded_ports/machines/vm1/skytap/tcp9000_tcp_9000_80.pid +1 -0
- data/spec/unit/support/forwarded_ports/machines/vm1/skytap/tcp9001_tcp_9001_81.pid +1 -0
- data/spec/unit/support/forwarded_ports/machines/vm1/virtualbox/id +1 -0
- data/spec/unit/support/forwarded_ports/machines/vm2/skytap/id +1 -0
- data/spec/unit/support/forwarded_ports/machines/vm2/skytap/tcp8080_tcp_8080_80.pid +1 -0
- data/spec/unit/support/forwarded_ports/machines/vm3/virtualbox/id +1 -0
- data/spec/unit/support/forwarded_ports/machines/vm4/skytap/id +1 -0
- data/spec/unit/support/forwarded_ports/machines/vm4/skytap/tcp8888_tcp_8888_80.pid +1 -0
- metadata +330 -2
@@ -0,0 +1,85 @@
|
|
1
|
+
# HG changeset patch
|
2
|
+
# Parent 1ead463a91644fcbe466a90a609e9ca004c03ccb
|
3
|
+
ENG-11711 Clean up redundant REST calls -- this currently does not work -- the env hash probably gets cleared for each vm
|
4
|
+
|
5
|
+
diff -r 1ead463a9164 lib/vagrant-skytap/action.rb
|
6
|
+
--- a/lib/vagrant-skytap/action.rb Fri Nov 06 19:26:22 2015 -0800
|
7
|
+
+++ b/lib/vagrant-skytap/action.rb Fri Nov 06 19:39:47 2015 -0800
|
8
|
+
@@ -115,10 +115,14 @@
|
9
|
+
# key.
|
10
|
+
def self.action_read_ssh_info
|
11
|
+
Vagrant::Action::Builder.new.tap do |b|
|
12
|
+
- b.use ConfigValidate
|
13
|
+
- b.use InitializeAPIClient
|
14
|
+
- b.use FetchEnvironment
|
15
|
+
- b.use ReadSSHInfo
|
16
|
+
+ b.use Call, HasSSHInfo do |env1, b1|
|
17
|
+
+ unless env1[:result]
|
18
|
+
+ b1.use ConfigValidate
|
19
|
+
+ b1.use InitializeAPIClient
|
20
|
+
+ b1.use FetchEnvironment
|
21
|
+
+ b1.use ReadSSHInfo
|
22
|
+
+ end
|
23
|
+
+ end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
@@ -251,6 +255,7 @@
|
28
|
+
autoload :ExistenceCheck, action_root.join("existence_check")
|
29
|
+
autoload :FetchEnvironment, action_root.join("fetch_environment")
|
30
|
+
autoload :InitializeAPIClient, action_root.join("initialize_api_client")
|
31
|
+
+ autoload :HasSSHInfo, action_root.join("has_ssh_info")
|
32
|
+
autoload :IsRunning, action_root.join("is_running")
|
33
|
+
autoload :IsStopped, action_root.join("is_stopped")
|
34
|
+
autoload :IsSuspended, action_root.join("is_suspended")
|
35
|
+
diff -r 1ead463a9164 lib/vagrant-skytap/action/has_ssh_info.rb
|
36
|
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
37
|
+
+++ b/lib/vagrant-skytap/action/has_ssh_info.rb Fri Nov 06 19:39:47 2015 -0800
|
38
|
+
@@ -0,0 +1,19 @@
|
39
|
+
+module VagrantPlugins
|
40
|
+
+ module Skytap
|
41
|
+
+ module Action
|
42
|
+
+ # This can be used with "Call" built-in to check if the ssh info
|
43
|
+
+ # has been read.
|
44
|
+
+ class HasSSHInfo
|
45
|
+
+ def initialize(app, env)
|
46
|
+
+ @app = app
|
47
|
+
+ @logger = Log4r::Logger.new("vagrant_skytap::action::has_ssh_info")
|
48
|
+
+ end
|
49
|
+
+
|
50
|
+
+ def call(env)
|
51
|
+
+ env[:result] = env[:machine_ssh_info].present?
|
52
|
+
+ @app.call(env)
|
53
|
+
+ end
|
54
|
+
+ end
|
55
|
+
+ end
|
56
|
+
+ end
|
57
|
+
+end
|
58
|
+
diff -r 1ead463a9164 lib/vagrant-skytap/action/initialize_api_client.rb
|
59
|
+
--- a/lib/vagrant-skytap/action/initialize_api_client.rb Fri Nov 06 19:26:22 2015 -0800
|
60
|
+
+++ b/lib/vagrant-skytap/action/initialize_api_client.rb Fri Nov 06 19:39:47 2015 -0800
|
61
|
+
@@ -7,17 +7,20 @@
|
62
|
+
# This action initializes the API client, verifies the provided
|
63
|
+
# credentials, and stores the API client object in env[:api_client].
|
64
|
+
class InitializeAPIClient
|
65
|
+
- def initialize(app, env)
|
66
|
+
+ def initialize(app, env, reinitialize=false)
|
67
|
+
@app = app
|
68
|
+
@logger = Log4r::Logger.new("vagrant_skytap::action::initialize_api_client")
|
69
|
+
+ @reinitialize = reinitialize
|
70
|
+
end
|
71
|
+
|
72
|
+
def call(env)
|
73
|
+
@logger.info("Connecting to Skytap...")
|
74
|
+
|
75
|
+
- client = API::Client.new(env[:machine].provider_config)
|
76
|
+
- if client.get('/configurations').code == '200'
|
77
|
+
- env[:api_client] = client
|
78
|
+
+ unless env[:api_client] && !@reinitialize
|
79
|
+
+ client = API::Client.new(env[:machine].provider_config)
|
80
|
+
+ if client.get('/configurations').code == '200'
|
81
|
+
+ env[:api_client] = client
|
82
|
+
+ end
|
83
|
+
end
|
84
|
+
|
85
|
+
@app.call(env)
|
@@ -0,0 +1,236 @@
|
|
1
|
+
# HG changeset patch
|
2
|
+
# Parent 54e776bb035d336526426643b3a371f7d04b7b0d
|
3
|
+
ENG-12232 command publish-set show spec
|
4
|
+
|
5
|
+
diff -r 54e776bb035d spec/unit/base.rb
|
6
|
+
--- a/spec/unit/base.rb Tue Dec 15 15:11:38 2015 -0800
|
7
|
+
+++ b/spec/unit/base.rb Tue Dec 15 15:30:51 2015 -0800
|
8
|
+
@@ -46,7 +46,7 @@
|
9
|
+
ENV["VAGRANT_CWD"] = Dir.mktmpdir("vagrant")
|
10
|
+
|
11
|
+
# Set the dummy provider to the default for tests
|
12
|
+
-ENV["VAGRANT_DEFAULT_PROVIDER"] = "dummy"
|
13
|
+
+ENV["VAGRANT_DEFAULT_PROVIDER"] = "skytap"
|
14
|
+
|
15
|
+
# Unset all host plugins so that we aren't executing subprocess things
|
16
|
+
# to detect a host for every test.
|
17
|
+
diff -r 54e776bb035d spec/unit/commands/publish_url/command/create_spec.rb
|
18
|
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
19
|
+
+++ b/spec/unit/commands/publish_url/command/create_spec.rb Tue Dec 15 15:30:51 2015 -0800
|
20
|
+
@@ -0,0 +1,113 @@
|
21
|
+
+BASE_PATH = File.expand_path('../../../..', __FILE__)
|
22
|
+
+
|
23
|
+
+require File.expand_path("#{BASE_PATH}/base")
|
24
|
+
+require 'vagrant-skytap/api/publish_set'
|
25
|
+
+require 'vagrant-skytap/api/environment'
|
26
|
+
+require 'vagrant-skytap/command/publish_url/create'
|
27
|
+
+require 'vagrant-skytap/command/helpers'
|
28
|
+
+require 'vagrant-skytap/provider'
|
29
|
+
+require 'ap'
|
30
|
+
+
|
31
|
+
+describe VagrantPlugins::Skytap::CommandPublishUrl::Create do
|
32
|
+
+ include_context "unit"
|
33
|
+
+ include_context "command plugin helpers"
|
34
|
+
+
|
35
|
+
+ let(:empty_environment_attrs) { JSON.load(File.read(File.join(BASE_PATH, 'skeletons', 'empty_environment.json')))}
|
36
|
+
+ let(:vm1_attrs) { JSON.load(File.read(File.join(BASE_PATH, 'skeletons', 'vm1.json'))) }
|
37
|
+
+ let(:vm2_attrs) { vm1_attrs.merge("id" => "6981851", "name" => "VM2") }
|
38
|
+
+ let(:empty_publish_set_attrs) { JSON.load(File.read(File.join(BASE_PATH, 'skeletons', 'empty_publish_set.json')))}
|
39
|
+
+
|
40
|
+
+ let(:publish_set_attrs) do
|
41
|
+
+ empty_publish_set_attrs.dup.tap do |ret|
|
42
|
+
+ ret['vms'] = [
|
43
|
+
+ {"vm_ref" => "http://example.com/vms/#{vm1_attrs['id']}"},
|
44
|
+
+ {"vm_ref" => "http://example.com/vms/#{vm2_attrs['id']}"}
|
45
|
+
+ ]
|
46
|
+
+ end
|
47
|
+
+ end
|
48
|
+
+
|
49
|
+
+ let(:attrs) do
|
50
|
+
+ empty_environment_attrs.dup.tap do |ret|
|
51
|
+
+ ret['vms'] = [vm1_attrs, vm2_attrs]
|
52
|
+
+ ret['publish_sets'] = publish_set_attrs
|
53
|
+
+ end
|
54
|
+
+ end
|
55
|
+
+
|
56
|
+
+ let(:argv) { [] }
|
57
|
+
+ let(:iso_env) do
|
58
|
+
+ # We have to create a Vagrantfile so there is a root path
|
59
|
+
+ env = isolated_environment
|
60
|
+
+ #debugger
|
61
|
+
+ #env.vagrantfile("")
|
62
|
+
+
|
63
|
+
+ env.vagrantfile(<<-VF)
|
64
|
+
+ Vagrant.configure("2") do |config|
|
65
|
+
+ config.vm.box = "skytap/empty"
|
66
|
+
+
|
67
|
+
+ config.vm.provider :skytap do |skytap, override|
|
68
|
+
+ skytap.base_url = "https://example.com/"
|
69
|
+
+ skytap.username = "foo"
|
70
|
+
+ skytap.api_token = "bar"
|
71
|
+
+ end
|
72
|
+
+
|
73
|
+
+ config.vm.define "vm1" do |ubuntu|
|
74
|
+
+ ubuntu.vm.provider :skytap do |box|
|
75
|
+
+ box.vm_url = "vms/999"
|
76
|
+
+ end
|
77
|
+
+ end
|
78
|
+
+
|
79
|
+
+ config.vm.define "vm2" do |ubuntu|
|
80
|
+
+ ubuntu.vm.provider :skytap do |box|
|
81
|
+
+ box.vm_url = "vms/999"
|
82
|
+
+ end
|
83
|
+
+ end
|
84
|
+
+ end
|
85
|
+
+ VF
|
86
|
+
+ env.create_vagrant_env
|
87
|
+
+ end
|
88
|
+
+
|
89
|
+
+ subject { described_class.new(argv, iso_env) }
|
90
|
+
+
|
91
|
+
+ before do
|
92
|
+
+ # don't really need, since we're reading an environment
|
93
|
+
+ VagrantPlugins::Skytap::Provider.any_instance.stub(:state).and_return(Vagrant::MachineState.new(:running, "", ""))
|
94
|
+
+
|
95
|
+
+ stub_request(:get, %r{/configurations$}).to_return(status: 200, body: "")
|
96
|
+
+ stub_request(:get, %r{/configurations/\d+}).to_return(status: 200, body: JSON.dump(attrs))
|
97
|
+
+ stub_request(:post, %r{/configurations/\d+/publish_sets}).to_return(status: 200, body: JSON.dump(publish_set_attrs))
|
98
|
+
+
|
99
|
+
+ allow(VagrantPlugins::Skytap::API::Environment).to receive(:properties).and_return({'url' => '/configurations/5570024'})
|
100
|
+
+
|
101
|
+
+ WebMock.after_request do |request_signature, response|
|
102
|
+
+ puts "Request #{request_signature} was made and #{response} was returned"
|
103
|
+
+ end
|
104
|
+
+ end
|
105
|
+
+
|
106
|
+
+
|
107
|
+
+
|
108
|
+
+ context "with --no-password" do
|
109
|
+
+ let(:argv) { ["--no-password", "vm1", "vm2"] }
|
110
|
+
+
|
111
|
+
+ it "posts" do
|
112
|
+
+ #debugger
|
113
|
+
+ #expect { subject.execute }.to output("foo").to_stdout_from_any_process
|
114
|
+
+ nil
|
115
|
+
+ subject.execute
|
116
|
+
+ expect(a_request(:post, "https://foo:bar@example.com/configurations/5570024/publish_sets").
|
117
|
+
+ with do |req|
|
118
|
+
+ debugger
|
119
|
+
+ req.body == JSON.dump(
|
120
|
+
+ name: "Vagrant publish set",
|
121
|
+
+ publish_set_type: "single_url",
|
122
|
+
+ vms: [
|
123
|
+
+ {vm_ref: '/vms/6981850', access: "run_and_use"},
|
124
|
+
+ {vm_ref: '/vms/6981851', access: "run_and_use"},
|
125
|
+
+ ],
|
126
|
+
+ password: ""
|
127
|
+
+ )
|
128
|
+
+ end).
|
129
|
+
+ to have_been_made.once
|
130
|
+
+
|
131
|
+
+ end
|
132
|
+
+ end
|
133
|
+
+end
|
134
|
+
diff -r 54e776bb035d spec/unit/commands/publish_url/command/show_spec.rb
|
135
|
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
136
|
+
+++ b/spec/unit/commands/publish_url/command/show_spec.rb Tue Dec 15 15:30:51 2015 -0800
|
137
|
+
@@ -0,0 +1,88 @@
|
138
|
+
+BASE_PATH = File.expand_path('../../../..', __FILE__)
|
139
|
+
+
|
140
|
+
+require File.expand_path("#{BASE_PATH}/base")
|
141
|
+
+require 'vagrant-skytap/api/publish_set'
|
142
|
+
+require 'vagrant-skytap/api/environment'
|
143
|
+
+require 'vagrant-skytap/command/publish_url/show'
|
144
|
+
+require 'vagrant-skytap/command/helpers'
|
145
|
+
+require 'vagrant-skytap/provider'
|
146
|
+
+require 'ap'
|
147
|
+
+
|
148
|
+
+describe VagrantPlugins::Skytap::CommandPublishUrl::Show do
|
149
|
+
+ include_context "unit"
|
150
|
+
+ include_context "command plugin helpers"
|
151
|
+
+
|
152
|
+
+ let(:empty_environment_attrs) { JSON.load(File.read(File.join(BASE_PATH, 'skeletons', 'empty_environment.json')))}
|
153
|
+
+ let(:vm1_attrs) { JSON.load(File.read(File.join(BASE_PATH, 'skeletons', 'vm1.json'))) }
|
154
|
+
+ let(:empty_publish_set_attrs) { JSON.load(File.read(File.join(BASE_PATH, 'skeletons', 'empty_publish_set.json')))}
|
155
|
+
+
|
156
|
+
+ let(:attrs) do
|
157
|
+
+ vm2_attrs = vm1_attrs.merge("id" => "6981851", "name" => "VM2")
|
158
|
+
+ empty_environment_attrs.dup.tap do |ret|
|
159
|
+
+ ret['vms'] = [vm1_attrs, vm2_attrs]
|
160
|
+
+ ret['publish_sets'] = [empty_publish_set_attrs.dup]
|
161
|
+
+ ret['publish_sets'].first['vms'] = [
|
162
|
+
+ {"vm_ref" => "http://example.com/vms/#{vm1_attrs['id']}"},
|
163
|
+
+ {"vm_ref" => "http://example.com/vms/#{vm2_attrs['id']}"}
|
164
|
+
+ ]
|
165
|
+
+ end
|
166
|
+
+ end
|
167
|
+
+
|
168
|
+
+ let(:argv) { [] }
|
169
|
+
+ let(:iso_env) do
|
170
|
+
+ # We have to create a Vagrantfile so there is a root path
|
171
|
+
+ env = isolated_environment
|
172
|
+
+ #debugger
|
173
|
+
+ #env.vagrantfile("")
|
174
|
+
+
|
175
|
+
+ env.vagrantfile(<<-VF)
|
176
|
+
+ Vagrant.configure("2") do |config|
|
177
|
+
+ config.vm.box = "skytap/empty"
|
178
|
+
+
|
179
|
+
+ config.vm.provider :skytap do |skytap, override|
|
180
|
+
+ skytap.base_url = "https://test.skytap.com/"
|
181
|
+
+ skytap.username = "etrue"
|
182
|
+
+ skytap.api_token = "d41e7b2f98b63844512c0d62d0e5496949d35f57"
|
183
|
+
+ skytap.vpn_url = "https://test.skytap.com/vpns/vpn-286952"
|
184
|
+
+ end
|
185
|
+
+
|
186
|
+
+ config.vm.define "vm1" do |ubuntu|
|
187
|
+
+ ubuntu.vm.provider :skytap do |box|
|
188
|
+
+ box.vm_url = "https://test.skytap.com/vms/6984688"
|
189
|
+
+ end
|
190
|
+
+ ubuntu.ssh.username = "autoadmin"
|
191
|
+
+ ubuntu.ssh.password = "autoadmin"
|
192
|
+
+ end
|
193
|
+
+ end
|
194
|
+
+ VF
|
195
|
+
+ env.create_vagrant_env
|
196
|
+
+ end
|
197
|
+
+
|
198
|
+
+ subject { described_class.new(argv, iso_env) }
|
199
|
+
+
|
200
|
+
+ before do
|
201
|
+
+ # don't really need, since we're reading an environment
|
202
|
+
+ VagrantPlugins::Skytap::Provider.any_instance.stub(:state).and_return(Vagrant::MachineState.new(:running, "", ""))
|
203
|
+
+
|
204
|
+
+ stub_request(:get, %r{/configurations$}).to_return(status: 200, body: "")
|
205
|
+
+ stub_request(:get, %r{/configurations/\d+}).to_return(status: 200, body: JSON.dump(attrs))
|
206
|
+
+ allow(VagrantPlugins::Skytap::API::Environment).to receive(:properties).and_return({'url' => '/configurations/1'})
|
207
|
+
+
|
208
|
+
+ WebMock.after_request do |request_signature, response|
|
209
|
+
+ puts "Request #{request_signature} was made and #{response} was returned"
|
210
|
+
+ end
|
211
|
+
+ end
|
212
|
+
+
|
213
|
+
+
|
214
|
+
+
|
215
|
+
+ context "with no arguments" do
|
216
|
+
+ #let(:argv) { [] }
|
217
|
+
+
|
218
|
+
+ it "shows the output" do
|
219
|
+
+ #debugger
|
220
|
+
+ #expect { subject.execute }.to output("foo").to_stdout_from_any_process
|
221
|
+
+ nil
|
222
|
+
+
|
223
|
+
+ end
|
224
|
+
+ end
|
225
|
+
+end
|
226
|
+
diff -r 54e776bb035d spec/unit/skeletons/empty_environment.json
|
227
|
+
--- a/spec/unit/skeletons/empty_environment.json Tue Dec 15 15:11:38 2015 -0800
|
228
|
+
+++ b/spec/unit/skeletons/empty_environment.json Tue Dec 15 15:30:51 2015 -0800
|
229
|
+
@@ -1,6 +1,6 @@
|
230
|
+
{
|
231
|
+
"id": "5570024",
|
232
|
+
- "url": "https://example.com/templates/5570024",
|
233
|
+
+ "url": "https://example.com/configurations/5570024",
|
234
|
+
"name": "Environment 1",
|
235
|
+
"error": "",
|
236
|
+
"runstate": "running",
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# HG changeset patch
|
2
|
+
# Parent ffe81b8c1fbc30808778011dfb11428c24e94647
|
3
|
+
# Parent 7bf28b483ba4495c173d9316aee2d8482d9705ab
|
4
|
+
ENG-12235 override default "vagrant share" command for Skytap provider.
|
5
|
+
|
6
|
+
diff -r ffe81b8c1fbc lib/vagrant-skytap/command/share.rb
|
7
|
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
8
|
+
+++ b/lib/vagrant-skytap/command/share.rb Tue Dec 15 13:01:38 2015 -0800
|
9
|
+
@@ -0,0 +1,59 @@
|
10
|
+
+# Different behavior than the standard -- this creates a publish set
|
11
|
+
+# and outputs the URL.
|
12
|
+
+require_relative 'overridden_command'
|
13
|
+
+
|
14
|
+
+module VagrantPlugins
|
15
|
+
+ module Skytap
|
16
|
+
+ module Command
|
17
|
+
+ class Share < OverriddenCommand
|
18
|
+
+ def default_command_plugin
|
19
|
+
+ VagrantPlugins::Share::Plugin
|
20
|
+
+ end
|
21
|
+
+
|
22
|
+
+ def skytap_implementation
|
23
|
+
+
|
24
|
+
+ # read args to see if we've got the --fallback flag
|
25
|
+
+ # is this destructive?
|
26
|
+
+ debugger
|
27
|
+
+# options = {}
|
28
|
+
+# options[:destroy_on_error] = true
|
29
|
+
+# options[:parallel] = true
|
30
|
+
+# options[:provision_ignore_sentinel] = false
|
31
|
+
+#
|
32
|
+
+# opts = OptionParser.new do |o|
|
33
|
+
+# o.banner = "Usage: vagrant up [options] [name]"
|
34
|
+
+# o.separator ""
|
35
|
+
+# o.separator "Options:"
|
36
|
+
+# o.separator ""
|
37
|
+
+#
|
38
|
+
+# build_start_options(o, options)
|
39
|
+
+#
|
40
|
+
+# o.on("--[no-]destroy-on-error",
|
41
|
+
+# "Destroy machine if any fatal error happens (default to true)") do |destroy|
|
42
|
+
+# options[:destroy_on_error] = destroy
|
43
|
+
+# end
|
44
|
+
+#
|
45
|
+
+# o.on("--[no-]parallel",
|
46
|
+
+# "Enable or disable parallelism if provider supports it") do |parallel|
|
47
|
+
+# options[:parallel] = parallel
|
48
|
+
+# end
|
49
|
+
+#
|
50
|
+
+# o.on("--provider PROVIDER", String,
|
51
|
+
+# "Back the machine with a specific provider") do |provider|
|
52
|
+
+# options[:provider] = provider
|
53
|
+
+# end
|
54
|
+
+# end
|
55
|
+
+#
|
56
|
+
+# # Parse the options
|
57
|
+
+# argv = parse_options(opts)
|
58
|
+
+# return if !argv
|
59
|
+
+
|
60
|
+
+
|
61
|
+
+
|
62
|
+
+ command_class(VagrantPlugins::Skytap::Plugin, "publish-url").new(@argv, @env).execute
|
63
|
+
+ end
|
64
|
+
+ end
|
65
|
+
+ end
|
66
|
+
+ end
|
67
|
+
+end
|
68
|
+
+
|
69
|
+
diff -r ffe81b8c1fbc lib/vagrant-skytap/plugin.rb
|
70
|
+
--- a/lib/vagrant-skytap/plugin.rb Tue Dec 15 13:01:26 2015 -0800
|
71
|
+
+++ b/lib/vagrant-skytap/plugin.rb Tue Dec 15 13:01:38 2015 -0800
|
72
|
+
@@ -44,6 +44,11 @@
|
73
|
+
Command::PublishUrlRoot
|
74
|
+
end
|
75
|
+
|
76
|
+
+ command("share", primary: true) do
|
77
|
+
+ require_relative "command/share"
|
78
|
+
+ Command::Share
|
79
|
+
+ end
|
80
|
+
+
|
81
|
+
provider_capability(:skytap, :public_address) do
|
82
|
+
require_relative "cap/public_address"
|
83
|
+
Cap::PublicAddress
|
@@ -0,0 +1,140 @@
|
|
1
|
+
# HG changeset patch
|
2
|
+
# Parent 1325e55248225f2602b39dc54aa9a3b820e65174
|
3
|
+
# Parent 1325e55248225f2602b39dc54aa9a3b820e65174
|
4
|
+
ENG-12235 Refactoring: OverriddenCommand class.
|
5
|
+
* * *
|
6
|
+
imported patch eng-12235-noodling
|
7
|
+
|
8
|
+
diff -r 1325e5524822 lib/vagrant-skytap/command/overridden_command.rb
|
9
|
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
10
|
+
+++ b/lib/vagrant-skytap/command/overridden_command.rb Wed Dec 16 12:26:58 2015 -0800
|
11
|
+
@@ -0,0 +1,91 @@
|
12
|
+
+# Parent class for commands that need to dispatch to existing
|
13
|
+
+# implementations. Registering a command with the same name
|
14
|
+
+# as an existing command overwrites it, which can inadvertently
|
15
|
+
+# break things for other providers.
|
16
|
+
+
|
17
|
+
+require 'vagrant'
|
18
|
+
+
|
19
|
+
+module VagrantPlugins
|
20
|
+
+ module Skytap
|
21
|
+
+ module Command
|
22
|
+
+ class OverriddenCommand < Vagrant.plugin("2", :command)
|
23
|
+
+
|
24
|
+
+ class MixedProvidersError ; end
|
25
|
+
+
|
26
|
+
+ def command_name
|
27
|
+
+ self.class.to_s.split("::").last.downcase
|
28
|
+
+ end
|
29
|
+
+
|
30
|
+
+ # Look for command inside specified plugin, rather than the
|
31
|
+
+ # command registry
|
32
|
+
+ def command_class(plugin, name)
|
33
|
+
+ if command = plugin.components.commands[name.to_sym].try(:first)
|
34
|
+
+ command.call
|
35
|
+
+ else
|
36
|
+
+ raise "Command '#{name}' not found in plugin"
|
37
|
+
+ end
|
38
|
+
+ end
|
39
|
+
+
|
40
|
+
+ def default_command_plugin
|
41
|
+
+ raise NotImplementedError
|
42
|
+
+ end
|
43
|
+
+
|
44
|
+
+ def provider_to_use
|
45
|
+
+ options = {}
|
46
|
+
+ opts = OptionParser.new do |o|
|
47
|
+
+ build_start_options(o, options)
|
48
|
+
+ o.on("--provider PROVIDER", String) do |provider|
|
49
|
+
+ options[:provider] = provider
|
50
|
+
+ end
|
51
|
+
+ end
|
52
|
+
+
|
53
|
+
+ if parse_options(opts) && options[:provider]
|
54
|
+
+ # Provider on command line
|
55
|
+
+ options[:provider].to_sym
|
56
|
+
+ elsif @env.active_machines.empty?
|
57
|
+
+ # No machines yet, and no provider specified
|
58
|
+
+ @env.default_provider
|
59
|
+
+ else
|
60
|
+
+ # Inspect machines which have already been created.
|
61
|
+
+ providers = @env.active_machines.collect(&:last).uniq
|
62
|
+
+ if providers.count > 1
|
63
|
+
+ # If the Vagrant project is heterogeneous (not all machines have
|
64
|
+
+ # the same provider), give up.
|
65
|
+
+ @logger.debug("This environment has active machines for multiple providers! Active machines: #{@env.active_machines}")
|
66
|
+
+ raise MixedProvidersError
|
67
|
+
+ else
|
68
|
+
+ providers.first
|
69
|
+
+ end
|
70
|
+
+ end
|
71
|
+
+ end
|
72
|
+
+
|
73
|
+
+ def execute
|
74
|
+
+ begin
|
75
|
+
+ provider = provider_to_use
|
76
|
+
+ rescue MixedProvidersError
|
77
|
+
+ # Fall back to the default implementation, which might still be
|
78
|
+
+ # able to perform the requested operation, and if not, it will use
|
79
|
+
+ # the default error handling.
|
80
|
+
+ end
|
81
|
+
+
|
82
|
+
+ if provider == :skytap
|
83
|
+
+ @logger.info("Calling Skytap overridden implementation of '#{command_name}' command.")
|
84
|
+
+ skytap_implementation
|
85
|
+
+ else
|
86
|
+
+ @logger.info("Calling default implementation of '#{command_name}' command.")
|
87
|
+
+ default_implementation
|
88
|
+
+ end
|
89
|
+
+ end
|
90
|
+
+
|
91
|
+
+ def default_implementation
|
92
|
+
+ command_class(default_command_plugin, command_name).new(@argv, @env).execute
|
93
|
+
+ end
|
94
|
+
+
|
95
|
+
+ def skytap_implementation
|
96
|
+
+ raise NotImplementedError
|
97
|
+
+ end
|
98
|
+
+ end
|
99
|
+
+ end
|
100
|
+
+ end
|
101
|
+
+end
|
102
|
+
+
|
103
|
+
diff -r 1325e5524822 lib/vagrant-skytap/command/up.rb
|
104
|
+
--- a/lib/vagrant-skytap/command/up.rb Wed Dec 16 12:25:57 2015 -0800
|
105
|
+
+++ b/lib/vagrant-skytap/command/up.rb Wed Dec 16 12:26:58 2015 -0800
|
106
|
+
@@ -1,25 +1,19 @@
|
107
|
+
-# We've subclassed the builtin "up" command to alter how
|
108
|
+
-# parallelization is implemented. Instead of making concurrent requests to run
|
109
|
+
-# individual VMs, we make a single REST call to update the runstates of
|
110
|
+
-# multiple VMs within the containing Skytap environment.
|
111
|
+
+# Modified "up" implementation which runs VMs in parallel using the Skytap REST API.
|
112
|
+
|
113
|
+
-require Vagrant.source_root.join("plugins/commands/up/command")
|
114
|
+
+require_relative 'overridden_command'
|
115
|
+
+require Vagrant.source_root.join("plugins/commands/up/start_mixins")
|
116
|
+
|
117
|
+
module VagrantPlugins
|
118
|
+
module Skytap
|
119
|
+
module Command
|
120
|
+
- class Up < VagrantPlugins::CommandUp::Command
|
121
|
+
+ class Up < OverriddenCommand
|
122
|
+
+ include VagrantPlugins::CommandUp::StartMixins
|
123
|
+
|
124
|
+
- def execute
|
125
|
+
- # This implementation of the "up" command overrides
|
126
|
+
- # the default implementation due to load order.
|
127
|
+
- if @env.default_provider == :skytap
|
128
|
+
- @logger.debug("Executing Skytap 'Up' implementation.")
|
129
|
+
- else
|
130
|
+
- @logger.debug("Calling default 'Up' implementation.")
|
131
|
+
- return super
|
132
|
+
- end
|
133
|
+
+ def default_command_plugin
|
134
|
+
+ VagrantPlugins::CommandUp::Plugin
|
135
|
+
+ end
|
136
|
+
|
137
|
+
+ def skytap_implementation
|
138
|
+
options = {}
|
139
|
+
options[:destroy_on_error] = true
|
140
|
+
options[:parallel] = true
|
@@ -0,0 +1,103 @@
|
|
1
|
+
# HG changeset patch
|
2
|
+
# Parent 8722732470b5a0c961d7e764f64cd20410c240db
|
3
|
+
ENG-12240 no tty present
|
4
|
+
|
5
|
+
diff -r 8722732470b5 Vagrantfile
|
6
|
+
--- a/Vagrantfile Thu Dec 03 15:09:16 2015 -0800
|
7
|
+
+++ b/Vagrantfile Thu Dec 03 18:21:47 2015 -0800
|
8
|
+
@@ -1,87 +1,17 @@
|
9
|
+
Vagrant.configure(2) do |config|
|
10
|
+
config.vm.box = "skytap/empty"
|
11
|
+
- config.vm.synced_folder ".", "/vagrant", disabled: true
|
12
|
+
+ #rsync
|
13
|
+
|
14
|
+
config.vm.provider :skytap do |skytap, override|
|
15
|
+
- skytap.username = "etrue"
|
16
|
+
- skytap.api_token = "fcb2620b72efddbc8239e25db9d812f510c7e166"
|
17
|
+
- #skytap.base_url = "https://cloud.skytap.com/"
|
18
|
+
- skytap.vpn_url = "cloud.skytap.com/vpns/vpn-711360"
|
19
|
+
- #skytap.username = "vagrant_provider_admin"
|
20
|
+
- #skytap.api_token = "7c5718531a32eb90e92c804ce1f73da98be22cdf"
|
21
|
+
- #skytap.base_url = "https://test.skytap.com/"
|
22
|
+
- #skytap.username = "jsmith"
|
23
|
+
- #skytap.api_token = "754be5220955f35840498340606b4dfa89f7eb61"
|
24
|
+
- #skytap.base_url = "https://cloud.skytap.dev/"
|
25
|
+
+ #skytap.username = "<username>"
|
26
|
+
+ #skytap.api_token = "<api_token>"
|
27
|
+
end
|
28
|
+
|
29
|
+
- GENERIC_UBUNTU = 'https://cloud.skytap.com/vms/6869434'
|
30
|
+
- # for test user
|
31
|
+
- #GENERIC_UBUNTU = 'https://cloud.skytap.com/vms/4840008'
|
32
|
+
- # local user
|
33
|
+
- #GENERIC_UBUNTU = 'https://cloud.skytap.dev/vms/374'
|
34
|
+
-
|
35
|
+
- UBUNTU1 = "https://cloud.skytap.com/vms/7285844"
|
36
|
+
- UBUNTU2 = "https://cloud.skytap.com/vms/7285846"
|
37
|
+
- UBUNTU_WITH_VAGRANT = "https://cloud.skytap.com/vms/7397734"
|
38
|
+
- FROM_US_EAST = "https://cloud.skytap.com/vms/6232386"
|
39
|
+
- FROM_EMEA = "https://cloud.skytap.com/vms/4153172"
|
40
|
+
- ENG11490 = "https://cloud.skytap.com/templates/696065"
|
41
|
+
- NO_DISK = "https://cloud.skytap.com/vms/7500356"
|
42
|
+
-
|
43
|
+
- # may be gone by the time you see this
|
44
|
+
- ENVIRONMENT_VM = "https://cloud.skytap.com/vms/7457184"
|
45
|
+
- UBUNTU_STOPPED_ENVIRONMENT_SOURCE_VM_A = "https://cloud.skytap.com/vms/7457184"
|
46
|
+
- UBUNTU_STOPPED_ENVIRONMENT_SOURCE_VM_B = "https://cloud.skytap.com/vms/7468766"
|
47
|
+
-
|
48
|
+
- # separate template
|
49
|
+
- # another ubuntu = 'https://cloud.skytap.com/vms/7242466'
|
50
|
+
- WINDOWS_WINRM_CONFIGURED = 'https://cloud.skytap.com/vms/7242468'
|
51
|
+
-
|
52
|
+
- config.vm.define "vm1" do |ubuntu|
|
53
|
+
- ubuntu.vm.hostname = "vm1"
|
54
|
+
- ubuntu.vm.provider :skytap do |box|
|
55
|
+
- box.vm_url = UBUNTU1#GENERIC_UBUNTU
|
56
|
+
- #box.cpus = 1
|
57
|
+
- #box.cpuspersocket = 1
|
58
|
+
- #box.ram = 1024
|
59
|
+
- #box.guestos = "ubuntu"
|
60
|
+
- #box.vpn_url = "cloud.skytap.com/vpns/vpn-711360"
|
61
|
+
+ config.vm.define "web" do |server|
|
62
|
+
+ server.vm.provider :skytap do |box|
|
63
|
+
+ box.vm_url = "https://cloud.skytap.com/vms/7285844"
|
64
|
+
+ #box.cpus = 2
|
65
|
+
end
|
66
|
+
- ubuntu.vm.synced_folder "vm1", "/synced", type: :nfs
|
67
|
+
- #ubuntu.vm.synced_folder "vm1", "/home/skytap/app", type: :nfs, :mount_options => ['actimeo=1']
|
68
|
+
- ubuntu.vm.communicator = :ssh
|
69
|
+
- ubuntu.ssh.username = "skytap"
|
70
|
+
- ubuntu.ssh.password = "ChangeMe!"
|
71
|
+
-
|
72
|
+
- ubuntu.vm.provision "shell", path: "provisioning/trivial.sh"
|
73
|
+
- #ubuntu.vm.provision "shell", path: "provisioning/apache.sh"
|
74
|
+
- #ubuntu.vm.provision "rails", type: "shell", path: "provisioning/rails.sh"
|
75
|
+
- end
|
76
|
+
-
|
77
|
+
- config.vm.define "vm2" do |windows|
|
78
|
+
- windows.vm.provider :skytap do |box, override|
|
79
|
+
- box.vm_url = WINDOWS_WINRM_CONFIGURED
|
80
|
+
- override.vm.guest = "windows"
|
81
|
+
- end
|
82
|
+
- windows.vm.communicator = :winrm
|
83
|
+
- end
|
84
|
+
- config.winrm.username = 'Administrator'
|
85
|
+
- config.winrm.password = 'admin'
|
86
|
+
-
|
87
|
+
- config.vm.define "vm3" do |ubuntu|
|
88
|
+
- ubuntu.vm.hostname = "vm3"
|
89
|
+
- ubuntu.vm.provider :skytap do |box|
|
90
|
+
- box.vm_url = UBUNTU2#GENERIC_UBUNTU
|
91
|
+
- #box.vpn_url = "cloud.skytap.com/vpns/vpn-711360"
|
92
|
+
- end
|
93
|
+
- ubuntu.vm.communicator = :ssh
|
94
|
+
- ubuntu.ssh.username = "skytap"
|
95
|
+
- ubuntu.ssh.password = "CarpYe$$$"
|
96
|
+
- ubuntu.vm.synced_folder "vm3", "/synced", type: :nfs
|
97
|
+
- ubuntu.vm.provision "shell", path: "provisioning/trivial.sh"
|
98
|
+
- #ubuntu.vm.provision "shell", path: "provisioning/mysql.sh"
|
99
|
+
+ server.vm.synced_folder "vm1", "/synced", type: :nfs
|
100
|
+
end
|
101
|
+
end
|
102
|
+
-
|
103
|
+
-
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# HG changeset patch
|
2
|
+
# Parent 7474cf487118146a0f4fa1a2a796efffd9d0e603
|
3
|
+
ENG-12249 insecure public key, etc. for base box
|
4
|
+
|
5
|
+
diff -r 7474cf487118 vm1/vagrant
|
6
|
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
7
|
+
+++ b/vm1/vagrant Mon Dec 14 12:57:19 2015 -0800
|
8
|
+
@@ -0,0 +1,27 @@
|
9
|
+
+-----BEGIN RSA PRIVATE KEY-----
|
10
|
+
+MIIEogIBAAKCAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzI
|
11
|
+
+w+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoP
|
12
|
+
+kcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2
|
13
|
+
+hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NO
|
14
|
+
+Td0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcW
|
15
|
+
+yLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQIBIwKCAQEA4iqWPJXtzZA68mKd
|
16
|
+
+ELs4jJsdyky+ewdZeNds5tjcnHU5zUYE25K+ffJED9qUWICcLZDc81TGWjHyAqD1
|
17
|
+
+Bw7XpgUwFgeUJwUlzQurAv+/ySnxiwuaGJfhFM1CaQHzfXphgVml+fZUvnJUTvzf
|
18
|
+
+TK2Lg6EdbUE9TarUlBf/xPfuEhMSlIE5keb/Zz3/LUlRg8yDqz5w+QWVJ4utnKnK
|
19
|
+
+iqwZN0mwpwU7YSyJhlT4YV1F3n4YjLswM5wJs2oqm0jssQu/BT0tyEXNDYBLEF4A
|
20
|
+
+sClaWuSJ2kjq7KhrrYXzagqhnSei9ODYFShJu8UWVec3Ihb5ZXlzO6vdNQ1J9Xsf
|
21
|
+
+4m+2ywKBgQD6qFxx/Rv9CNN96l/4rb14HKirC2o/orApiHmHDsURs5rUKDx0f9iP
|
22
|
+
+cXN7S1uePXuJRK/5hsubaOCx3Owd2u9gD6Oq0CsMkE4CUSiJcYrMANtx54cGH7Rk
|
23
|
+
+EjFZxK8xAv1ldELEyxrFqkbE4BKd8QOt414qjvTGyAK+OLD3M2QdCQKBgQDtx8pN
|
24
|
+
+CAxR7yhHbIWT1AH66+XWN8bXq7l3RO/ukeaci98JfkbkxURZhtxV/HHuvUhnPLdX
|
25
|
+
+3TwygPBYZFNo4pzVEhzWoTtnEtrFueKxyc3+LjZpuo+mBlQ6ORtfgkr9gBVphXZG
|
26
|
+
+YEzkCD3lVdl8L4cw9BVpKrJCs1c5taGjDgdInQKBgHm/fVvv96bJxc9x1tffXAcj
|
27
|
+
+3OVdUN0UgXNCSaf/3A/phbeBQe9xS+3mpc4r6qvx+iy69mNBeNZ0xOitIjpjBo2+
|
28
|
+
+dBEjSBwLk5q5tJqHmy/jKMJL4n9ROlx93XS+njxgibTvU6Fp9w+NOFD/HvxB3Tcz
|
29
|
+
+6+jJF85D5BNAG3DBMKBjAoGBAOAxZvgsKN+JuENXsST7F89Tck2iTcQIT8g5rwWC
|
30
|
+
+P9Vt74yboe2kDT531w8+egz7nAmRBKNM751U/95P9t88EDacDI/Z2OwnuFQHCPDF
|
31
|
+
+llYOUI+SpLJ6/vURRbHSnnn8a/XG+nzedGH5JGqEJNQsz+xT2axM0/W/CRknmGaJ
|
32
|
+
+kda/AoGANWrLCz708y7VYgAtW2Uf1DPOIYMdvo6fxIB5i9ZfISgcJ/bbCUkFrhoH
|
33
|
+
++vq/5CIWxCPp0f85R4qxxQ5ihxJ0YDQT9Jpx4TMss4PSavPaBH3RXow5Ohe+bYoQ
|
34
|
+
+NE5OgEXk2wVfZczCZpigBKbKZHNYcelXtTt/nP3rsCuGcM4h53s=
|
35
|
+
+-----END RSA PRIVATE KEY-----
|
36
|
+
diff -r 7474cf487118 vm1/vagrant.pub
|
37
|
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
|
38
|
+
+++ b/vm1/vagrant.pub Mon Dec 14 12:57:19 2015 -0800
|
39
|
+
@@ -0,0 +1,1 @@
|
40
|
+
+ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key
|