knife-clodo 0.1.3 → 0.1.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.
data/knife-clodo.gemspec CHANGED
@@ -1,8 +1,8 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'knife-clodo'
3
- spec.version = '0.1.3'
3
+ spec.version = '0.1.4'
4
4
  spec.summary = 'Clodo.Ru knife plugin'
5
- spec.add_dependency('fog', '>= 0.10.0')
5
+ spec.add_dependency('fog', '>= 0.11.0')
6
6
  spec.description = <<-EOF
7
7
  Knife plugin for Clodo.Ru cloud provider.
8
8
  EOF
@@ -1,7 +1,7 @@
1
1
  bash -c '
2
2
  <%= "export http_proxy=\"#{knife_config[:bootstrap_proxy]}\"" if knife_config[:bootstrap_proxy] -%>
3
3
 
4
- while [ -e /var/adm/autoinstall/init.d/* ] do
4
+ while [ -d /var/adm/autoinstall/init.d -a -e /var/adm/autoinstall/init.d/* ] do
5
5
  echo "Autoinstallation still in progress. Waiting 5sec...";
6
6
  sleep 5;
7
7
  done
@@ -18,44 +18,30 @@ class Chef
18
18
  option :clodo_api_key,
19
19
  :short => "-K KEY",
20
20
  :long => "--clodo-api-key KEY",
21
- :description => "Your clodo.ru API key",
22
- :proc => Proc.new { |key| Chef::Config[:knife][:clodo_api_key] = key }
21
+ :description => "Your clodo.ru API key"
23
22
 
24
23
  option :clodo_username,
25
24
  :short => "-A USERNAME",
26
25
  :long => "--clodo-username USERNAME",
27
- :description => "Your clodo.ru API username",
28
- :proc => Proc.new { |username| Chef::Config[:knife][:clodo_username] = username }
26
+ :description => "Your clodo.ru API username"
29
27
 
30
28
  option :clodo_api_auth_url,
31
29
  :long => "--clodo-api-auth-url URL",
32
- :description => "Your clodo.ru API auth url",
33
- :default => "api.clodo.ru",
34
- :proc => Proc.new { |url| Chef::Config[:knife][:clodo_api_auth_url] = url }
30
+ :description => "Your clodo.ru API auth url"
35
31
  end
36
32
 
37
33
  def connection
38
34
  @connection ||= Fog::Compute::Clodo.new({
39
- :clodo_api_key => Chef::Config[:knife][:clodo_api_key],
40
- :clodo_username => (Chef::Config[:knife][:clodo_username] || Chef::Config[:knife][:clodo_api_username]),
41
- :clodo_auth_url => Chef::Config[:knife][:clodo_api_auth_url] || config[:clodo_api_auth_url]})
35
+ :clodo_api_key => locate_config_value(:clodo_api_key),
36
+ :clodo_username => locate_config_value(:clodo_username),
37
+ :clodo_auth_url => locate_config_value(:clodo_api_auth_url) || 'api.clodo.ru'})
42
38
  end
43
39
 
44
40
  def locate_config_value(key)
45
41
  key = key.to_sym
46
- Chef::Config[:knife][key] || config[key]
42
+ config[key] || Chef::Config[:knife][key]
47
43
  end
48
-
49
- def public_dns_name(server)
50
- @public_dns_name ||= begin
51
- Resolv.getname(server.public_ip_address)
52
- rescue
53
- "#{server.public_ip_address.gsub('.','-')}.clodo.ru"
54
- end
55
- end
56
-
57
44
  end
58
-
59
45
  end
60
46
  end
61
47
  end
@@ -84,8 +84,7 @@ class Chef
84
84
 
85
85
  option :bootstrap_version,
86
86
  :long => "--bootstrap-version VERSION",
87
- :description => "The version of Chef to install",
88
- :proc => Proc.new { |v| Chef::Config[:knife][:bootstrap_version] = v }
87
+ :description => "The version of Chef to install"
89
88
 
90
89
  option :bootstrap_delay,
91
90
  :long => "--bootstrap-delay SEC",
@@ -96,22 +95,14 @@ class Chef
96
95
  :long => "--prerelease",
97
96
  :description => "Install the pre-release chef gems"
98
97
 
99
- option :bootstrap_version,
100
- :long => "--bootstrap-version VERSION",
101
- :description => "The version of Chef to install",
102
- :proc => Proc.new { |v| Chef::Config[:knife][:bootstrap_version] = v }
103
-
104
98
  option :distro,
105
99
  :short => "-d DISTRO",
106
100
  :long => "--distro DISTRO",
107
- :description => "Bootstrap a distro using a template; default is 'debian6apt'",
108
- :proc => Proc.new { |d| Chef::Config[:knife][:distro] = d },
109
- :default => "debian6apt"
101
+ :description => "Bootstrap a distro using a template; default is 'debian6apt'"
110
102
 
111
103
  option :template_file,
112
104
  :long => "--template-file TEMPLATE",
113
105
  :description => "Full path to location of template to use",
114
- :proc => Proc.new { |t| Chef::Config[:knife][:template_file] = t },
115
106
  :default => false
116
107
 
117
108
  option :run_list,
@@ -127,7 +118,6 @@ class Chef
127
118
  if readable
128
119
  Chef::Log.debug("sshd accepting connections on #{hostname}, banner is #{tcp_socket.gets}")
129
120
  yield
130
- true
131
121
  else
132
122
  false
133
123
  end
@@ -149,21 +139,21 @@ class Chef
149
139
  def run
150
140
  $stdout.sync = true
151
141
 
152
- unless Chef::Config[:knife][:image]
142
+ unless locate_config_value(:image)
153
143
  ui.error("You have not provided a valid image value. Please note the short option for this value recently changed from '-i' to '-I'.")
154
144
  exit 1
155
145
  end
156
146
 
157
147
  options = {
158
- :vps_type => Chef::Config[:knife][:server_type],
159
- :vps_memory => Chef::Config[:knife][:server_memory],
160
- :vps_memory_max => Chef::Config[:knife][:server_memory_max],
161
- :vps_hdd => Chef::Config[:knife][:server_disk],
162
- :vps_admin => Chef::Config[:knife][:server_support_level],
163
- :vps_os => Chef::Config[:knife][:image]
148
+ :vps_type => locate_config_value(:server_type),
149
+ :vps_memory => locate_config_value(:server_memory),
150
+ :vps_memory_max => locate_config_value(:server_memory_max),
151
+ :vps_hdd => locate_config_value(:server_disk),
152
+ :vps_admin => locate_config_value(:server_support_level),
153
+ :vps_os => locate_config_value(:image)
164
154
  }
165
155
 
166
- options[:name] = config[:server_name] if config[:server_name]
156
+ options[:vps_title] = config[:server_name] if config[:server_name]
167
157
 
168
158
  server = connection.servers.create(options)
169
159
 
@@ -176,25 +166,28 @@ class Chef
176
166
  print "\n#{ui.color("Waiting server", :magenta)}"
177
167
 
178
168
  # wait for it to be ready to do stuff
179
- server.wait_for { print "."; ready? }
169
+ server.wait_for(600, 10) do print "."; ready? end
180
170
 
181
171
  puts("\n")
182
172
 
183
- puts "#{ui.color("Public DNS Name", :cyan)}: #{public_dns_name(server)}"
184
173
  puts "#{ui.color("Public IP Address", :cyan)}: #{server.public_ip_address}"
185
174
  puts "#{ui.color("Password", :cyan)}: #{server.password}"
186
175
 
187
176
  print "\n#{ui.color("Waiting for sshd", :magenta)}"
188
177
 
189
- print(".") until tcp_test_ssh(server.public_ip_address) { sleep @initial_sleep_delay ||= config[:bootstrap_delay].to_i; puts("done") }
178
+ print(".") until tcp_test_ssh(server.public_ip_address) { sleep @initial_sleep_delay ||= config[:bootstrap_delay].to_i; true; }
179
+
180
+ if File::exists? "#{ENV['HOME']}/.ssh/id_rsa.pub"
181
+ server.public_key_path = "#{ENV['HOME']}/.ssh/id_rsa.pub"
182
+ server.setup({:password => server.password})
183
+ end
190
184
 
191
- bootstrap_for_node(server).run
185
+ bootstrap_for_node(server).run if locate_config_value(:distro) || locate_config_value(:template_file)
192
186
 
193
187
  puts "\n"
194
188
  puts "#{ui.color("Instance ID", :cyan)}: #{server.id}"
195
189
  puts "#{ui.color("Name", :cyan)}: #{server.name}"
196
190
  puts "#{ui.color("Image", :cyan)}: #{server.image}"
197
- puts "#{ui.color("Public DNS Name", :cyan)}: #{public_dns_name(server)}"
198
191
  puts "#{ui.color("Public IP Address", :cyan)}: #{server.public_ip_address}"
199
192
  puts "#{ui.color("Password", :cyan)}: #{server.password}"
200
193
  puts "#{ui.color("Environment", :cyan)}: #{config[:environment] || '_default'}"
@@ -203,7 +196,7 @@ class Chef
203
196
 
204
197
  def bootstrap_for_node(server)
205
198
  bootstrap = Chef::Knife::Bootstrap.new
206
- bootstrap.name_args = [public_dns_name(server)]
199
+ bootstrap.name_args = [server.public_ip_address]
207
200
  bootstrap.config[:run_list] = config[:run_list]
208
201
  bootstrap.config[:ssh_user] = config[:ssh_user] || "root"
209
202
  bootstrap.config[:ssh_password] = server.password
@@ -213,7 +206,9 @@ class Chef
213
206
  bootstrap.config[:bootstrap_version] = locate_config_value(:bootstrap_version)
214
207
  # bootstrap will run as root...sudo (by default) also messes up Ohai on CentOS boxes
215
208
  bootstrap.config[:use_sudo] = true unless config[:ssh_user] == 'root'
216
- bootstrap.config[:environment] = config[:environment]
209
+ bootstrap.config[:environment] = locate_config_value(:environment)
210
+ bootstrap.config[:distro] = locate_config_value(:distro)
211
+ bootstrap.config[:template_file] = locate_config_value(:template_file)
217
212
  bootstrap
218
213
  end
219
214
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-clodo
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease: false
4
+ hash: 19
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
9
+ - 4
10
+ version: 0.1.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Stepan G. Fedorov
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-10-06 00:00:00 +04:00
19
- default_executable:
18
+ date: 2011-10-24 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: fog
@@ -26,12 +25,12 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 55
28
+ hash: 51
30
29
  segments:
31
30
  - 0
32
- - 10
31
+ - 11
33
32
  - 0
34
- version: 0.10.0
33
+ version: 0.11.0
35
34
  type: :runtime
36
35
  version_requirements: *id001
37
36
  description: "\tKnife plugin for Clodo.Ru cloud provider.\n"
@@ -54,7 +53,6 @@ files:
54
53
  - lib/chef/knife/clodo_server_reboot.rb
55
54
  - lib/chef/knife/clodo_server_start.rb
56
55
  - lib/chef/knife/clodo_server_stop.rb
57
- has_rdoc: true
58
56
  homepage: http://clodo.ru/
59
57
  licenses: []
60
58
 
@@ -84,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
82
  requirements: []
85
83
 
86
84
  rubyforge_project:
87
- rubygems_version: 1.3.7
85
+ rubygems_version: 1.7.2
88
86
  signing_key:
89
87
  specification_version: 3
90
88
  summary: Clodo.Ru knife plugin