vagrant-xhyve 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d1b1e29a5e98f8a0d0586c217e0f1ff017b6ca49
4
- data.tar.gz: 4bbd11ce1f843b0075ab5b3edb002b437ab283a3
3
+ metadata.gz: 7dc49c89e9de2792a7810031af7517963a895dfa
4
+ data.tar.gz: ed2dac42bcf9188966a6a1f12eef64f86aac7c8b
5
5
  SHA512:
6
- metadata.gz: 12a7c22f6097c8d7b68b4e4a25a85acce82356084175faeda2a900af8e2117730e4b937047bf591e96cddb99161a06bc97a725f5d982be8926f4ddde7dee1530
7
- data.tar.gz: f2ae14dbd96964160a76c87387b10b092e1b501388008a7e8418c7b94c25ba1d8517642ee484ae3bf8cb7e07c560f0fe9136f033f7961ea601e4c97211b8d74f
6
+ metadata.gz: 7aa7db28167d2d73369698ac1419ef38bd01610a60ba77790f970ad368fb49008b031b6a00902688b48b348738883751e4e34cc28040451cec3ea6b82594499f
7
+ data.tar.gz: 1b8da947d8374a840fe6f9edd5ff4a9ea9141d7a7f6419a7a45deda0f1f0bba483c52d799367e40277f7b90f8002504c33ace5e2d53253f5473e8ba916c73a93
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ # 0.4.0 (December 10th, 2016)
2
+
3
+ * Added qcow support to use with hyperkit
4
+ * Fixed intermittent failures with certain MAC addresses
5
+
6
+ # 0.3.0 (December 5th, 2016)
7
+
8
+ * Added `kernel_command` option to set custom kernel parameters (Nuno Passaro)
9
+
1
10
  # 0.2.0 (July 23, 2016)
2
11
 
3
12
  * Added ability to set custom binary (to work with docker beta etc)
data/README.md CHANGED
@@ -7,7 +7,9 @@ provider to Vagrant.
7
7
 
8
8
  ## Features
9
9
 
10
- * Sorta works
10
+ * Basic features work
11
+ * Can work with Hyperkit fork of Xhyve
12
+ * qcow image support
11
13
 
12
14
  ## Limitations
13
15
 
@@ -15,8 +17,6 @@ You need to use sudo for most vagrant actions with the xhyve driver,
15
17
  due to the entitlements needed for xhyve to run without sudo. More details
16
18
  in the [xhyve github issue](https://github.com/mist64/xhyve/issues/60).
17
19
 
18
- Also, sometimes launching a VM just fails. But I'm not quite sure why.
19
-
20
20
  ## Usage
21
21
 
22
22
  Install using standard Vagrant plugin installation methods. After
@@ -66,9 +66,7 @@ This provider exposes quite a few provider-specific configuration options:
66
66
  integer for memory in MB or you can use the suffixed style, eg. 2G for two
67
67
  Gigabytes
68
68
  * `cpus` - The number of CPUs to give the VM
69
- * `xhyve_binary` - use a custom xhyve version (for example, the version of xhyve
70
- included with [Docker for Mac Beta](https://docs.docker.com/engine/installation/mac/#docker-for-mac)
71
- is interesting. The path is `/Applications/Docker.app/Contents/MacOS/com.docker.hyperkit`. )
69
+ * `xhyve_binary` - use a custom xhyve version
72
70
  * kernel_command - send a custom kernel boot command
73
71
 
74
72
  These can be set like typical provider-specific configuration:
@@ -92,6 +90,12 @@ There is minimal support for synced folders. Upon `vagrant up`,
92
90
  `rsync` (if available) to uni-directionally sync the folder to
93
91
  the remote machine over SSH.
94
92
 
93
+ ## Using Docker's HyperKit Fork of Xhyve
94
+
95
+ Docker has a very nice port of Xhyve called [HyperKit](https://github.com/docker/hyperkit). It has some interesting features like better stability and qcow support (which this provider can't use yet).
96
+
97
+ If you want to try it out, either install hyperkit directly, or you can use the version bundled with [Docker for Mac](https://docs.docker.com/engine/installation/mac/). The path to the binary is `/Applications/Docker.app/Contents/MacOS/com.docker.hyperkit`. See the configuration section above for how to use this with the `xhyve_binary` option.
98
+
95
99
  ## Questions
96
100
 
97
101
  Q. Should I use this for my work?
@@ -103,11 +107,15 @@ Q. Why?
103
107
 
104
108
  A. This project is powered by ignorance and good intentions.
105
109
 
106
- Q. Will I even not have to use sudo?
110
+ Q. Will I ever not have to use sudo or setuid root?
107
111
 
108
112
  A. There's a theory in that issue linked above that wrapping xhyve in an
109
113
  app store app would help. If that were the case, you could probably use the
110
- embedded binary with vagrant-xhyve.
114
+ embedded binary with vagrant-xhyve. Another option is to use setuid root.
115
+
116
+ Q. This sucks.
117
+
118
+ A. That's not a question, but why don't you try out [another implementation](https://github.com/sirn/vagrant-xhyve). Looks pretty nice.
111
119
 
112
120
  ## Acknowledgements
113
121
 
@@ -143,3 +151,8 @@ Use bundler to execute Vagrant:
143
151
  ```
144
152
  $ bundle exec vagrant up --provider=xhyve
145
153
  ```
154
+
155
+ ## Contributors
156
+
157
+ * Patrick Armstrong
158
+ * Nuno Passaro
@@ -76,10 +76,8 @@ module VagrantPlugins
76
76
  private
77
77
 
78
78
  def block_device_paths(base_path)
79
- 0.upto(10).map do |blockidx|
80
- block_file = File.join(base_path, "block#{blockidx}.img")
81
- return block_file if File.exist? block_file
82
- end
79
+ block_paths = Dir.glob File.join(base_path, "block*.{raw,img,qcow,qcow2}")
80
+ block_paths.sort
83
81
  end
84
82
 
85
83
  def kernel_file_path(base_path)
@@ -41,10 +41,9 @@ module VagrantPlugins
41
41
  end
42
42
 
43
43
  def copy_block_files_to(from, to)
44
- 0.upto(10).each do |blockidx|
45
- filename = "block#{blockidx}.img"
46
- copy_file(from, to, filename) if File.exist? File.join(from, filename)
47
- end
44
+ block_glob = Dir.glob(File.join(from, "block*.{img,raw,qcow,qcow2}"))
45
+ log.debug("Copying #{block_glob} to #{to} ")
46
+ FileUtils.cp_r block_glob, to
48
47
  end
49
48
 
50
49
  def copy_file(from, to, filename)
@@ -48,12 +48,24 @@ module VagrantPlugins
48
48
  '-c', @processors,
49
49
  '-s', '0:0,hostbridge',
50
50
  "#{"-s #{PCI_BASE - 1}:0,virtio-net" if @networking }" ,
51
- "#{"#{@blockdevs.each_with_index.map { |p, i| "-s #{PCI_BASE + i},virtio-blk,#{p}" }.join(' ')}" unless @blockdevs.empty? }",
51
+ "#{build_block_device_parameter}",
52
52
  '-s', '31,lpc',
53
53
  '-l', "#{@serial},stdio",
54
54
  '-f', "kexec,#{@kernel},#{@initrd},'#{@cmdline}'"
55
55
  ].join(' ')
56
56
  end
57
+
58
+ def build_block_device_parameter
59
+ block_device_parameter = ""
60
+ @blockdevs.each_with_index.map do |p, i|
61
+ if p.include? "qcow"
62
+ block_device_parameter << "-s #{PCI_BASE + i},virtio-blk,file://#{p},format\=qcow "
63
+ else
64
+ block_device_parameter << "-s #{PCI_BASE + i},virtio-blk,#{p} "
65
+ end
66
+ end
67
+ block_device_parameter
68
+ end
57
69
  end
58
70
  end
59
71
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module XHYVE
3
- VERSION = '0.3.0'
3
+ VERSION = '0.4.0'
4
4
  end
5
5
  end
@@ -7,9 +7,11 @@ module Xhyve
7
7
  MAX_ATTEMPTS = 60
8
8
 
9
9
  def get_ip_for_mac(mac)
10
+ normalized_mac = normalize_mac(mac)
11
+
10
12
  max = ENV.key?('MAX_IP_WAIT') ? ENV['MAX_IP_WAIT'].to_i : nil
11
13
  ip = wait_for(max: max) do
12
- ip = parse_lease_file_for_mac(mac)
14
+ ip = parse_lease_file_for_mac(normalized_mac)
13
15
  end
14
16
  end
15
17
 
@@ -37,5 +39,16 @@ module Xhyve
37
39
  sleep(WAIT_TIME)
38
40
  end
39
41
  end
42
+
43
+ # macos dhcp represents mac addresses differently from xhyve. Specifically,
44
+ # it doesn't display leading zeros. This function normalized the mac
45
+ # address to the macos format
46
+ def normalize_mac(mac)
47
+ # don't try to normalize if it doesn't seem like a mac...
48
+ return mac if mac !~ /.*:.*:.*:.*:.*:.*/
49
+ mac_parts = mac.to_s.split(":")
50
+ normalized_parts = mac_parts.map {|s| Integer(s, 16).to_s(16) }
51
+ normalized_parts.join(":")
52
+ end
40
53
  end
41
54
  end
@@ -33,8 +33,8 @@ module Xhyve
33
33
  end
34
34
 
35
35
  def start
36
- outfile, infile = redirection
37
- @pid = spawn(@command, [:out, :err] => outfile, in: infile)
36
+ outfile, errfile, infile = redirection
37
+ @pid = spawn(@command, out: outfile, err: errfile, in: infile)
38
38
  if @foreground
39
39
  Process.wait(@pid)
40
40
  outfile.cooked!
@@ -59,9 +59,9 @@ module Xhyve
59
59
 
60
60
  def redirection
61
61
  if @foreground
62
- [$stdout.raw!, $stdin.raw! ]
62
+ [$stdout.raw!, $stderr.raw!, $stdin.raw! ]
63
63
  else
64
- [NULLDEV, NULLDEV]
64
+ [NULLDEV, NULLDEV, NULLDEV]
65
65
  end
66
66
  end
67
67
 
@@ -1,3 +1,10 @@
1
+ {
2
+ name=boxt
3
+ ip_address=192.168.64.35
4
+ hw_address=1,9a:65:1b:12:cf:f
5
+ identifier=1,9a:65:1b:12:cf:f
6
+ lease=0x56551008
7
+ }
1
8
  {
2
9
  name=box
3
10
  ip_address=192.168.64.34
@@ -3,6 +3,7 @@ require File.expand_path('../../spec_helper.rb', __FILE__)
3
3
  RSpec.describe Xhyve::DHCP do
4
4
  let(:leases) do
5
5
  {
6
+ '9a:65:1b:12:cf:0f' => '192.168.64.35',
6
7
  '9a:65:1b:12:cf:32' => '192.168.64.34',
7
8
  'a6:84:b2:34:cf:32' => '192.168.64.5',
8
9
  'ea:28:a:33:cf:32' => '192.168.64.4',
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-xhyve
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Armstrong
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-06 00:00:00.000000000 Z
11
+ date: 2016-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xhyve-ruby
@@ -105,6 +105,7 @@ files:
105
105
  - example_box/vmlinuz
106
106
  - lib/vagrant-xhyve.rb
107
107
  - lib/vagrant-xhyve/action.rb
108
+ - lib/vagrant-xhyve/action/.boot.rb.swp
108
109
  - lib/vagrant-xhyve/action/boot.rb
109
110
  - lib/vagrant-xhyve/action/import.rb
110
111
  - lib/vagrant-xhyve/action/is_created.rb
@@ -136,9 +137,39 @@ files:
136
137
  - vendor/xhyve-ruby/Gemfile
137
138
  - vendor/xhyve-ruby/README.md
138
139
  - vendor/xhyve-ruby/Rakefile
140
+ - vendor/xhyve-ruby/coverage/.last_run.json
141
+ - vendor/xhyve-ruby/coverage/.resultset.json
142
+ - vendor/xhyve-ruby/coverage/.resultset.json.lock
143
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/application.css
144
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/application.js
145
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/colorbox/border.png
146
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/colorbox/controls.png
147
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/colorbox/loading.gif
148
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/colorbox/loading_background.png
149
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/favicon_green.png
150
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/favicon_red.png
151
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/favicon_yellow.png
152
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/loading.gif
153
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/magnify.png
154
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
155
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
156
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
157
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
158
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png
159
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
160
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
161
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
162
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-icons_222222_256x240.png
163
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-icons_2e83ff_256x240.png
164
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-icons_454545_256x240.png
165
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-icons_888888_256x240.png
166
+ - vendor/xhyve-ruby/coverage/assets/0.10.0/smoothness/images/ui-icons_cd0a0a_256x240.png
167
+ - vendor/xhyve-ruby/coverage/index.html
139
168
  - vendor/xhyve-ruby/example/test.rb
140
169
  - vendor/xhyve-ruby/lib/rubygems_plugin.rb
141
170
  - vendor/xhyve-ruby/lib/xhyve.rb
171
+ - vendor/xhyve-ruby/lib/xhyve/.dhcp.rb.swp
172
+ - vendor/xhyve-ruby/lib/xhyve/.guest.rb.swp
142
173
  - vendor/xhyve-ruby/lib/xhyve/dhcp.rb
143
174
  - vendor/xhyve-ruby/lib/xhyve/guest.rb
144
175
  - vendor/xhyve-ruby/lib/xhyve/vendor/xhyve
@@ -146,7 +177,6 @@ files:
146
177
  - vendor/xhyve-ruby/spec/fixtures/dhcpd_leases.txt
147
178
  - vendor/xhyve-ruby/spec/fixtures/guest/README.md
148
179
  - vendor/xhyve-ruby/spec/fixtures/guest/initrd
149
- - vendor/xhyve-ruby/spec/fixtures/guest/loop.img
150
180
  - vendor/xhyve-ruby/spec/fixtures/guest/vmlinuz
151
181
  - vendor/xhyve-ruby/spec/lib/dhcp_spec.rb
152
182
  - vendor/xhyve-ruby/spec/lib/guest_spec.rb