vgrnt 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/lib/vgrnt/base.rb +14 -7
- data/lib/vgrnt/util/vagrantfile.rb +33 -26
- data/lib/vgrnt/version.rb +1 -1
- data/spec/acceptance/util_spec.rb +1 -1
- data/spec/unit/fixtures/util_vagrantfile/Vagrantfile-misc1 +45 -0
- data/spec/unit/fixtures/util_vagrantfile/Vagrantfile-multi +13 -0
- data/spec/unit/fixtures/util_vagrantfile/Vagrantfile-plugins +9 -0
- data/spec/unit/fixtures/util_vagrantfile/Vagrantfile-simple +7 -0
- data/spec/unit/util_spec.rb +48 -7
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ec9d0aba10f8e4965ff0be10e8734933faa88c0
|
4
|
+
data.tar.gz: a3434a03c3abe317c00a78cda479be664aa9e3cd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e73e399f049fbf2c68312e1b7ea5c55e9d22ae6dd21cc7f5cea59aba198d943493019014fe642ff4bfce9e9e6d14bff30d81bc9d6d8c70d90a24ee367ba88db
|
7
|
+
data.tar.gz: 6527718cba50263df9bafcf60aa40fed17f74eae4ea2c6d428b7383b2ceb4906503cb2f3e4eb045439de3623c03281676da206ed8a039ad3868a9d759044eaaf
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
## [0.0.4](https://github.com/dergachev/vagrant/compare/v0.0.3...v0.0.4) (Dec 3, 2013)
|
2
|
+
|
3
|
+
BUGFIX:
|
4
|
+
|
5
|
+
- Fix `vgrnt ssh` hanging due to improper shellout technique.
|
6
|
+
|
7
|
+
FEATURES:
|
8
|
+
|
9
|
+
- Added support for `vgrnt status`
|
10
|
+
|
11
|
+
IMPROVEMENTS:
|
12
|
+
|
13
|
+
- Refactored codebase a bit
|
14
|
+
- Implemented acceptance tests (unit tests still non-existant)
|
15
|
+
|
1
16
|
## [0.0.3](https://github.com/dergachev/vagrant/compare/v0.0.2...v0.0.3) (Nov 12, 2013)
|
2
17
|
|
3
18
|
FEATURES:
|
data/lib/vgrnt/base.rb
CHANGED
@@ -24,7 +24,7 @@ module Vgrnt
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
# Undoes the automatic removal of -- in Thor::Options.peek. Otherwise "vgrnt ssh precise -- ls /"
|
27
|
+
# Undoes the automatic removal of -- in Thor::Options.peek. Otherwise "vgrnt ssh precise -- ls /"
|
28
28
|
# is parsed as "precise ls /". TODO: is there a less hacky way to handle this?
|
29
29
|
class ::Thor::Options
|
30
30
|
def peek
|
@@ -60,10 +60,10 @@ module Vgrnt
|
|
60
60
|
if machine && machine[:state] == 'running'
|
61
61
|
# found by running "VAGRANT_LOG=debug vagrant ssh"
|
62
62
|
default_ssh_args = [
|
63
|
-
"vagrant@#{ssh_info[:ssh_ip]}",
|
64
|
-
"-p", ssh_info[:ssh_port],
|
65
|
-
"-o", "DSAAuthentication=yes", "-o", "LogLevel=FATAL", "-o", "StrictHostKeyChecking=no",
|
66
|
-
"-o", "UserKnownHostsFile=/dev/null", "-o", "IdentitiesOnly=yes",
|
63
|
+
"vagrant@#{ssh_info[:ssh_ip]}",
|
64
|
+
"-p", ssh_info[:ssh_port],
|
65
|
+
"-o", "DSAAuthentication=yes", "-o", "LogLevel=FATAL", "-o", "StrictHostKeyChecking=no",
|
66
|
+
"-o", "UserKnownHostsFile=/dev/null", "-o", "IdentitiesOnly=yes",
|
67
67
|
"-i", "~/.vagrant.d/insecure_private_key"
|
68
68
|
]
|
69
69
|
|
@@ -74,7 +74,14 @@ module Vgrnt
|
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
|
77
|
+
# Using IO.popen is important:
|
78
|
+
# - POpen3 ignores STDIN. Backticks buffer stdout. Kernel::exec breaks rspec.
|
79
|
+
# - getc instead of gets fixes the 1 line lag.
|
80
|
+
IO.popen(ssh_command) do |io|
|
81
|
+
while c = io.getc do
|
82
|
+
putc c
|
83
|
+
end
|
84
|
+
end
|
78
85
|
end
|
79
86
|
|
80
87
|
desc "ssh-config [vm-name]", "Store output of 'vagrant ssh-config' to .vgrnt-sshconfig"
|
@@ -151,7 +158,7 @@ module Vgrnt
|
|
151
158
|
# TODO: handle substitution for commands like `usbfilter add 0 --target <uuid|name>`
|
152
159
|
|
153
160
|
@logger.debug "Non-standard vboxmanage command detected (#{vboxmanage_subcommand}). Substituting 'VM_ID' for VM id."
|
154
|
-
|
161
|
+
|
155
162
|
# [VM_ID] is an optional literal token which will be replaced by the UUID of the VM referenced by Vagrant
|
156
163
|
args.map! { |a| a == 'VM_UUID' ? machine[:id] : a }
|
157
164
|
command = (["VBoxManage", vboxmanage_subcommand] + args).join(" ")
|
@@ -1,37 +1,44 @@
|
|
1
|
-
# TODO: test me
|
2
|
-
|
3
|
-
$vagrant_config_vms = []
|
4
|
-
|
5
|
-
module Vagrant
|
6
|
-
def self.configure(*args, &block)
|
7
|
-
yield Vgrnt::Util::Vagrantfile::Proxy.new
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
1
|
module Vgrnt
|
12
2
|
module Util
|
13
3
|
module Vagrantfile
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
4
|
+
|
5
|
+
def self.defined_vms(path = nil)
|
6
|
+
Vagrant._eval_vagrantfile(path)
|
7
|
+
end
|
8
|
+
|
9
|
+
module Vagrant
|
10
|
+
def self._remove_named_arguments(source)
|
11
|
+
source = source.gsub(/([\s\(,])[a-zA-Z0-9_]+: ?/, '\1')
|
12
|
+
return source
|
18
13
|
end
|
19
14
|
|
20
|
-
|
21
|
-
|
15
|
+
# eval Vagrantfile inside of Vgrnt::Util::Vagrantfile namespace
|
16
|
+
def self._eval_vagrantfile(path = nil)
|
17
|
+
# NOT THREAD SAFE (not sure how to do this given static methods)
|
18
|
+
@@vagrant_config_vms = []
|
19
|
+
|
20
|
+
vgrntfile_source = File.read(path || './Vagrantfile')
|
21
|
+
if RUBY_VERSION.to_f <= 1.8
|
22
|
+
vgrntfile_source = Vagrant::_remove_named_arguments(vgrntfile_source)
|
23
|
+
end
|
24
|
+
module_eval(vgrntfile_source)
|
25
|
+
|
26
|
+
@@vagrant_config_vms << :default if @@vagrant_config_vms.empty?
|
27
|
+
return @@vagrant_config_vms
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.configure(*args, &block)
|
31
|
+
yield self
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.define(*args)
|
35
|
+
@@vagrant_config_vms << args.first
|
22
36
|
end
|
23
|
-
end
|
24
37
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
$vagrant_config_vms = []
|
29
|
-
load('./Vagrantfile')
|
30
|
-
# puts $vagrant_config_vms.inspect
|
31
|
-
if $vagrant_config_vms.empty?
|
32
|
-
$vagrant_config_vms << :default
|
38
|
+
# stub out anything else
|
39
|
+
def self.method_missing(*args)
|
40
|
+
return self
|
33
41
|
end
|
34
|
-
return $vagrant_config_vms
|
35
42
|
end
|
36
43
|
end
|
37
44
|
end
|
data/lib/vgrnt/version.rb
CHANGED
@@ -34,7 +34,7 @@ describe Vgrnt::Util::VirtualBox do
|
|
34
34
|
expect(Vgrnt::Util::VirtualBox::showvminfo('vgrnt-test')).to include 'UUID'
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
describe "::runningMachines" do
|
39
39
|
it 'ensure .vgrnt directory exists' do
|
40
40
|
expect(in_vagrant_env { File.exists? '.vagrant' }).to be_true
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
# from https://github.com/tknerr/vagrant-managed-servers/blob/fa60145d9fca221092e81346e95624d49080e304/Vagrantfile
|
5
|
+
|
6
|
+
# require plugin for testing via bundler
|
7
|
+
Vagrant.require_plugin "vagrant-managed-servers"
|
8
|
+
Vagrant.require_plugin "vagrant-omnibus"
|
9
|
+
|
10
|
+
Vagrant.configure("2") do |config|
|
11
|
+
|
12
|
+
config.omnibus.chef_version = "11.4.4"
|
13
|
+
|
14
|
+
#
|
15
|
+
# fake a managed server by bringing up a virtualbox vm
|
16
|
+
#
|
17
|
+
config.vm.define :fake_managed_server do |fms_config|
|
18
|
+
fms_config.vm.box = "opscode_ubuntu-13.04_provisionerless"
|
19
|
+
fms_config.vm.box_url = "https://opscode-vm.s3.amazonaws.com/vagrant/opscode_ubuntu-13.04_provisionerless.box"
|
20
|
+
|
21
|
+
fms_config.vm.network :private_network, ip: "33.33.77.35"
|
22
|
+
end
|
23
|
+
|
24
|
+
#
|
25
|
+
# configure managed provider to connect to `fake_managed_server`
|
26
|
+
#
|
27
|
+
config.vm.define :my_server do |ms_config|
|
28
|
+
|
29
|
+
ms_config.vm.box = "dummy"
|
30
|
+
ms_config.vm.box_url = "https://github.com/tknerr/vagrant-managed-servers/raw/master/dummy.box"
|
31
|
+
|
32
|
+
ms_config.vm.provider :managed do |managed_config, override|
|
33
|
+
managed_config.server = "33.33.77.35"
|
34
|
+
override.ssh.username = "vagrant"
|
35
|
+
override.ssh.private_key_path = "#{ENV['HOME']}/.vagrant.d/insecure_private_key"
|
36
|
+
end
|
37
|
+
|
38
|
+
ms_config.vm.provision :chef_solo do |chef|
|
39
|
+
chef.cookbooks_path = [ './cookbooks' ]
|
40
|
+
chef.add_recipe "apt"
|
41
|
+
chef.add_recipe "apache2"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# -*- mode: ruby -*-
|
2
|
+
# vi: set ft=ruby :
|
3
|
+
|
4
|
+
Vagrant.configure('2') do |config|
|
5
|
+
config.vm.box = "precise64"
|
6
|
+
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
|
7
|
+
|
8
|
+
config.vm.define :vm1 do |config|
|
9
|
+
end
|
10
|
+
|
11
|
+
config.vm.define :vm2 do |config|
|
12
|
+
end
|
13
|
+
end
|
data/spec/unit/util_spec.rb
CHANGED
@@ -1,13 +1,54 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
# RSpec.configure do |c|
|
4
|
-
# c.include Helpers
|
5
|
-
# end
|
1
|
+
require "spec_helper"
|
6
2
|
|
7
3
|
describe Vgrnt::Util::VirtualBox do
|
8
4
|
describe "::showvminfo_command" do
|
9
|
-
it
|
10
|
-
expect(Vgrnt::Util::VirtualBox::showvminfo_command(
|
5
|
+
it "should generate VBoxManage command" do
|
6
|
+
expect(Vgrnt::Util::VirtualBox::showvminfo_command("test")).to eq "VBoxManage showvminfo test --machinereadable"
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Vgrnt::Util::Vagrantfile do
|
12
|
+
|
13
|
+
subject { described_class.defined_vms("spec/unit/fixtures/util_vagrantfile/" + vagrantfile) }
|
14
|
+
|
15
|
+
describe "::defined_vms" do
|
16
|
+
context "parsing Vagrantfile-simple" do
|
17
|
+
let(:vagrantfile) { "Vagrantfile-simple" }
|
18
|
+
it { should eq [:default] }
|
19
|
+
end
|
20
|
+
|
21
|
+
context "parsing Vagrantfile-multi" do
|
22
|
+
let(:vagrantfile) { "Vagrantfile-multi" }
|
23
|
+
it { should eq [:vm1, :vm2] }
|
24
|
+
end
|
25
|
+
|
26
|
+
context "parsing Vagrantfile-plugins" do
|
27
|
+
let(:vagrantfile) { "Vagrantfile-plugins" }
|
28
|
+
it { should eq [:default] }
|
29
|
+
end
|
30
|
+
|
31
|
+
context "parsing Vagrantfile-misc1" do
|
32
|
+
let(:vagrantfile) { "Vagrantfile-misc1" }
|
33
|
+
it { should eq [:fake_managed_server, :my_server] }
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "Vagrant::_remove_named_arguments" do
|
38
|
+
def process(input)
|
39
|
+
Vgrnt::Util::Vagrantfile::Vagrant._remove_named_arguments(input)
|
40
|
+
end
|
41
|
+
it "works with simple named arguments" do
|
42
|
+
expect(process 'meth 1, scope: "meh", arg2: "meh"').to eq 'meth 1, "meh", "meh"'
|
43
|
+
end
|
44
|
+
it "works with space-free named arguments" do
|
45
|
+
expect(process 'meth 1, scope:"meh", arg2:"meh"').to eq 'meth 1, "meh", "meh"'
|
46
|
+
end
|
47
|
+
it "leaves symbols alone" do
|
48
|
+
expect(process 'meth :bob, 1, sum(:three)').to eq 'meth :bob, 1, sum(:three)'
|
11
49
|
end
|
12
50
|
end
|
13
51
|
end
|
52
|
+
|
53
|
+
# describe Vgrnt::Util::Vagrantfile do
|
54
|
+
# end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vgrnt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alex Dergachev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-12-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -95,6 +95,10 @@ files:
|
|
95
95
|
- spec/acceptance/support/acceptance_helper.rb
|
96
96
|
- spec/acceptance/util_spec.rb
|
97
97
|
- spec/spec_helper.rb
|
98
|
+
- spec/unit/fixtures/util_vagrantfile/Vagrantfile-misc1
|
99
|
+
- spec/unit/fixtures/util_vagrantfile/Vagrantfile-multi
|
100
|
+
- spec/unit/fixtures/util_vagrantfile/Vagrantfile-plugins
|
101
|
+
- spec/unit/fixtures/util_vagrantfile/Vagrantfile-simple
|
98
102
|
- spec/unit/util_spec.rb
|
99
103
|
- vgrnt.gemspec
|
100
104
|
homepage: https://github.com/dergachev/vgrnt
|
@@ -129,4 +133,8 @@ test_files:
|
|
129
133
|
- spec/acceptance/support/acceptance_helper.rb
|
130
134
|
- spec/acceptance/util_spec.rb
|
131
135
|
- spec/spec_helper.rb
|
136
|
+
- spec/unit/fixtures/util_vagrantfile/Vagrantfile-misc1
|
137
|
+
- spec/unit/fixtures/util_vagrantfile/Vagrantfile-multi
|
138
|
+
- spec/unit/fixtures/util_vagrantfile/Vagrantfile-plugins
|
139
|
+
- spec/unit/fixtures/util_vagrantfile/Vagrantfile-simple
|
132
140
|
- spec/unit/util_spec.rb
|