fog-softlayer 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.
- 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
|