kitchen-qemu 0.1.2 → 0.1.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1029f7e678c666e950af682e6efa5ef223f2fc21
4
- data.tar.gz: 3bb85ec743a685a5a4e9adf9b166b21117a1caf5
3
+ metadata.gz: ae36680bcd2808d461d0d57e9be6d0c55a919c43
4
+ data.tar.gz: 05b1439ddc31ba48f31b607e2bb96607c428d5ab
5
5
  SHA512:
6
- metadata.gz: 28214283a12ec0d94a6b59551a438de3eaa4804dbdd2fe5c53d0be3fa33b70eaf054184e43f44d324e24eeaeef9b80565168a6273d42d652596cb31a0c013797
7
- data.tar.gz: cee503538175132530f22439bf3259556fbbcbb0af878a0444199b5cbb35e9f400abb8d45bc8e87913e0780d6f0458767f085c5f9345a1fe0502f8ba97c74433
6
+ metadata.gz: e4013ca5ceba2813668ea367f656baa9bb6d9d7886d885c93ddf4112a32863f3796a43e0d1425735d43406203900e34c9b1b88c1f2d832f01f42b90273dd6b32
7
+ data.tar.gz: 029c25cec633dcd7ba9d2a7fc3ca4b5ec9a6a8be80c82691ec43bfb40a1e76fa245a2d93a60ca2e898c5af687d967f342992549dc858563ec81c627d76e9d9c3
@@ -41,7 +41,7 @@ module Kitchen
41
41
  default_config :memory, '512'
42
42
  default_config :nic_model, 'virtio'
43
43
 
44
- required_config :image do |attr, value, subject|
44
+ required_config :image do |_attr, value, _subject|
45
45
  raise UserError, 'Must specify image file' unless value
46
46
  end
47
47
 
@@ -57,7 +57,7 @@ module Kitchen
57
57
  def finalize_config!(instance)
58
58
  super
59
59
  if not config[:binary]
60
- config[:binary] = @@archbinary[config[:arch]] or
60
+ config[:binary] = @@ARCHBINARY[config[:arch]] or
61
61
  raise UserError, "Unknown architecture '#{config[:arch]}'"
62
62
  end
63
63
  config[:vga] = 'qxl' if config[:spice] && !config[:vga]
@@ -69,7 +69,7 @@ module Kitchen
69
69
  # @param state [Hash] mutable instance and driver state
70
70
  # @raise [ActionFailed] if the action could not be completed
71
71
  def create(state)
72
- monitor = monitor_path
72
+ monitor = monitor_qmp_path
73
73
  if File.exist?(monitor)
74
74
  begin
75
75
  mon = UNIXSocket.new(monitor)
@@ -95,8 +95,10 @@ module Kitchen
95
95
  cmd = [
96
96
  config[:binary], '-daemonize',
97
97
  '-display', config[:display].to_s,
98
- '-chardev', "socket,id=monitor,path=#{monitor},server,nowait",
99
- '-mon', 'chardev=monitor,mode=control,default',
98
+ '-chardev', "socket,id=mon-qmp,path=#{monitor},server,nowait",
99
+ '-mon', 'chardev=mon-qmp,mode=control,default',
100
+ '-chardev', "socket,id=mon-rdl,path=#{monitor_readline_path},server,nowait",
101
+ '-mon', 'chardev=mon-rdl,mode=readline',
100
102
  '-m', config[:memory].to_s,
101
103
  '-net', "nic,model=#{config[:nic_model]}",
102
104
  '-net', "user,net=192.168.1.0/24,hostname=#{hostname},hostfwd=tcp::#{state[:port]}-:22",
@@ -150,9 +152,9 @@ module Kitchen
150
152
  info 'Waiting for SSH..'
151
153
  conn = instance.transport.connection(state)
152
154
  conn.wait_until_ready
153
- conn.execute("sudo sh -c 'echo 127.0.0.1 #{names} >> /etc/hosts' 2>/dev/null")
155
+ conn.execute("sudo sh -c 'echo 127.0.0.1 #{names} >> /etc/hosts; hostnamectl set-hostname #{hostname} || hostname #{hostname} || true' 2>/dev/null")
154
156
  conn.execute('install -dm700 "$HOME/.ssh"')
155
- conn.execute("echo '#{@@pubkey}' > \"$HOME/.ssh/authorized_keys\"")
157
+ conn.execute("echo '#{@@PUBKEY}' > \"$HOME/.ssh/authorized_keys\"")
156
158
  conn.close
157
159
  state[:ssh_key] = privkey_path
158
160
  end
@@ -162,7 +164,7 @@ module Kitchen
162
164
  # @param state [Hash] mutable instance state
163
165
  # @raise [ActionFailed] if the action could not be completed
164
166
  def destroy(state)
165
- monitor = monitor_path
167
+ monitor = monitor_qmp_path
166
168
  return unless File.exist?(monitor)
167
169
 
168
170
  instance.transport.connection(state).close
@@ -185,7 +187,7 @@ module Kitchen
185
187
 
186
188
  private
187
189
 
188
- @@privkey = %{-----BEGIN RSA PRIVATE KEY-----
190
+ @@PRIVKEY = %{-----BEGIN RSA PRIVATE KEY-----
189
191
  MIIEowIBAAKCAQEAyG6ASL3bWS67rsA5LDvKnfdCBagK61B5LIr+NvdjK3oRKhCq
190
192
  qRs7aNSPOqMu2NbKot4/BtD0hWipF7CAsMqK+241coMUwxRTlqvoe/L7xZ24Ktaj
191
193
  rm1kk/xNUGP5vWyK8sYfYnDUuLSypRaZ/ZfWuKZgQLDdOw2FWqHFVLoJDsXgsa/y
@@ -214,9 +216,9 @@ tY4IM9IaSC2LuPFVc0Kx6TwObdeQScOokIxL3HfayfLKieTLC+w2
214
216
  -----END RSA PRIVATE KEY-----
215
217
  }.freeze
216
218
 
217
- @@pubkey = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIboBIvdtZLruuwDksO8qd90IFqArrUHksiv4292MrehEqEKqpGzto1I86oy7Y1sqi3j8G0PSFaKkXsICwyor7bjVygxTDFFOWq+h78vvFnbgq1qOubWST/E1QY/m9bIryxh9icNS4tLKlFpn9l9a4pmBAsN07DYVaocVUugkOxeCxr/KLUXdvmXj4Xfq837ultL1ggyaN2YqeDwn+GxM8RNm51rIRa4DL6Y1rPgztm3FL+A9MglzEjELbs8s6EDVewAG6do1HwS3LqCGxlfZgRieelzIHkyaqLRU4mzqbkhmfaR/U/fHQppRDYWb3CoCSBilJxxYfjLK1VDyXOWkH kitchen-qemu'.freeze
219
+ @@PUBKEY = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIboBIvdtZLruuwDksO8qd90IFqArrUHksiv4292MrehEqEKqpGzto1I86oy7Y1sqi3j8G0PSFaKkXsICwyor7bjVygxTDFFOWq+h78vvFnbgq1qOubWST/E1QY/m9bIryxh9icNS4tLKlFpn9l9a4pmBAsN07DYVaocVUugkOxeCxr/KLUXdvmXj4Xfq837ultL1ggyaN2YqeDwn+GxM8RNm51rIRa4DL6Y1rPgztm3FL+A9MglzEjELbs8s6EDVewAG6do1HwS3LqCGxlfZgRieelzIHkyaqLRU4mzqbkhmfaR/U/fHQppRDYWb3CoCSBilJxxYfjLK1VDyXOWkH kitchen-qemu'.freeze
218
220
 
219
- @@archbinary = {
221
+ @@ARCHBINARY = {
220
222
  'i386' => 'qemu-system-i386',
221
223
  'amd64' => 'qemu-system-x86_64',
222
224
  'x86' => 'qemu-system-i386',
@@ -229,19 +231,28 @@ tY4IM9IaSC2LuPFVc0Kx6TwObdeQScOokIxL3HfayfLKieTLC+w2
229
231
  File.join(config[:kitchen_root], '.kitchen', 'kitchen-qemu.key')
230
232
  end
231
233
 
232
- def monitor_path
234
+ def monitor_qmp_path
235
+ File.join(config[:kitchen_root], '.kitchen', "#{instance.name}.qmp")
236
+ end
237
+
238
+ def monitor_readline_path
233
239
  File.join(config[:kitchen_root], '.kitchen', "#{instance.name}.mon")
234
240
  end
235
241
 
236
242
  def create_privkey
237
243
  path = privkey_path
238
244
  return true if File.file?(path)
239
- File.open(path, File::CREAT|File::TRUNC|File::RDWR, 0600) { |f| f.write(@@privkey) }
245
+ File.open(path, File::CREAT|File::TRUNC|File::RDWR, 0600) { |f| f.write(@@PRIVKEY) }
240
246
  end
241
247
 
242
248
  def cleanup!
243
249
  begin
244
- File.delete(monitor_path)
250
+ File.delete(monitor_qmp_path)
251
+ rescue Errno::ENOENT
252
+ # do nothing
253
+ end
254
+ begin
255
+ File.delete(monitor_readline_path)
245
256
  rescue Errno::ENOENT
246
257
  # do nothing
247
258
  end
@@ -17,6 +17,6 @@
17
17
  module Kitchen
18
18
  module Driver
19
19
  # Version string for the QEMU Kitchen driver
20
- QEMU_VERSION = '0.1.2'
20
+ QEMU_VERSION = '0.1.3'
21
21
  end
22
22
  end
@@ -46,13 +46,13 @@ module Kitchen
46
46
  def wait_for_eof(timeout = @timeout)
47
47
  while IO.select(@ioa, nil, nil, timeout)
48
48
  begin
49
- @io.read_nonblock(4096)
49
+ loop { @io.read_nonblock(4096) }
50
50
  rescue EOFError
51
51
  return
52
52
  rescue Errno::ECONNRESET
53
53
  return
54
54
  rescue IO::WaitReadable
55
- # do notheng
55
+ # do nothing
56
56
  end
57
57
  end
58
58
  raise Timeout
@@ -84,7 +84,7 @@ module Kitchen
84
84
  begin
85
85
  @buf.push(@io.read_nonblock(4096))
86
86
  rescue IO::WaitReadable
87
- # do notheng
87
+ # do nothing
88
88
  else
89
89
  break
90
90
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-qemu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Renner Berthing
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-22 00:00:00.000000000 Z
11
+ date: 2016-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-kitchen