fog-softlayer 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -7
- data/.gitignore +28 -0
- data/Gemfile +7 -0
- data/Rakefile +225 -1
- data/fog-softlayer.gemspec +15 -5
- data/lib/fog.rb +29 -0
- data/lib/fog/softlayer.rb +8 -0
- data/lib/fog/softlayer/compute.rb +0 -15
- data/lib/fog/softlayer/core.rb +6 -8
- data/lib/fog/softlayer/version.rb +7 -1
- data/spec/fog/compute/softlayer_spec.rb +6 -0
- data/tests/compute/flavors_helper.rb +40 -0
- data/tests/compute/server_helper.rb +33 -0
- data/tests/compute/servers_helper.rb +18 -0
- data/tests/helper.rb +68 -0
- data/tests/helpers/collection_helper.rb +102 -0
- data/tests/helpers/compute/flavors_helper.rb +34 -0
- data/tests/helpers/compute/server_helper.rb +27 -0
- data/tests/helpers/compute/servers_helper.rb +12 -0
- data/tests/helpers/formats_helper.rb +99 -0
- data/tests/helpers/formats_helper_tests.rb +111 -0
- data/tests/helpers/mock_helper.rb +111 -0
- data/tests/helpers/model_helper.rb +35 -0
- data/tests/helpers/responds_to_helper.rb +13 -0
- data/tests/helpers/schema_validator_tests.rb +107 -0
- data/tests/helpers/succeeds_helper.rb +11 -0
- data/tests/lorem.txt +1 -0
- data/tests/softlayer/compute/helper.rb +7 -0
- data/tests/softlayer/compute/schema.rb +133 -0
- data/tests/softlayer/compute_tests.rb +34 -0
- data/tests/softlayer/helper.rb +9 -0
- data/tests/softlayer/models/compute/flavor_tests.rb +24 -0
- data/tests/softlayer/models/compute/image_tests.rb +25 -0
- data/tests/softlayer/models/compute/server_tests.rb +80 -0
- data/tests/softlayer/requests/compute/bmc_tests.rb +62 -0
- data/tests/softlayer/requests/compute/vm_tests.rb +90 -0
- metadata +254 -59
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
|
-
---
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
YjY5ZGRiZWQ0NGZlNTRjMTJmZjNjYTU5ODU4MGI3ZTA4NjQxM2M5Mg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ODkzYmYxMWZjODc1OWViZjdiMjNiMjgyMjk0ZWZjYTVkOTcwMzE4MQ==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
OGYyYTkxMTMwOWMzMGY1ZWQyMDZiMDVjM2JlZGY2ZGFkMDQ2NDA2ZWY0Njk4
|
10
|
+
YTFjNDFhMDYxMzMxMjdjZTM3MmZiNzY4NTliMTg0NjFlYzMyZjM3ZDQ3MzM3
|
11
|
+
ZDI0YWI5ODBmNDZkNWI4MzJjMzY5OGE4MmFhNGE0Nzg3MWQyZTc=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MDE5OWJmNTQ3YjQyZGNlMTljYTFlMzcwNWEyODJkYmFmOTI3MmI2NzVkMjNi
|
14
|
+
ZjgzMDhlMGQzMmJmNzc0N2ZjOGQ0YWI0NjAyOTVkZDdhM2Y5NWJkMGRhMGRk
|
15
|
+
MmIyNDI2YzQyMjIyYzNkNjU4NTg3MTdiYjQ5MzcwN2EzOWI3NGU=
|
data/.gitignore
CHANGED
@@ -1 +1,29 @@
|
|
1
|
+
.idea*
|
2
|
+
*~
|
3
|
+
*.gem
|
4
|
+
*.rbc
|
5
|
+
*.sw?
|
6
|
+
.rbenv
|
7
|
+
.rvmrc
|
8
|
+
.ruby-gemset
|
9
|
+
.ruby-version
|
10
|
+
.bundle
|
11
|
+
.DS_Store
|
12
|
+
.idea
|
13
|
+
.yardoc
|
14
|
+
/tests/.fog
|
15
|
+
bin/*
|
16
|
+
!bin/fog
|
17
|
+
.fog
|
18
|
+
coverage
|
19
|
+
doc/*
|
20
|
+
docs/_site/*
|
21
|
+
docs/about/supported_services.markdown
|
1
22
|
Gemfile.lock
|
23
|
+
gemfiles/*.lock
|
24
|
+
yardoc
|
25
|
+
pkg
|
26
|
+
spec/credentials.yml
|
27
|
+
vendor/*
|
28
|
+
tags
|
29
|
+
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -9,8 +9,232 @@
|
|
9
9
|
require "bundler/gem_tasks"
|
10
10
|
require "rake/testtask"
|
11
11
|
|
12
|
+
#task :default => :test
|
13
|
+
#
|
14
|
+
#Rake::TestTask.new do |t|
|
15
|
+
# t.pattern = File.join("spec", "**", "*_spec.rb")
|
16
|
+
#end
|
17
|
+
|
18
|
+
require 'bundler/setup'
|
19
|
+
require 'rake/testtask'
|
20
|
+
require 'date'
|
21
|
+
require 'rubygems'
|
22
|
+
require 'rubygems/package_task'
|
23
|
+
require 'yard'
|
24
|
+
require File.dirname(__FILE__) + '/lib/fog'
|
25
|
+
|
26
|
+
#############################################################################
|
27
|
+
#
|
28
|
+
# Helper functions
|
29
|
+
#
|
30
|
+
#############################################################################
|
31
|
+
|
32
|
+
def name
|
33
|
+
@name ||= Dir['*.gemspec'].first.split('.').first
|
34
|
+
end
|
35
|
+
|
36
|
+
def version
|
37
|
+
Fog::VERSION
|
38
|
+
end
|
39
|
+
|
40
|
+
def date
|
41
|
+
Date.today.to_s
|
42
|
+
end
|
43
|
+
|
44
|
+
def rubyforge_project
|
45
|
+
name
|
46
|
+
end
|
47
|
+
|
48
|
+
def gemspec_file
|
49
|
+
"#{name}.gemspec"
|
50
|
+
end
|
51
|
+
|
52
|
+
def gem_file
|
53
|
+
"#{name}-#{version}.gem"
|
54
|
+
end
|
55
|
+
|
56
|
+
def replace_header(head, header_name)
|
57
|
+
head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
|
58
|
+
end
|
59
|
+
|
60
|
+
#############################################################################
|
61
|
+
#
|
62
|
+
# Standard tasks
|
63
|
+
#
|
64
|
+
#############################################################################
|
65
|
+
|
66
|
+
GEM_NAME = "#{name}"
|
12
67
|
task :default => :test
|
68
|
+
task :travis => ['test', 'test:travis', 'coveralls_push_workaround']
|
13
69
|
|
14
70
|
Rake::TestTask.new do |t|
|
15
|
-
t.pattern = File.join("spec", "**", "*_spec.rb")
|
71
|
+
t.pattern = File.join("**", "spec", "**", "*_spec.rb")
|
72
|
+
end
|
73
|
+
|
74
|
+
namespace :test do
|
75
|
+
mock = 'true' || ENV['FOG_MOCK']
|
76
|
+
task :travis do
|
77
|
+
# jruby coveralls causes an OOM in travis
|
78
|
+
ENV['COVERAGE'] = 'false' if RUBY_PLATFORM == 'java'
|
79
|
+
sh("export FOG_MOCK=#{mock} && bundle exec shindont")
|
80
|
+
end
|
81
|
+
task :vsphere do
|
82
|
+
sh("export FOG_MOCK=#{mock} && bundle exec shindont tests/vsphere")
|
83
|
+
end
|
84
|
+
task :openvz do
|
85
|
+
sh("export FOG_MOCK=#{mock} && bundle exec shindont tests/openvz")
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
desc 'Run mocked tests for a specific provider'
|
90
|
+
task :mock, :provider do |t, args|
|
91
|
+
if args.to_a.size != 1
|
92
|
+
fail 'USAGE: rake mock[<provider>]'
|
93
|
+
end
|
94
|
+
provider = args[:provider]
|
95
|
+
sh("export FOG_MOCK=true && bundle exec shindont tests/#{provider}")
|
96
|
+
end
|
97
|
+
|
98
|
+
desc 'Run live tests against a specific provider'
|
99
|
+
task :live, :provider do |t, args|
|
100
|
+
if args.to_a.size != 1
|
101
|
+
fail 'USAGE: rake live[<provider>]'
|
102
|
+
end
|
103
|
+
provider = args[:provider]
|
104
|
+
sh("export FOG_MOCK=false PROVIDER=#{provider} && bundle exec shindont tests/#{provider}")
|
105
|
+
end
|
106
|
+
|
107
|
+
task :nuke do
|
108
|
+
Fog.providers.each do |provider|
|
109
|
+
next if ['Vmfusion'].include?(provider)
|
110
|
+
begin
|
111
|
+
compute = Fog::Compute.new(:provider => provider)
|
112
|
+
for server in compute.servers
|
113
|
+
Formatador.display_line("[#{provider}] destroying server #{server.identity}")
|
114
|
+
server.destroy rescue nil
|
115
|
+
end
|
116
|
+
rescue
|
117
|
+
end
|
118
|
+
begin
|
119
|
+
dns = Fog::DNS.new(:provider => provider)
|
120
|
+
for zone in dns.zones
|
121
|
+
for record in zone.records
|
122
|
+
record.destroy rescue nil
|
123
|
+
end
|
124
|
+
Formatador.display_line("[#{provider}] destroying zone #{zone.identity}")
|
125
|
+
zone.destroy rescue nil
|
126
|
+
end
|
127
|
+
rescue
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
desc "Open an irb session preloaded with this library"
|
133
|
+
task :console do
|
134
|
+
sh "irb -rubygems -r ./lib/#{name}.rb"
|
135
|
+
end
|
136
|
+
|
137
|
+
#############################################################################
|
138
|
+
#
|
139
|
+
# Packaging tasks
|
140
|
+
#
|
141
|
+
#############################################################################
|
142
|
+
|
143
|
+
task :release => ["release:prepare", "release:publish"]
|
144
|
+
|
145
|
+
namespace :release do
|
146
|
+
task :preflight do
|
147
|
+
unless `git branch` =~ /^\* master$/
|
148
|
+
puts "You must be on the master branch to release!"
|
149
|
+
exit!
|
150
|
+
end
|
151
|
+
if `git tag` =~ /^\* v#{version}$/
|
152
|
+
puts "Tag v#{version} already exists!"
|
153
|
+
exit!
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
task :prepare => :preflight do
|
158
|
+
Rake::Task[:build].invoke
|
159
|
+
sh "gem install pkg/#{name}-#{version}.gem"
|
160
|
+
Rake::Task[:git_mark_release].invoke
|
161
|
+
end
|
162
|
+
|
163
|
+
task :publish do
|
164
|
+
Rake::Task[:git_push_release].invoke
|
165
|
+
Rake::Task[:gem_push].invoke
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
task :git_mark_release do
|
170
|
+
sh "git commit --allow-empty -a -m 'Release #{version}'"
|
171
|
+
sh "git tag v#{version}"
|
172
|
+
end
|
173
|
+
|
174
|
+
task :git_push_release do
|
175
|
+
sh "git push origin master"
|
176
|
+
sh "git push origin v#{version}"
|
177
|
+
end
|
178
|
+
|
179
|
+
task :gem_push do
|
180
|
+
sh "gem push pkg/#{name}-#{version}.gem"
|
181
|
+
end
|
182
|
+
|
183
|
+
desc "Build fog-#{version}.gem"
|
184
|
+
task :build => :gemspec do
|
185
|
+
sh "mkdir -p pkg"
|
186
|
+
sh "gem build #{gemspec_file}"
|
187
|
+
sh "mv #{gem_file} pkg"
|
188
|
+
end
|
189
|
+
task :gem => :build
|
190
|
+
|
191
|
+
desc "Updates the gemspec and runs 'validate'"
|
192
|
+
task :gemspec => :validate do
|
193
|
+
# read spec file and split out manifest section
|
194
|
+
spec = File.read(gemspec_file)
|
195
|
+
|
196
|
+
# replace name version and date
|
197
|
+
replace_header(spec, :name)
|
198
|
+
replace_header(spec, :version)
|
199
|
+
replace_header(spec, :date)
|
200
|
+
#comment this out if your rubyforge_project has a different name
|
201
|
+
replace_header(spec, :rubyforge_project)
|
202
|
+
|
203
|
+
File.open(gemspec_file, 'w') { |io| io.write(spec) }
|
204
|
+
puts "Updated #{gemspec_file}"
|
205
|
+
end
|
206
|
+
|
207
|
+
desc "Run before pushing out the code"
|
208
|
+
task :validate do
|
209
|
+
libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{name}", "lib/tasks"]
|
210
|
+
unless libfiles.empty?
|
211
|
+
puts "Directory `lib` should only contain a `#{name}.rb` file and `#{name}` dir."
|
212
|
+
exit!
|
213
|
+
end
|
214
|
+
unless Dir['VERSION*'].empty?
|
215
|
+
puts "A `VERSION` file at root level violates Gem best practices."
|
216
|
+
exit!
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
220
|
+
# Include Yard tasks for rake yard
|
221
|
+
YARDOC_LOCATION = "doc"
|
222
|
+
YARD::Rake::YardocTask.new do |t|
|
223
|
+
t.files = ['lib/**/*.rb', "README"]
|
224
|
+
t.options = ["--output-dir", YARDOC_LOCATION, "--title", "#{name} #{version}"]
|
225
|
+
end
|
226
|
+
|
227
|
+
require "tasks/changelog_task"
|
228
|
+
Fog::Rake::ChangelogTask.new
|
229
|
+
|
230
|
+
require "tasks/github_release_task"
|
231
|
+
Fog::Rake::GithubReleaseTask.new
|
232
|
+
|
233
|
+
task :coveralls_push_workaround do
|
234
|
+
use_coveralls = (Gem::Version.new(RUBY_VERSION) > Gem::Version.new('1.9.2'))
|
235
|
+
if (ENV['COVERAGE'] != 'false') && use_coveralls
|
236
|
+
require 'coveralls/rake/task'
|
237
|
+
Coveralls::RakeTask.new
|
238
|
+
Rake::Task["coveralls:push"].invoke
|
239
|
+
end
|
16
240
|
end
|
data/fog-softlayer.gemspec
CHANGED
@@ -19,10 +19,20 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
20
|
spec.require_paths = ["lib"]
|
21
21
|
|
22
|
-
spec.add_dependency
|
23
|
-
spec.add_dependency
|
22
|
+
spec.add_dependency 'fog'
|
23
|
+
spec.add_dependency 'fog-core'
|
24
|
+
spec.add_dependency 'fog-json'
|
24
25
|
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
-
spec.add_development_dependency
|
26
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
27
|
+
spec.add_development_dependency('minitest')
|
28
|
+
spec.add_development_dependency('jekyll') unless RUBY_PLATFORM == 'java'
|
29
|
+
spec.add_development_dependency('rake')
|
30
|
+
spec.add_development_dependency('rbvmomi')
|
31
|
+
spec.add_development_dependency('yard')
|
32
|
+
spec.add_development_dependency('thor')
|
33
|
+
spec.add_development_dependency('rbovirt', '0.0.24')
|
34
|
+
spec.add_development_dependency('shindo', '~> 0.3.4')
|
35
|
+
spec.add_development_dependency('fission')
|
36
|
+
spec.add_development_dependency('pry')
|
37
|
+
spec.add_development_dependency('google-api-client', '~> 0.6', '>= 0.6.2')
|
28
38
|
end
|
data/lib/fog.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
+
# © Copyright IBM Corporation 2014.
|
4
|
+
#
|
5
|
+
# LICENSE: MIT (http://opensource.org/licenses/MIT)
|
6
|
+
#
|
7
|
+
|
8
|
+
# necessary when requiring fog without rubygems while also
|
9
|
+
# maintaining ruby 1.8.7 support (can't use require_relative)
|
10
|
+
__LIB_DIR__ = File.expand_path(File.dirname(__FILE__))
|
11
|
+
$LOAD_PATH.unshift __LIB_DIR__ unless $LOAD_PATH.include?(__LIB_DIR__)
|
12
|
+
|
13
|
+
# Use fog and core
|
14
|
+
require 'fog/core'
|
15
|
+
require 'fog'
|
16
|
+
|
17
|
+
# Previously treated as "core"
|
18
|
+
# data exchange specific (to be extracted and used on a per provider basis)
|
19
|
+
require 'fog/xml'
|
20
|
+
require 'fog/json'
|
21
|
+
require 'fog/core/parser'
|
22
|
+
|
23
|
+
# deprecation wrappers (XML wrapped version)
|
24
|
+
require 'fog/core/deprecated/connection'
|
25
|
+
require 'fog/core/deprecated_connection_accessors'
|
26
|
+
|
27
|
+
# any one of these can be required separately.
|
28
|
+
# they all depend on fog/core for shared functionality.
|
29
|
+
require 'fog/softlayer'
|
data/lib/fog/softlayer.rb
CHANGED
@@ -21,8 +21,6 @@ module Fog
|
|
21
21
|
recognizes :softlayer_default_domain
|
22
22
|
|
23
23
|
|
24
|
-
#service = File.basename(__FILE__, '.rb')
|
25
|
-
|
26
24
|
model_path 'fog/softlayer/models/compute'
|
27
25
|
collection :flavors
|
28
26
|
model :flavor
|
@@ -31,15 +29,6 @@ module Fog
|
|
31
29
|
collection :servers
|
32
30
|
model :server
|
33
31
|
|
34
|
-
#Fog::Softlayer.loader("models/#{service}") do |basename|
|
35
|
-
# if basename =~ /s$/
|
36
|
-
# collection basename
|
37
|
-
# else
|
38
|
-
# model basename
|
39
|
-
# end
|
40
|
-
#
|
41
|
-
#end
|
42
|
-
|
43
32
|
request_path 'fog/softlayer/requests/compute'
|
44
33
|
request :create_bare_metal_server
|
45
34
|
request :create_vm
|
@@ -51,10 +40,6 @@ module Fog
|
|
51
40
|
request :get_vm
|
52
41
|
request :get_vms
|
53
42
|
|
54
|
-
#Fog::Softlayer.loader("requests/#{service}") do |basename|
|
55
|
-
# request basename
|
56
|
-
#end
|
57
|
-
|
58
43
|
# The Mock Service allows you to run a fake instance of the Service
|
59
44
|
# which makes no real connections.
|
60
45
|
#
|
data/lib/fog/softlayer/core.rb
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Matt Eldridge (<matt.eldridge@us.ibm.com>)
|
3
|
+
# © Copyright IBM Corporation 2014.
|
4
|
+
#
|
5
|
+
# LICENSE: MIT (http://opensource.org/licenses/MIT)
|
6
|
+
#
|
1
7
|
require 'fog/core'
|
2
8
|
require 'fog/json'
|
3
9
|
require 'time'
|
@@ -10,14 +16,6 @@ module Fog
|
|
10
16
|
|
11
17
|
service(:compute, 'Compute')
|
12
18
|
|
13
|
-
def self.loader(service)
|
14
|
-
path = "providers/softlayer/lib/fog/softlayer/#{service}"
|
15
|
-
Dir.entries(path).reject{|e| e =~ /^\./}.each do |file|
|
16
|
-
_request = File.basename(file, '.rb')
|
17
|
-
yield _request.to_sym
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
19
|
def self.mock_account_id
|
22
20
|
Fog.mocking? and @sl_account_id ||= Fog::Mock.random_numbers(7)
|
23
21
|
end
|