nephele 0.1.13 → 0.1.14
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/Gemfile +3 -2
- data/VERSION +1 -1
- data/bin/neph +15 -8
- data/bin/nephele +15 -8
- data/lib/nephele/rackspace.rb +20 -2
- data/nephele.gemspec +11 -12
- metadata +67 -104
data/Gemfile
CHANGED
@@ -4,15 +4,16 @@ gem 'rake'
|
|
4
4
|
gem 'cloudservers', '~>0.4'
|
5
5
|
gem 'awesome_print'
|
6
6
|
gem 'optitron'
|
7
|
+
gem 'sexp_processor', '~>3.0.5'
|
7
8
|
|
8
9
|
group :development do
|
9
10
|
gem 'wirble'
|
10
11
|
gem 'shoulda'
|
11
12
|
gem 'mocha'
|
12
13
|
gem 'autotest'
|
14
|
+
gem 'ZenTest', '~>4.4.1'
|
13
15
|
gem 'autotest-fsevent'
|
14
16
|
gem 'autotest-growl'
|
15
|
-
gem '
|
16
|
-
gem 'jeweler', '~>1.5.2'
|
17
|
+
gem 'jeweler'
|
17
18
|
end
|
18
19
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.14
|
data/bin/neph
CHANGED
@@ -18,6 +18,7 @@ class Nephele::Runner < Optitron::CLI
|
|
18
18
|
class_opt 'personality', 'comma-separated tuple of contents,targetfile to be placed at startup', :type => :string
|
19
19
|
class_opt 'bootstrap', "optional bootstrapper URI, defaults to #{JODELL_CHEF_BOOTSTRAPPER}", :type => :string
|
20
20
|
class_opt 'recipe', 'run this recipe after bootstrapping', :type => :string
|
21
|
+
class_opt 'branch', 'Use this branch of a bootstrapper git repo', :type => :string
|
21
22
|
class_opt 'vpn-credential-file', 'specify a vpnpass file to seed the target vm', :type => :string
|
22
23
|
class_opt 'prestrap', 'Executes a command or the contents of a file on a VM prior to bootstrapping', :type => :string
|
23
24
|
|
@@ -50,7 +51,7 @@ class Nephele::Runner < Optitron::CLI
|
|
50
51
|
personality[vpnfile] = '/root/.vpnpass'
|
51
52
|
end
|
52
53
|
(params['count'] || 1).to_i.times do |i|
|
53
|
-
@node = service.
|
54
|
+
@node = service.build_and_wait \
|
54
55
|
:name => name + "#{params['count'] ? i + 1 : ''}",
|
55
56
|
:image => Nephele::Rackspace.image_lookup(image),
|
56
57
|
:flavor => flavor,
|
@@ -60,6 +61,7 @@ class Nephele::Runner < Optitron::CLI
|
|
60
61
|
|
61
62
|
desc 'Save an image of the node'
|
62
63
|
def save(nodename, savename)
|
64
|
+
puts "Saving #{nodename} -> #{savename}"
|
63
65
|
service.server_objs.find { |s| s.name == nodename }.create_image savename
|
64
66
|
end
|
65
67
|
|
@@ -100,16 +102,21 @@ class Nephele::Runner < Optitron::CLI
|
|
100
102
|
node_run "curl -L #{bootstrap} > boot && chmod +x boot && ./boot #{params['cookbooks'] || ''}"
|
101
103
|
# This is inaccurate. Prestrapping is just for changing chef-solo's verbosity.
|
102
104
|
#
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
105
|
+
if params['recipe']
|
106
|
+
recipe_cmd = params['prestrap'] ? prestrap_cmd + ' && ' : ''
|
107
|
+
recipe_cmd += [
|
108
|
+
"cd -P /var/chef/cookbooks && git fetch && git reset --hard HEAD && git clean -fd",
|
109
|
+
"git checkout -f #{params['branch'] || 'master'} && git pull -q",
|
110
|
+
"(bundle check || bundle install) && bundle exec rake run[#{params['recipe']}]"
|
111
|
+
] * ' && '
|
112
|
+
node_run recipe_cmd
|
113
|
+
end
|
108
114
|
end
|
109
115
|
|
110
116
|
def node_run(cmd)
|
111
|
-
|
112
|
-
|
117
|
+
node_cmd = %[time ssh -o "StrictHostKeyChecking=no" -A root@#{@node.addresses[:public].first} "#{cmd}"]
|
118
|
+
puts "Running #{node_cmd}" if ENV['verbose']
|
119
|
+
system node_cmd
|
113
120
|
end
|
114
121
|
|
115
122
|
def prestrap_cmd
|
data/bin/nephele
CHANGED
@@ -18,6 +18,7 @@ class Nephele::Runner < Optitron::CLI
|
|
18
18
|
class_opt 'personality', 'comma-separated tuple of contents,targetfile to be placed at startup', :type => :string
|
19
19
|
class_opt 'bootstrap', "optional bootstrapper URI, defaults to #{JODELL_CHEF_BOOTSTRAPPER}", :type => :string
|
20
20
|
class_opt 'recipe', 'run this recipe after bootstrapping', :type => :string
|
21
|
+
class_opt 'branch', 'Use this branch of a bootstrapper git repo', :type => :string
|
21
22
|
class_opt 'vpn-credential-file', 'specify a vpnpass file to seed the target vm', :type => :string
|
22
23
|
class_opt 'prestrap', 'Executes a command or the contents of a file on a VM prior to bootstrapping', :type => :string
|
23
24
|
|
@@ -50,7 +51,7 @@ class Nephele::Runner < Optitron::CLI
|
|
50
51
|
personality[vpnfile] = '/root/.vpnpass'
|
51
52
|
end
|
52
53
|
(params['count'] || 1).to_i.times do |i|
|
53
|
-
@node = service.
|
54
|
+
@node = service.build_and_wait \
|
54
55
|
:name => name + "#{params['count'] ? i + 1 : ''}",
|
55
56
|
:image => Nephele::Rackspace.image_lookup(image),
|
56
57
|
:flavor => flavor,
|
@@ -60,6 +61,7 @@ class Nephele::Runner < Optitron::CLI
|
|
60
61
|
|
61
62
|
desc 'Save an image of the node'
|
62
63
|
def save(nodename, savename)
|
64
|
+
puts "Saving #{nodename} -> #{savename}"
|
63
65
|
service.server_objs.find { |s| s.name == nodename }.create_image savename
|
64
66
|
end
|
65
67
|
|
@@ -100,16 +102,21 @@ class Nephele::Runner < Optitron::CLI
|
|
100
102
|
node_run "curl -L #{bootstrap} > boot && chmod +x boot && ./boot #{params['cookbooks'] || ''}"
|
101
103
|
# This is inaccurate. Prestrapping is just for changing chef-solo's verbosity.
|
102
104
|
#
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
105
|
+
if params['recipe']
|
106
|
+
recipe_cmd = params['prestrap'] ? prestrap_cmd + ' && ' : ''
|
107
|
+
recipe_cmd += [
|
108
|
+
"cd -P /var/chef/cookbooks && git fetch && git reset --hard HEAD && git clean -fd",
|
109
|
+
"git checkout -f #{params['branch'] || 'master'} && git pull -q",
|
110
|
+
"(bundle check || bundle install) && bundle exec rake run[#{params['recipe']}]"
|
111
|
+
] * ' && '
|
112
|
+
node_run recipe_cmd
|
113
|
+
end
|
108
114
|
end
|
109
115
|
|
110
116
|
def node_run(cmd)
|
111
|
-
|
112
|
-
|
117
|
+
node_cmd = %[time ssh -o "StrictHostKeyChecking=no" -A root@#{@node.addresses[:public].first} "#{cmd}"]
|
118
|
+
puts "Running #{node_cmd}" if ENV['verbose']
|
119
|
+
system node_cmd
|
113
120
|
end
|
114
121
|
|
115
122
|
def prestrap_cmd
|
data/lib/nephele/rackspace.rb
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
require 'tempfile'
|
2
|
+
require 'net/http'
|
2
3
|
|
3
4
|
class Nephele::Rackspace < Nephele::Base
|
4
5
|
attr_reader :nodes
|
6
|
+
attr_accessor :timeout
|
5
7
|
|
6
8
|
def initialize(opts = {})
|
7
9
|
super
|
10
|
+
@timeout = opts[:timeout] || 180
|
8
11
|
populate!
|
9
12
|
end
|
10
13
|
|
@@ -33,11 +36,26 @@ class Nephele::Rackspace < Nephele::Base
|
|
33
36
|
:imageId => images_id_for_name(opts[:image]),
|
34
37
|
:flavorId => flavors_id_for_name(opts[:flavor]),
|
35
38
|
:personality => opts[:personality] || ''
|
36
|
-
puts "Server pass: #{rack_node.adminPass}, ip #{rack_node.addresses[:public]}"
|
39
|
+
puts "Server pass: #{rack_node.adminPass}, ip #{rack_node.addresses[:public].first}"
|
37
40
|
register!(rack_node)
|
38
41
|
rack_node
|
39
42
|
end
|
40
43
|
|
44
|
+
def build_and_wait(opts)
|
45
|
+
rack_node = create(opts)
|
46
|
+
t1 = Time.now
|
47
|
+
begin
|
48
|
+
Timeout::timeout(@timeout) do
|
49
|
+
sleep 2 while rack_node.refresh && rack_node.status != 'ACTIVE'
|
50
|
+
sleep 2 while !(TCPSocket.new(rack_node.addresses[:public].first, 22) rescue nil)
|
51
|
+
end
|
52
|
+
rescue Timeout::Error
|
53
|
+
puts "Server creation timed out after #{@timeout} seconds!"
|
54
|
+
end
|
55
|
+
puts "#{rack_node.status}: #{Time.now - t1}" if ENV['verbose']
|
56
|
+
rack_node
|
57
|
+
end
|
58
|
+
|
41
59
|
def destroy(opts)
|
42
60
|
id = servers_id_for_name(opts[:name])
|
43
61
|
CloudServers::Server.new(conn, id).delete!
|
@@ -70,7 +88,7 @@ class Nephele::Rackspace < Nephele::Base
|
|
70
88
|
s.status.ljust(max_status),
|
71
89
|
s.progress.to_s.ljust(max_progress),
|
72
90
|
s.flavor.name.ljust(10),
|
73
|
-
"#{s.addresses[:public]}\n"
|
91
|
+
"#{s.addresses[:public].first}\n"
|
74
92
|
] * ' '
|
75
93
|
end
|
76
94
|
header + info
|
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.
|
8
|
+
s.version = "0.1.14"
|
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-
|
12
|
+
s.date = %q{2011-10-19}
|
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"]
|
@@ -40,10 +40,6 @@ Gem::Specification.new do |s|
|
|
40
40
|
s.require_paths = ["lib"]
|
41
41
|
s.rubygems_version = %q{1.6.1}
|
42
42
|
s.summary = %q{Light administration utility for popular cloud services}
|
43
|
-
s.test_files = [
|
44
|
-
"test/helper.rb",
|
45
|
-
"test/tc_base.rb"
|
46
|
-
]
|
47
43
|
|
48
44
|
if s.respond_to? :specification_version then
|
49
45
|
s.specification_version = 3
|
@@ -53,41 +49,44 @@ Gem::Specification.new do |s|
|
|
53
49
|
s.add_runtime_dependency(%q<cloudservers>, ["~> 0.4"])
|
54
50
|
s.add_runtime_dependency(%q<awesome_print>, [">= 0"])
|
55
51
|
s.add_runtime_dependency(%q<optitron>, [">= 0"])
|
52
|
+
s.add_runtime_dependency(%q<sexp_processor>, ["~> 3.0.5"])
|
56
53
|
s.add_development_dependency(%q<wirble>, [">= 0"])
|
57
54
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
58
55
|
s.add_development_dependency(%q<mocha>, [">= 0"])
|
59
56
|
s.add_development_dependency(%q<autotest>, [">= 0"])
|
57
|
+
s.add_development_dependency(%q<ZenTest>, ["~> 4.4.1"])
|
60
58
|
s.add_development_dependency(%q<autotest-fsevent>, [">= 0"])
|
61
59
|
s.add_development_dependency(%q<autotest-growl>, [">= 0"])
|
62
|
-
s.add_development_dependency(%q<
|
63
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
60
|
+
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
64
61
|
else
|
65
62
|
s.add_dependency(%q<rake>, [">= 0"])
|
66
63
|
s.add_dependency(%q<cloudservers>, ["~> 0.4"])
|
67
64
|
s.add_dependency(%q<awesome_print>, [">= 0"])
|
68
65
|
s.add_dependency(%q<optitron>, [">= 0"])
|
66
|
+
s.add_dependency(%q<sexp_processor>, ["~> 3.0.5"])
|
69
67
|
s.add_dependency(%q<wirble>, [">= 0"])
|
70
68
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
71
69
|
s.add_dependency(%q<mocha>, [">= 0"])
|
72
70
|
s.add_dependency(%q<autotest>, [">= 0"])
|
71
|
+
s.add_dependency(%q<ZenTest>, ["~> 4.4.1"])
|
73
72
|
s.add_dependency(%q<autotest-fsevent>, [">= 0"])
|
74
73
|
s.add_dependency(%q<autotest-growl>, [">= 0"])
|
75
|
-
s.add_dependency(%q<
|
76
|
-
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
74
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
77
75
|
end
|
78
76
|
else
|
79
77
|
s.add_dependency(%q<rake>, [">= 0"])
|
80
78
|
s.add_dependency(%q<cloudservers>, ["~> 0.4"])
|
81
79
|
s.add_dependency(%q<awesome_print>, [">= 0"])
|
82
80
|
s.add_dependency(%q<optitron>, [">= 0"])
|
81
|
+
s.add_dependency(%q<sexp_processor>, ["~> 3.0.5"])
|
83
82
|
s.add_dependency(%q<wirble>, [">= 0"])
|
84
83
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
85
84
|
s.add_dependency(%q<mocha>, [">= 0"])
|
86
85
|
s.add_dependency(%q<autotest>, [">= 0"])
|
86
|
+
s.add_dependency(%q<ZenTest>, ["~> 4.4.1"])
|
87
87
|
s.add_dependency(%q<autotest-fsevent>, [">= 0"])
|
88
88
|
s.add_dependency(%q<autotest-growl>, [">= 0"])
|
89
|
-
s.add_dependency(%q<
|
90
|
-
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
89
|
+
s.add_dependency(%q<jeweler>, [">= 0"])
|
91
90
|
end
|
92
91
|
end
|
93
92
|
|
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nephele
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 1
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 1
|
9
|
-
- 13
|
10
|
-
version: 0.1.13
|
5
|
+
version: 0.1.14
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Jeffrey O'Dell
|
@@ -15,180 +10,152 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
13
|
+
date: 2011-10-19 00:00:00 -05:00
|
19
14
|
default_executable:
|
20
15
|
dependencies:
|
21
16
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
17
|
+
name: rake
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
19
|
none: false
|
24
20
|
requirements:
|
25
21
|
- - ">="
|
26
22
|
- !ruby/object:Gem::Version
|
27
|
-
hash: 3
|
28
|
-
segments:
|
29
|
-
- 0
|
30
23
|
version: "0"
|
31
|
-
prerelease: false
|
32
24
|
type: :runtime
|
33
|
-
|
34
|
-
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: *id001
|
35
27
|
- !ruby/object:Gem::Dependency
|
36
|
-
|
28
|
+
name: cloudservers
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
37
30
|
none: false
|
38
31
|
requirements:
|
39
32
|
- - ~>
|
40
33
|
- !ruby/object:Gem::Version
|
41
|
-
hash: 3
|
42
|
-
segments:
|
43
|
-
- 0
|
44
|
-
- 4
|
45
34
|
version: "0.4"
|
46
|
-
prerelease: false
|
47
35
|
type: :runtime
|
48
|
-
|
49
|
-
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *id002
|
50
38
|
- !ruby/object:Gem::Dependency
|
51
|
-
|
39
|
+
name: awesome_print
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
52
41
|
none: false
|
53
42
|
requirements:
|
54
43
|
- - ">="
|
55
44
|
- !ruby/object:Gem::Version
|
56
|
-
hash: 3
|
57
|
-
segments:
|
58
|
-
- 0
|
59
45
|
version: "0"
|
60
|
-
prerelease: false
|
61
46
|
type: :runtime
|
62
|
-
|
63
|
-
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: *id003
|
64
49
|
- !ruby/object:Gem::Dependency
|
65
|
-
|
50
|
+
name: optitron
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
66
52
|
none: false
|
67
53
|
requirements:
|
68
54
|
- - ">="
|
69
55
|
- !ruby/object:Gem::Version
|
70
|
-
hash: 3
|
71
|
-
segments:
|
72
|
-
- 0
|
73
56
|
version: "0"
|
74
|
-
prerelease: false
|
75
57
|
type: :runtime
|
76
|
-
|
77
|
-
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: *id004
|
78
60
|
- !ruby/object:Gem::Dependency
|
79
|
-
|
61
|
+
name: sexp_processor
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
80
63
|
none: false
|
81
64
|
requirements:
|
82
|
-
- -
|
65
|
+
- - ~>
|
83
66
|
- !ruby/object:Gem::Version
|
84
|
-
|
85
|
-
|
86
|
-
- 0
|
87
|
-
version: "0"
|
67
|
+
version: 3.0.5
|
68
|
+
type: :runtime
|
88
69
|
prerelease: false
|
89
|
-
|
90
|
-
requirement: *id005
|
91
|
-
name: wirble
|
70
|
+
version_requirements: *id005
|
92
71
|
- !ruby/object:Gem::Dependency
|
93
|
-
|
72
|
+
name: wirble
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
94
74
|
none: false
|
95
75
|
requirements:
|
96
76
|
- - ">="
|
97
77
|
- !ruby/object:Gem::Version
|
98
|
-
hash: 3
|
99
|
-
segments:
|
100
|
-
- 0
|
101
78
|
version: "0"
|
102
|
-
prerelease: false
|
103
79
|
type: :development
|
104
|
-
|
105
|
-
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: *id006
|
106
82
|
- !ruby/object:Gem::Dependency
|
107
|
-
|
83
|
+
name: shoulda
|
84
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
108
85
|
none: false
|
109
86
|
requirements:
|
110
87
|
- - ">="
|
111
88
|
- !ruby/object:Gem::Version
|
112
|
-
hash: 3
|
113
|
-
segments:
|
114
|
-
- 0
|
115
89
|
version: "0"
|
116
|
-
prerelease: false
|
117
90
|
type: :development
|
118
|
-
|
119
|
-
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: *id007
|
120
93
|
- !ruby/object:Gem::Dependency
|
121
|
-
|
94
|
+
name: mocha
|
95
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
122
96
|
none: false
|
123
97
|
requirements:
|
124
98
|
- - ">="
|
125
99
|
- !ruby/object:Gem::Version
|
126
|
-
hash: 3
|
127
|
-
segments:
|
128
|
-
- 0
|
129
100
|
version: "0"
|
130
|
-
prerelease: false
|
131
101
|
type: :development
|
132
|
-
|
133
|
-
|
102
|
+
prerelease: false
|
103
|
+
version_requirements: *id008
|
134
104
|
- !ruby/object:Gem::Dependency
|
135
|
-
|
105
|
+
name: autotest
|
106
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
136
107
|
none: false
|
137
108
|
requirements:
|
138
109
|
- - ">="
|
139
110
|
- !ruby/object:Gem::Version
|
140
|
-
hash: 3
|
141
|
-
segments:
|
142
|
-
- 0
|
143
111
|
version: "0"
|
112
|
+
type: :development
|
144
113
|
prerelease: false
|
114
|
+
version_requirements: *id009
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: ZenTest
|
117
|
+
requirement: &id010 !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
119
|
+
requirements:
|
120
|
+
- - ~>
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: 4.4.1
|
145
123
|
type: :development
|
146
|
-
|
147
|
-
|
124
|
+
prerelease: false
|
125
|
+
version_requirements: *id010
|
148
126
|
- !ruby/object:Gem::Dependency
|
149
|
-
|
127
|
+
name: autotest-fsevent
|
128
|
+
requirement: &id011 !ruby/object:Gem::Requirement
|
150
129
|
none: false
|
151
130
|
requirements:
|
152
131
|
- - ">="
|
153
132
|
- !ruby/object:Gem::Version
|
154
|
-
hash: 3
|
155
|
-
segments:
|
156
|
-
- 0
|
157
133
|
version: "0"
|
158
|
-
prerelease: false
|
159
134
|
type: :development
|
160
|
-
|
161
|
-
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: *id011
|
162
137
|
- !ruby/object:Gem::Dependency
|
163
|
-
|
138
|
+
name: autotest-growl
|
139
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
164
140
|
none: false
|
165
141
|
requirements:
|
166
142
|
- - ">="
|
167
143
|
- !ruby/object:Gem::Version
|
168
|
-
hash: 3
|
169
|
-
segments:
|
170
|
-
- 0
|
171
144
|
version: "0"
|
172
|
-
prerelease: false
|
173
145
|
type: :development
|
174
|
-
|
175
|
-
|
146
|
+
prerelease: false
|
147
|
+
version_requirements: *id012
|
176
148
|
- !ruby/object:Gem::Dependency
|
177
|
-
|
149
|
+
name: jeweler
|
150
|
+
requirement: &id013 !ruby/object:Gem::Requirement
|
178
151
|
none: false
|
179
152
|
requirements:
|
180
|
-
- -
|
153
|
+
- - ">="
|
181
154
|
- !ruby/object:Gem::Version
|
182
|
-
|
183
|
-
segments:
|
184
|
-
- 1
|
185
|
-
- 5
|
186
|
-
- 2
|
187
|
-
version: 1.5.2
|
188
|
-
prerelease: false
|
155
|
+
version: "0"
|
189
156
|
type: :development
|
190
|
-
|
191
|
-
|
157
|
+
prerelease: false
|
158
|
+
version_requirements: *id013
|
192
159
|
description: Light administration utility for popular cloud services
|
193
160
|
email: jeffrey.odell@gmail.com
|
194
161
|
executables:
|
@@ -231,7 +198,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
231
198
|
requirements:
|
232
199
|
- - ">="
|
233
200
|
- !ruby/object:Gem::Version
|
234
|
-
hash:
|
201
|
+
hash: 565433683656449259
|
235
202
|
segments:
|
236
203
|
- 0
|
237
204
|
version: "0"
|
@@ -240,9 +207,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
240
207
|
requirements:
|
241
208
|
- - ">="
|
242
209
|
- !ruby/object:Gem::Version
|
243
|
-
hash: 3
|
244
|
-
segments:
|
245
|
-
- 0
|
246
210
|
version: "0"
|
247
211
|
requirements: []
|
248
212
|
|
@@ -251,6 +215,5 @@ rubygems_version: 1.6.1
|
|
251
215
|
signing_key:
|
252
216
|
specification_version: 3
|
253
217
|
summary: Light administration utility for popular cloud services
|
254
|
-
test_files:
|
255
|
-
|
256
|
-
- test/tc_base.rb
|
218
|
+
test_files: []
|
219
|
+
|