fog-cloudatcost 0.2.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +21 -35
  3. data/.rubocop.yml +10 -1157
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +11 -25
  7. data/Gemfile +2 -0
  8. data/README.md +0 -1
  9. data/Rakefile +6 -18
  10. data/fog-cloudatcost.gemspec +24 -23
  11. data/lib/fog/cloudatcost.rb +13 -1
  12. data/lib/fog/cloudatcost/compute.rb +20 -18
  13. data/lib/fog/cloudatcost/models/server.rb +6 -6
  14. data/lib/fog/cloudatcost/models/servers.rb +4 -2
  15. data/lib/fog/cloudatcost/models/task.rb +2 -0
  16. data/lib/fog/cloudatcost/models/tasks.rb +4 -2
  17. data/lib/fog/cloudatcost/models/template.rb +2 -0
  18. data/lib/fog/cloudatcost/models/templates.rb +4 -2
  19. data/lib/fog/cloudatcost/requests/console.rb +16 -11
  20. data/lib/fog/cloudatcost/requests/create_server.rb +13 -11
  21. data/lib/fog/cloudatcost/requests/delete_server.rb +13 -11
  22. data/lib/fog/cloudatcost/requests/list_servers.rb +7 -5
  23. data/lib/fog/cloudatcost/requests/list_tasks.rb +7 -5
  24. data/lib/fog/cloudatcost/requests/list_templates.rb +7 -5
  25. data/lib/fog/cloudatcost/requests/power_off.rb +14 -12
  26. data/lib/fog/cloudatcost/requests/power_on.rb +14 -12
  27. data/lib/fog/cloudatcost/requests/rename_server.rb +16 -14
  28. data/lib/fog/cloudatcost/requests/reset.rb +14 -12
  29. data/lib/fog/cloudatcost/requests/reverse_dns.rb +13 -11
  30. data/lib/fog/cloudatcost/requests/run_mode.rb +13 -11
  31. data/lib/fog/cloudatcost/version.rb +3 -1
  32. data/spec/fog/models/server_spec.rb +5 -4
  33. data/spec/fog/models/servers_spec.rb +3 -3
  34. data/spec/fog/models/task_spec.rb +3 -2
  35. data/spec/fog/models/tasks_spec.rb +3 -3
  36. data/spec/fog/models/template_spec.rb +3 -2
  37. data/spec/fog/models/templates_spec.rb +3 -3
  38. data/spec/spec_helper.rb +9 -4
  39. metadata +57 -47
  40. data/.codeclimate.yml +0 -28
  41. data/Gemfile.lock +0 -71
  42. data/lib/fog/cloudatcost/core.rb +0 -9
  43. data/spec/model_setup.rb +0 -14
@@ -0,0 +1 @@
1
+ fog-cloudatcost
@@ -0,0 +1 @@
1
+ 2.5.1
@@ -1,38 +1,24 @@
1
- language: ruby
2
- sudo: false
3
- script: bundle exec rake test
4
- cache: bundler
5
- branches:
6
- except:
7
- - "/\\Av\\d+\\Z/"
1
+ script: bundle exec rake && CODECLIMATE_REPO_TOKEN=412dc14b81fbd1f8d7356deb5feac31a8d69583d00ec1ba18040caf99343ee25 bundle exec codeclimate-test-reporter
8
2
  matrix:
9
3
  fast_finish: true
10
4
  include:
11
- - rvm: 1.9.3
5
+ - rvm: 2.2
12
6
  gemfile: Gemfile
13
- - rvm: 2.0.0
14
- gemfile: Gemfile
15
- - rvm: 2.1.0
16
- gemfile: Gemfile
17
- - rvm: 2.1.1
18
- gemfile: Gemfile
19
- - rvm: 2.1.1
7
+ - rvm: 2.2
20
8
  gemfile: gemfiles/Gemfile-edge
21
- - rvm: 2.2.0
9
+ - rvm: 2.3
22
10
  gemfile: Gemfile
23
- - rvm: 2.2.0
11
+ - rvm: 2.3
24
12
  gemfile: gemfiles/Gemfile-edge
25
- - rvm: 2.3.0
13
+ - rvm: 2.4
26
14
  gemfile: Gemfile
27
- - rvm: 2.3.0
15
+ - rvm: 2.4
28
16
  gemfile: gemfiles/Gemfile-edge
29
- - rvm: jruby-19mode
17
+ - rvm: 2.5
30
18
  gemfile: Gemfile
19
+ - rvm: 2.5
20
+ gemfile: gemfiles/Gemfile-edge
31
21
  - rvm: jruby-head
32
22
  gemfile: Gemfile
33
- allow_failures:
34
23
  - rvm: jruby-head
35
-
36
- addons:
37
- code_climate:
38
- repo_token: 412dc14b81fbd1f8d7356deb5feac31a8d69583d00ec1ba18040caf99343ee25
24
+ gemfile: gemfiles/Gemfile-edge
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'http://rubygems.org'
2
4
 
3
5
  gemspec
data/README.md CHANGED
@@ -1,6 +1,5 @@
1
1
  [![Build Status](https://travis-ci.org/fog/fog-cloudatcost.svg?branch=master)](https://travis-ci.org/fog/fog-cloudatcost)
2
2
  [![Code Climate](https://codeclimate.com/github/fog/fog-cloudatcost/badges/gpa.svg)](https://codeclimate.com/github/fog/fog-cloudatcost)
3
- [![Dependency Status](https://gemnasium.com/fog/fog-cloudatcost.svg)](https://gemnasium.com/fog/fog-cloudatcost)
4
3
 
5
4
  # fog-cloudatcost
6
5
  Module for the 'fog' gem to support Amazon Web Services http://panel.cloudatcost.com/
data/Rakefile CHANGED
@@ -1,21 +1,9 @@
1
- require 'bundler/gem_tasks'
2
-
1
+ # frozen_string_literal: true
3
2
 
4
- require 'rubygems'
5
- require 'bundler/setup'
6
- require 'rake/testtask'
7
-
8
- task :test do
9
- sh("bundle exec rspec")
10
- end
11
-
12
- require_relative 'lib/fog/cloudatcost'
13
-
14
- task :default => :test
15
- mock = ENV['FOG_MOCK'] || 'true'
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
16
5
 
17
- namespace :test do
18
- task :travis do
19
- sh("export FOG_MOCK=#{mock} && bundle exec rspec")
20
- end
6
+ RSpec::Core::RakeTask.new(:spec) do |t|
7
+ t.pattern = Dir.glob('spec/**/*_spec.rb')
21
8
  end
9
+ task default: :spec
@@ -1,32 +1,33 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('../lib', __FILE__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require 'fog/cloudatcost/version'
4
6
 
5
-
6
7
  Gem::Specification.new do |spec|
7
- spec.name = 'fog-cloudatcost'
8
- spec.version = Fog::CloudAtCost::VERSION
9
- spec.authors = ["Suraj Shirvankar"]
10
- spec.email = ["surajshirvankar@gmail.com"]
11
- spec.summary = %q{Module for the 'fog' gem to support CloudAtCost.}
12
- spec.description = %q{This library can be used as a module for `fog` or as standalone provider
13
- to use the Amazon Web Services in applications..}
14
- spec.homepage = 'http://github.com/fog/fog-cloudatcost'
15
- spec.license = 'MIT'
8
+ spec.name = 'fog-cloudatcost'
9
+ spec.version = Fog::CloudAtCost::VERSION
10
+ spec.authors = ['Suraj Shirvankar']
11
+ spec.email = ['surajshirvankar@gmail.com']
12
+ spec.summary = "Module for the 'fog' gem to support CloudAtCost."
13
+ spec.description =
14
+ 'This library can be used as a module for `fog` or as standalone provider to use the CloudAtCost in applications.'
15
+ spec.homepage = 'http://github.com/fog/fog-cloudatcost'
16
+ spec.license = 'MIT'
16
17
 
17
- spec.files = `git ls-files -z`.split("\x0")
18
- spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
- spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
- spec.require_paths = ["lib"]
18
+ spec.files = `git ls-files -z`.split("\x0")
19
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
+ spec.require_paths = ['lib']
21
22
 
22
- spec.add_development_dependency 'bundler', '~> 1.12'
23
- spec.add_development_dependency 'rake', '~> 11.2'
24
- spec.add_development_dependency 'rspec', '~> 3.4.0'
25
- spec.add_development_dependency 'rubyzip', '~> 1.1.0'
23
+ spec.add_development_dependency 'bundler'
24
+ spec.add_development_dependency 'rake'
25
+ spec.add_development_dependency 'rspec'
26
+ spec.add_development_dependency 'rubocop'
27
+ spec.add_development_dependency 'rubyzip'
28
+ spec.add_development_dependency 'simplecov'
26
29
 
27
- spec.add_dependency 'fog-core', '~> 1.41'
28
- spec.add_dependency 'fog-json', '~> 1.0'
29
- spec.add_dependency 'fog-xml', '~> 0.1'
30
- spec.add_dependency 'ipaddress', '~> 0.8'
30
+ spec.add_dependency 'fog-core'
31
+ spec.add_dependency 'fog-json'
32
+ spec.add_dependency 'ipaddress'
31
33
  end
32
-
@@ -1,5 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fog/core'
2
- require 'fog/xml'
3
4
  require 'fog/json'
4
5
 
5
6
  require_relative 'cloudatcost/version'
7
+
8
+ module Fog
9
+ module CloudAtCost
10
+ extend Fog::Provider
11
+ service(:compute, 'Compute')
12
+ end
13
+
14
+ module Compute
15
+ autoload :CloudAtCost, File.expand_path('../cloudatcost/compute', __FILE__)
16
+ end
17
+ end
@@ -1,10 +1,16 @@
1
- require 'fog/cloudatcost/core'
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Fog
4
4
  module Compute
5
5
  class CloudAtCost < Fog::Service
6
6
  requires :api_key, :email
7
7
 
8
+ autoload :Server, File.expand_path('../models/server', __FILE__)
9
+ autoload :Servers, File.expand_path('../models/servers', __FILE__)
10
+ autoload :Task, File.expand_path('../models/task', __FILE__)
11
+ autoload :Tasks, File.expand_path('../models/tasks', __FILE__)
12
+ autoload :Template, File.expand_path('../models/template', __FILE__)
13
+ autoload :Templates, File.expand_path('../models/templates', __FILE__)
8
14
 
9
15
  model_path 'fog/cloudatcost/models'
10
16
  model :server
@@ -29,34 +35,31 @@ module Fog
29
35
  request :run_mode
30
36
 
31
37
  class Mock
32
-
33
- def initialize(options={})
38
+ def initialize(options = {})
34
39
  @api_key = options[:api_key]
35
- @email = options[:email]
40
+ @email = options[:email]
36
41
  end
37
-
38
42
  end
39
43
 
40
44
  class Real
41
-
42
- def initialize(options={})
45
+ def initialize(options = {})
43
46
  @api_key = options[:api_key]
44
- @email = options[:email]
45
- persistent = false
46
- @connection = Fog::Core::Connection.new 'https://panel.cloudatcost.com', persistent, options
47
+ @email = options[:email]
48
+ persistent = false
49
+ @connection = Fog::Core::Connection.new 'https://panel.cloudatcost.com', persistent, options
47
50
  end
48
51
 
49
52
  def request(params)
50
53
  params[:headers] ||= { 'Content-Type' => 'application/x-www-form-urlencoded' }
51
54
  params[:query] ||= {}
52
55
  required_params = {
53
- key: "#{@api_key}",
54
- login: "#{@email}"
56
+ key: @api_key.to_s,
57
+ login: @email.to_s
55
58
  }
56
59
  begin
57
- if params[:method] == 'POST'
60
+ if params[:method] == 'POST'
58
61
  params_body = required_params.merge(params[:body])
59
- params[:body] = params_body.reduce(""){ |acc,(x,y)| "#{acc}&#{x}=#{y}" }
62
+ params[:body] = params_body.reduce('') { |acc, (x, y)| "#{acc}&#{x}=#{y}" }
60
63
  else
61
64
  params[:query] = required_params.merge(params[:query])
62
65
  end
@@ -69,12 +72,11 @@ module Fog
69
72
  error
70
73
  end
71
74
  end
72
- unless response.body.empty?
73
- response.body = Fog::JSON.decode(response.body)
74
- end
75
+
76
+ response.body = Fog::JSON.decode(response.body) unless response.body.empty?
77
+
75
78
  response
76
79
  end
77
-
78
80
  end
79
81
  end
80
82
  end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fog/compute/models/server'
2
4
 
3
5
  module Fog
4
6
  module Compute
5
7
  class CloudAtCost
6
8
  class Server < Fog::Compute::Server
7
- identity :sid
9
+ identity :sid
8
10
  attribute :id
9
11
  attribute :CustID
10
12
  attribute :packageid
@@ -35,19 +37,18 @@ module Fog
35
37
  attribute :rdnsdefault
36
38
  attribute :template_id
37
39
 
38
-
39
40
  def new_instance?
40
- not persisted?
41
+ !persisted?
41
42
  end
42
43
 
43
44
  def save
44
- raise Fog::Errors::Error.new('Re-saving an existing object may create a duplicate') if persisted?
45
+ raise Fog::Errors::Error, 'Re-saving an existing object may create a duplicate' if persisted?
45
46
  save!
46
47
  end
47
48
 
48
49
  def save!
49
50
  requires :cpu, :ram, :storage, :template_id
50
- data = service.create_server(cpu, ram, storage, template_id)
51
+ service.create_server(cpu, ram, storage, template_id)
51
52
  end
52
53
 
53
54
  def destroy
@@ -89,7 +90,6 @@ module Fog
89
90
  response = service.send(action, sid, *args)
90
91
  response.body
91
92
  end
92
-
93
93
  end
94
94
  end
95
95
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fog/core/collection'
2
4
  require 'fog/cloudatcost/models/server'
3
5
 
@@ -9,7 +11,7 @@ module Fog
9
11
 
10
12
  # Returns list of servers
11
13
  # @return [Fog::Compute::CloudAtCost::Servers]
12
- def all(filters = {})
14
+ def all(_filters = {})
13
15
  data = service.list_servers.body['data']
14
16
  load(data)
15
17
  end
@@ -18,7 +20,7 @@ module Fog
18
20
  # @param [String] id for server to be returned
19
21
  # @return [Fog::Compute::CloudAtCost::Server]
20
22
  def get(id)
21
- server = service.servers.find do |server|
23
+ service.servers.find do |server|
22
24
  server.id != id
23
25
  end
24
26
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Fog
2
4
  module Compute
3
5
  class CloudAtCost
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fog/core/collection'
2
4
  require 'fog/cloudatcost/models/task'
3
5
 
@@ -9,7 +11,7 @@ module Fog
9
11
 
10
12
  # Returns list of tasks
11
13
  # @return [Fog::Compute::CloudAtCost::Tasks]
12
- def all(filters = {})
14
+ def all(_filters = {})
13
15
  data = service.list_tasks.body['data']
14
16
  load(data)
15
17
  end
@@ -18,7 +20,7 @@ module Fog
18
20
  # @param [String] id for server to be returned
19
21
  # @return [Fog::Compute::CloudAtCost::Task]
20
22
  def get(id)
21
- task = service.list_tasks.find do |task|
23
+ service.list_tasks.find do |task|
22
24
  task.id != id
23
25
  end
24
26
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Fog
2
4
  module Compute
3
5
  class CloudAtCost
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fog/core/collection'
2
4
  require 'fog/cloudatcost/models/template'
3
5
 
@@ -9,7 +11,7 @@ module Fog
9
11
 
10
12
  # Returns list of servers
11
13
  # @return [Fog::Compute::CloudAtCost::Templates]
12
- def all(filters = {})
14
+ def all(_filters = {})
13
15
  data = service.list_templates.body['data']
14
16
  load(data)
15
17
  end
@@ -18,7 +20,7 @@ module Fog
18
20
  # @param [String] id for server to be returned
19
21
  # @return [Fog::Compute::CloudAtCost::Template]
20
22
  def get(id)
21
- template = service.templates.find do |template|
23
+ service.templates.find do |_template|
22
24
  server.id != id
23
25
  end
24
26
  end
@@ -1,28 +1,33 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Fog
2
4
  module Compute
3
5
  class CloudAtCost
4
6
  class Real
5
7
  def console(id)
6
- body = { :sid => "#{id}" }
8
+ body = { sid: id.to_s }
7
9
  request(
8
- :expects => [200],
9
- :method => 'POST',
10
- :path => 'api/v1/console.php',
11
- :body => body,
10
+ expects: [200],
11
+ method: 'POST',
12
+ path: 'api/v1/console.php',
13
+ body: body
12
14
  )
13
15
  end
14
16
  end
15
17
 
16
18
  class Mock
17
- def console(id, hostname)
18
- response = Excon::Response.new
19
- response.status = 200
20
- response.body = {
19
+ def console(_id, _hostname)
20
+ console_url =
21
+ 'http:\/\/panel.cloudatcost.com:12345\/console.html?servername=123456&hostname=1.1.1.1'\
22
+ '&sshkey=123456&sha1hash=aBcDeFgG'
23
+ response = Excon::Response.new
24
+ response.status = 200
25
+ response.body = {
21
26
  'server_id' => Fog::Mock.random_numbers(1).to_i,
22
27
  'api' => 'v1',
23
28
  'status' => 'ok',
24
- 'console' => 'http:\/\/panel.cloudatcost.com:12345\/console.html?servername=123456&hostname=1.1.1.1&sshkey=123456&sha1hash=aBcDeFgG',
25
- 'time' => 12312323,
29
+ 'console' => console_url,
30
+ 'time' => 12_312_323
26
31
  }
27
32
  response
28
33
  end
@@ -1,29 +1,31 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Fog
2
4
  module Compute
3
5
  class CloudAtCost
4
6
  class Real
5
7
  def create_server(cpu, ram, storage, template_id)
6
- body = { cpu: "#{cpu}", ram: "#{ram}", storage: "#{storage}", os: "#{template_id}" }
8
+ body = { cpu: cpu.to_s, ram: ram.to_s, storage: storage.to_s, os: template_id.to_s }
7
9
  request(
8
- :expects => [200],
9
- :method => 'POST',
10
- :path => 'api/v1/cloudpro/build.php',
11
- :body => body,
10
+ expects: [200],
11
+ method: 'POST',
12
+ path: 'api/v1/cloudpro/build.php',
13
+ body: body
12
14
  )
13
15
  end
14
16
  end
15
17
 
16
18
  class Mock
17
- def create_server(cpu, ram, storage, template_id)
18
- response = Excon::Response.new
19
- response.status = 200
20
- response.body = {
19
+ def create_server(_cpu, _ram, _storage, _template_id)
20
+ response = Excon::Response.new
21
+ response.status = 200
22
+ response.body = {
21
23
  'result' => 'successful',
22
24
  'api' => 'v1',
23
25
  'action' => 'build',
24
26
  'status' => 'ok',
25
- 'taskid' => 123123123123,
26
- 'time' => 12312323,
27
+ 'taskid' => 123_123_123_123,
28
+ 'time' => 12_312_323
27
29
  }
28
30
  response
29
31
  end