pauper 0.0.4 → 0.0.5

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.
Files changed (3) hide show
  1. data/lib/dhcpd.rb +4 -0
  2. data/lib/pauper.rb +25 -6
  3. metadata +18 -7
@@ -10,6 +10,10 @@ class DHCPD
10
10
  parse
11
11
  end
12
12
 
13
+ def subnet
14
+ @preamble.match(/(172\.16\.\d+)\.0/)[1]
15
+ end
16
+
13
17
  def save
14
18
  tmp_path = '.tmp.dhcpd.conf'
15
19
  File.open(tmp_path, 'w') do |f|
@@ -51,9 +51,11 @@ class Pauper
51
51
  vmx.save
52
52
 
53
53
  dhcpd = DHCPD.new(DHCPD_CONF_PATH)
54
+ ip = node_ip(node_config)
55
+
54
56
  dhcpd.config[node_name] = {
55
57
  'hardware ethernet' => mac,
56
- 'fixed-address' => node_config.config[:ip]
58
+ 'fixed-address' => ip
57
59
  }
58
60
  dhcpd.save
59
61
 
@@ -81,13 +83,13 @@ class Pauper
81
83
  chef_attribs = {
82
84
  :run_list => @pauper_config.config[:default_run_list] + node_config.config[:run_list],
83
85
  :ip => {
84
- :private => node_config.config[:ip],
86
+ :private => ip,
85
87
  :private_netmask => '255.255.255.0'
86
88
  }
87
89
  }.merge(@pauper_config.config[:chef_options]).merge(node_config.config[:chef_options])
88
90
 
89
91
  puts "Uploading Chef files..."
90
- Net::SCP.start node_config.config[:ip], @pauper_config.config[:ssh_user], :password => @pauper_config.config[:ssh_password] do |scp|
92
+ Net::SCP.start ip, @pauper_config.config[:ssh_user], :password => @pauper_config.config[:ssh_password] do |scp|
91
93
  scp.upload! tmp_client_rb_path, "client.rb"
92
94
  scp.upload! @pauper_config.config[:validation_key_path], "validation.pem"
93
95
  scp.upload! StringIO.new(chef_attribs.to_json), "client-config.json"
@@ -102,7 +104,7 @@ class Pauper
102
104
  end
103
105
 
104
106
  puts "Connecting over SSH..."
105
- Net::SSH.start node_config.config[:ip], @pauper_config.config[:ssh_user], :password => @pauper_config.config[:ssh_password] do |ssh|
107
+ Net::SSH.start ip, @pauper_config.config[:ssh_user], :password => @pauper_config.config[:ssh_password] do |ssh|
106
108
  ssh_exec ssh, "sudo hostname #{node_name}"
107
109
  ssh_exec ssh, "sudo mkdir /etc/chef"
108
110
 
@@ -166,7 +168,7 @@ class Pauper
166
168
  puts "Writing /etc/hosts file..."
167
169
  hosts = Hosts.new
168
170
  @pauper_config.config[:nodes].each do |node|
169
- hosts.config[node.config[:ip]] = node.name
171
+ hosts.config[node_ip(node)] = node.name
170
172
  end
171
173
  hosts.save
172
174
  end
@@ -194,6 +196,17 @@ class Pauper
194
196
 
195
197
  private
196
198
 
199
+ def node_ip(node_config)
200
+ return node_config.config[:ip] if node_config.config[:ip]
201
+
202
+ @subnet ||= begin
203
+ dhcpd = DHCPD.new(DHCPD_CONF_PATH)
204
+ dhcpd.subnet
205
+ end
206
+
207
+ return @subnet + '.' + node_config.config[:last_octet]
208
+ end
209
+
197
210
  def cmd(*args)
198
211
  puts ["local>", *args].join(" ")
199
212
  system *args
@@ -260,7 +273,9 @@ class Pauper
260
273
  end
261
274
 
262
275
  def node_name_to_vmx(node_name)
263
- Dir[File.join(node_name_to_vm_path(node_name), '*.vmx')][0]
276
+ vmxes = Dir[File.join(node_name_to_vm_path(node_name), '*.vmx')]
277
+ raise "Can't find a vmx file in #{node_name_to_vm_path(node_name)}" unless vmxes[0]
278
+ vmxes[0]
264
279
  end
265
280
 
266
281
  def node_name_to_vm_path(node_name)
@@ -369,6 +384,10 @@ class Pauper
369
384
  @config[:ip] = addr
370
385
  end
371
386
 
387
+ def last_octet(octet)
388
+ @config[:last_octet] = octet.to_s
389
+ end
390
+
372
391
  def chef_options(options)
373
392
  @config[:chef_options] = options
374
393
  end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pauper
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 21
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 4
9
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
10
11
  platform: ruby
11
12
  authors:
12
13
  - Tyler McMullen
@@ -14,16 +15,17 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-08-17 00:00:00 -07:00
18
- default_executable:
18
+ date: 2011-08-22 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: thor
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
24
25
  requirements:
25
26
  - - ">="
26
27
  - !ruby/object:Gem::Version
28
+ hash: 3
27
29
  segments:
28
30
  - 0
29
31
  version: "0"
@@ -33,9 +35,11 @@ dependencies:
33
35
  name: net-ssh
34
36
  prerelease: false
35
37
  requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
36
39
  requirements:
37
40
  - - ">="
38
41
  - !ruby/object:Gem::Version
42
+ hash: 3
39
43
  segments:
40
44
  - 0
41
45
  version: "0"
@@ -45,9 +49,11 @@ dependencies:
45
49
  name: net-scp
46
50
  prerelease: false
47
51
  requirement: &id003 !ruby/object:Gem::Requirement
52
+ none: false
48
53
  requirements:
49
54
  - - ">="
50
55
  - !ruby/object:Gem::Version
56
+ hash: 3
51
57
  segments:
52
58
  - 0
53
59
  version: "0"
@@ -57,9 +63,11 @@ dependencies:
57
63
  name: json
58
64
  prerelease: false
59
65
  requirement: &id004 !ruby/object:Gem::Requirement
66
+ none: false
60
67
  requirements:
61
68
  - - ">="
62
69
  - !ruby/object:Gem::Version
70
+ hash: 3
63
71
  segments:
64
72
  - 0
65
73
  version: "0"
@@ -82,7 +90,6 @@ files:
82
90
  - lib/pauper.rb
83
91
  - lib/vmx.rb
84
92
  - README
85
- has_rdoc: true
86
93
  homepage: http://github.com/fastly/Pauper
87
94
  licenses: []
88
95
 
@@ -92,23 +99,27 @@ rdoc_options: []
92
99
  require_paths:
93
100
  - lib
94
101
  required_ruby_version: !ruby/object:Gem::Requirement
102
+ none: false
95
103
  requirements:
96
104
  - - ">="
97
105
  - !ruby/object:Gem::Version
106
+ hash: 3
98
107
  segments:
99
108
  - 0
100
109
  version: "0"
101
110
  required_rubygems_version: !ruby/object:Gem::Requirement
111
+ none: false
102
112
  requirements:
103
113
  - - ">="
104
114
  - !ruby/object:Gem::Version
115
+ hash: 3
105
116
  segments:
106
117
  - 0
107
118
  version: "0"
108
119
  requirements: []
109
120
 
110
121
  rubyforge_project:
111
- rubygems_version: 1.3.6
122
+ rubygems_version: 1.8.8
112
123
  signing_key:
113
124
  specification_version: 3
114
125
  summary: A semi-sane way to manage a multi-vm dev environment