nephele 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -27,6 +27,12 @@ Jeweler::Tasks.new do |gem|
27
27
  gem.homepage = 'https://github.com/jodell/nephele'
28
28
  end
29
29
 
30
+ desc 'rubygems.org publishing'
31
+ task :push do
32
+ ver = "nephele-#{File.read('VERSION')}"
33
+ sh "gem build nephele.gemspec; gem push #{ver}.gem && rm #{ver}.gem"
34
+ end
35
+
30
36
  task :default => :'test:unit'
31
37
 
32
38
  task :tags do
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
data/bin/neph CHANGED
@@ -17,6 +17,7 @@ class Nephele::Runner < Optitron::CLI
17
17
  class_opt 'personality', 'comma-separated tuple of contents,targetfile to be placed at startup', :type => :string
18
18
  class_opt 'bootstrap', "optional bootstrapper URI, defaults to #{JODELL_CHEF_BOOTSTRAPPER}", :type => :string
19
19
  class_opt 'recipe', "run this recipe after bootstrapping", :type => :string
20
+ class_opt 'vpn-credential-file', 'specify a vpnpass file to seed the target vm', :type => :string
20
21
 
21
22
  desc 'Display a list of servers'
22
23
  def list
@@ -51,12 +52,17 @@ class Nephele::Runner < Optitron::CLI
51
52
  desc "Creates a node with name, image name, flavor"
52
53
  opt 'count', 'create foo, foo2, foo3, ...', :type => :numeric
53
54
  def create(name, image, flavor)
55
+ personality = Nephele::Rackspace::Util.personality(params['personality'] || :default)
56
+ if vpnfile = params['vpn-credential-file'] && !vpnfile.empty?
57
+ personality.delete_if { |k, v| v == '/root/.vpnpass' }
58
+ personality[vpnfile] = '/root/.vpnpass'
59
+ end
54
60
  (params['count'] || 1).to_i.times do |i|
55
61
  @node = service.create \
56
62
  :name => name + "#{params['count'] ? i + 1 : ''}",
57
63
  :image => Nephele::Rackspace.image_lookup(image),
58
64
  :flavor => flavor,
59
- :personality => Nephele::Rackspace::Util.personality(params['personality'] || :default)
65
+ :personality => personality
60
66
  end
61
67
  end
62
68
 
data/bin/nephele CHANGED
@@ -17,6 +17,7 @@ class Nephele::Runner < Optitron::CLI
17
17
  class_opt 'personality', 'comma-separated tuple of contents,targetfile to be placed at startup', :type => :string
18
18
  class_opt 'bootstrap', "optional bootstrapper URI, defaults to #{JODELL_CHEF_BOOTSTRAPPER}", :type => :string
19
19
  class_opt 'recipe', "run this recipe after bootstrapping", :type => :string
20
+ class_opt 'vpn-credential-file', 'specify a vpnpass file to seed the target vm', :type => :string
20
21
 
21
22
  desc 'Display a list of servers'
22
23
  def list
@@ -51,12 +52,17 @@ class Nephele::Runner < Optitron::CLI
51
52
  desc "Creates a node with name, image name, flavor"
52
53
  opt 'count', 'create foo, foo2, foo3, ...', :type => :numeric
53
54
  def create(name, image, flavor)
55
+ personality = Nephele::Rackspace::Util.personality(params['personality'] || :default)
56
+ if vpnfile = params['vpn-credential-file'] && !vpnfile.empty?
57
+ personality.delete_if { |k, v| v == '/root/.vpnpass' }
58
+ personality[vpnfile] = '/root/.vpnpass'
59
+ end
54
60
  (params['count'] || 1).to_i.times do |i|
55
61
  @node = service.create \
56
62
  :name => name + "#{params['count'] ? i + 1 : ''}",
57
63
  :image => Nephele::Rackspace.image_lookup(image),
58
64
  :flavor => flavor,
59
- :personality => Nephele::Rackspace::Util.personality(params['personality'] || :default)
65
+ :personality => personality
60
66
  end
61
67
  end
62
68
 
@@ -91,7 +91,8 @@ module Nephele::Rackspace::Util
91
91
  def personality(personality)
92
92
  if personality == :default
93
93
  { generate_key_file => '/root/.ssh/authorized_keys',
94
- known_hosts_file => '/root/.ssh/known_hosts' }
94
+ known_hosts_file => '/root/.ssh/known_hosts',
95
+ vpn_pass_file => '/root/.vpnpass' }
95
96
  else
96
97
  acc = {}
97
98
  personality.split(',').each_slice(2) { |(k, v)| acc[k] = v }
@@ -103,14 +104,18 @@ module Nephele::Rackspace::Util
103
104
  '/tmp/nephele_key_file'.tap do |file| File.open(file, 'w') { |f| f << my_default_key }; end
104
105
  end
105
106
 
106
- def my_default_key
107
- File.read(File.expand_path('~/.ssh/id_dsa.pub'))
107
+ def my_default_key(keyfile = File.expand_path('~/.ssh/id_dsa.pub'))
108
+ File.read(keyfile)
108
109
  end
109
110
 
110
111
  def known_hosts_file
111
112
  '/tmp/known_hosts.nephele'.tap do |file| File.open(file, 'w') { |f| f << known_hosts }; end
112
113
  end
113
114
 
115
+ def vpn_pass_file(passfile = File.expand_path('~/.vpnpass'))
116
+ File.exists?(passfile) && passfile
117
+ end
118
+
114
119
  # Github
115
120
  def known_hosts
116
121
  <<-EoS
data/nephele.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{nephele}
8
- s.version = "0.1.1"
8
+ s.version = "0.1.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jeffrey O'Dell"]
12
- s.date = %q{2011-04-11}
12
+ s.date = %q{2011-04-12}
13
13
  s.description = %q{Light administration utility for popular cloud services}
14
14
  s.email = %q{jeffrey.odell@gmail.com}
15
15
  s.executables = ["neph", "nephele"]
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nephele
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jeffrey O'Dell
@@ -15,13 +15,11 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-11 00:00:00 -05:00
18
+ date: 2011-04-12 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: rake
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
22
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
23
  none: false
26
24
  requirements:
27
25
  - - ">="
@@ -30,12 +28,12 @@ dependencies:
30
28
  segments:
31
29
  - 0
32
30
  version: "0"
31
+ prerelease: false
33
32
  type: :runtime
34
- version_requirements: *id001
33
+ requirement: *id001
34
+ name: rake
35
35
  - !ruby/object:Gem::Dependency
36
- name: cloudservers
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
36
+ version_requirements: &id002 !ruby/object:Gem::Requirement
39
37
  none: false
40
38
  requirements:
41
39
  - - ">="
@@ -44,12 +42,12 @@ dependencies:
44
42
  segments:
45
43
  - 0
46
44
  version: "0"
45
+ prerelease: false
47
46
  type: :runtime
48
- version_requirements: *id002
47
+ requirement: *id002
48
+ name: cloudservers
49
49
  - !ruby/object:Gem::Dependency
50
- name: awesome_print
51
- prerelease: false
52
- requirement: &id003 !ruby/object:Gem::Requirement
50
+ version_requirements: &id003 !ruby/object:Gem::Requirement
53
51
  none: false
54
52
  requirements:
55
53
  - - ">="
@@ -58,12 +56,12 @@ dependencies:
58
56
  segments:
59
57
  - 0
60
58
  version: "0"
59
+ prerelease: false
61
60
  type: :runtime
62
- version_requirements: *id003
61
+ requirement: *id003
62
+ name: awesome_print
63
63
  - !ruby/object:Gem::Dependency
64
- name: optitron
65
- prerelease: false
66
- requirement: &id004 !ruby/object:Gem::Requirement
64
+ version_requirements: &id004 !ruby/object:Gem::Requirement
67
65
  none: false
68
66
  requirements:
69
67
  - - ">="
@@ -72,12 +70,12 @@ dependencies:
72
70
  segments:
73
71
  - 0
74
72
  version: "0"
73
+ prerelease: false
75
74
  type: :runtime
76
- version_requirements: *id004
75
+ requirement: *id004
76
+ name: optitron
77
77
  - !ruby/object:Gem::Dependency
78
- name: wirble
79
- prerelease: false
80
- requirement: &id005 !ruby/object:Gem::Requirement
78
+ version_requirements: &id005 !ruby/object:Gem::Requirement
81
79
  none: false
82
80
  requirements:
83
81
  - - ">="
@@ -86,12 +84,12 @@ dependencies:
86
84
  segments:
87
85
  - 0
88
86
  version: "0"
87
+ prerelease: false
89
88
  type: :development
90
- version_requirements: *id005
89
+ requirement: *id005
90
+ name: wirble
91
91
  - !ruby/object:Gem::Dependency
92
- name: shoulda
93
- prerelease: false
94
- requirement: &id006 !ruby/object:Gem::Requirement
92
+ version_requirements: &id006 !ruby/object:Gem::Requirement
95
93
  none: false
96
94
  requirements:
97
95
  - - ">="
@@ -100,12 +98,12 @@ dependencies:
100
98
  segments:
101
99
  - 0
102
100
  version: "0"
101
+ prerelease: false
103
102
  type: :development
104
- version_requirements: *id006
103
+ requirement: *id006
104
+ name: shoulda
105
105
  - !ruby/object:Gem::Dependency
106
- name: mocha
107
- prerelease: false
108
- requirement: &id007 !ruby/object:Gem::Requirement
106
+ version_requirements: &id007 !ruby/object:Gem::Requirement
109
107
  none: false
110
108
  requirements:
111
109
  - - ">="
@@ -114,12 +112,12 @@ dependencies:
114
112
  segments:
115
113
  - 0
116
114
  version: "0"
115
+ prerelease: false
117
116
  type: :development
118
- version_requirements: *id007
117
+ requirement: *id007
118
+ name: mocha
119
119
  - !ruby/object:Gem::Dependency
120
- name: autotest
121
- prerelease: false
122
- requirement: &id008 !ruby/object:Gem::Requirement
120
+ version_requirements: &id008 !ruby/object:Gem::Requirement
123
121
  none: false
124
122
  requirements:
125
123
  - - ">="
@@ -128,12 +126,12 @@ dependencies:
128
126
  segments:
129
127
  - 0
130
128
  version: "0"
129
+ prerelease: false
131
130
  type: :development
132
- version_requirements: *id008
131
+ requirement: *id008
132
+ name: autotest
133
133
  - !ruby/object:Gem::Dependency
134
- name: autotest-fsevent
135
- prerelease: false
136
- requirement: &id009 !ruby/object:Gem::Requirement
134
+ version_requirements: &id009 !ruby/object:Gem::Requirement
137
135
  none: false
138
136
  requirements:
139
137
  - - ">="
@@ -142,12 +140,12 @@ dependencies:
142
140
  segments:
143
141
  - 0
144
142
  version: "0"
143
+ prerelease: false
145
144
  type: :development
146
- version_requirements: *id009
145
+ requirement: *id009
146
+ name: autotest-fsevent
147
147
  - !ruby/object:Gem::Dependency
148
- name: autotest-growl
149
- prerelease: false
150
- requirement: &id010 !ruby/object:Gem::Requirement
148
+ version_requirements: &id010 !ruby/object:Gem::Requirement
151
149
  none: false
152
150
  requirements:
153
151
  - - ">="
@@ -156,12 +154,12 @@ dependencies:
156
154
  segments:
157
155
  - 0
158
156
  version: "0"
157
+ prerelease: false
159
158
  type: :development
160
- version_requirements: *id010
159
+ requirement: *id010
160
+ name: autotest-growl
161
161
  - !ruby/object:Gem::Dependency
162
- name: bundler
163
- prerelease: false
164
- requirement: &id011 !ruby/object:Gem::Requirement
162
+ version_requirements: &id011 !ruby/object:Gem::Requirement
165
163
  none: false
166
164
  requirements:
167
165
  - - ">="
@@ -170,12 +168,12 @@ dependencies:
170
168
  segments:
171
169
  - 0
172
170
  version: "0"
171
+ prerelease: false
173
172
  type: :development
174
- version_requirements: *id011
173
+ requirement: *id011
174
+ name: bundler
175
175
  - !ruby/object:Gem::Dependency
176
- name: jeweler
177
- prerelease: false
178
- requirement: &id012 !ruby/object:Gem::Requirement
176
+ version_requirements: &id012 !ruby/object:Gem::Requirement
179
177
  none: false
180
178
  requirements:
181
179
  - - ~>
@@ -186,8 +184,10 @@ dependencies:
186
184
  - 5
187
185
  - 2
188
186
  version: 1.5.2
187
+ prerelease: false
189
188
  type: :development
190
- version_requirements: *id012
189
+ requirement: *id012
190
+ name: jeweler
191
191
  description: Light administration utility for popular cloud services
192
192
  email: jeffrey.odell@gmail.com
193
193
  executables: