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.
- checksums.yaml +5 -5
- data/.gitignore +21 -35
- data/.rubocop.yml +10 -1157
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +11 -25
- data/Gemfile +2 -0
- data/README.md +0 -1
- data/Rakefile +6 -18
- data/fog-cloudatcost.gemspec +24 -23
- data/lib/fog/cloudatcost.rb +13 -1
- data/lib/fog/cloudatcost/compute.rb +20 -18
- data/lib/fog/cloudatcost/models/server.rb +6 -6
- data/lib/fog/cloudatcost/models/servers.rb +4 -2
- data/lib/fog/cloudatcost/models/task.rb +2 -0
- data/lib/fog/cloudatcost/models/tasks.rb +4 -2
- data/lib/fog/cloudatcost/models/template.rb +2 -0
- data/lib/fog/cloudatcost/models/templates.rb +4 -2
- data/lib/fog/cloudatcost/requests/console.rb +16 -11
- data/lib/fog/cloudatcost/requests/create_server.rb +13 -11
- data/lib/fog/cloudatcost/requests/delete_server.rb +13 -11
- data/lib/fog/cloudatcost/requests/list_servers.rb +7 -5
- data/lib/fog/cloudatcost/requests/list_tasks.rb +7 -5
- data/lib/fog/cloudatcost/requests/list_templates.rb +7 -5
- data/lib/fog/cloudatcost/requests/power_off.rb +14 -12
- data/lib/fog/cloudatcost/requests/power_on.rb +14 -12
- data/lib/fog/cloudatcost/requests/rename_server.rb +16 -14
- data/lib/fog/cloudatcost/requests/reset.rb +14 -12
- data/lib/fog/cloudatcost/requests/reverse_dns.rb +13 -11
- data/lib/fog/cloudatcost/requests/run_mode.rb +13 -11
- data/lib/fog/cloudatcost/version.rb +3 -1
- data/spec/fog/models/server_spec.rb +5 -4
- data/spec/fog/models/servers_spec.rb +3 -3
- data/spec/fog/models/task_spec.rb +3 -2
- data/spec/fog/models/tasks_spec.rb +3 -3
- data/spec/fog/models/template_spec.rb +3 -2
- data/spec/fog/models/templates_spec.rb +3 -3
- data/spec/spec_helper.rb +9 -4
- metadata +57 -47
- data/.codeclimate.yml +0 -28
- data/Gemfile.lock +0 -71
- data/lib/fog/cloudatcost/core.rb +0 -9
- data/spec/model_setup.rb +0 -14
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
fog-cloudatcost
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.5.1
|
data/.travis.yml
CHANGED
@@ -1,38 +1,24 @@
|
|
1
|
-
|
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:
|
5
|
+
- rvm: 2.2
|
12
6
|
gemfile: Gemfile
|
13
|
-
- rvm: 2.
|
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.
|
9
|
+
- rvm: 2.3
|
22
10
|
gemfile: Gemfile
|
23
|
-
- rvm: 2.
|
11
|
+
- rvm: 2.3
|
24
12
|
gemfile: gemfiles/Gemfile-edge
|
25
|
-
- rvm: 2.
|
13
|
+
- rvm: 2.4
|
26
14
|
gemfile: Gemfile
|
27
|
-
- rvm: 2.
|
15
|
+
- rvm: 2.4
|
28
16
|
gemfile: gemfiles/Gemfile-edge
|
29
|
-
- rvm:
|
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
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
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
3
2
|
|
4
|
-
require '
|
5
|
-
require '
|
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
|
-
|
18
|
-
|
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
|
data/fog-cloudatcost.gemspec
CHANGED
@@ -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
|
8
|
-
spec.version
|
9
|
-
spec.authors
|
10
|
-
spec.email
|
11
|
-
spec.summary
|
12
|
-
spec.description
|
13
|
-
|
14
|
-
spec.homepage
|
15
|
-
spec.license
|
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
|
18
|
-
spec.executables
|
19
|
-
spec.test_files
|
20
|
-
spec.require_paths = [
|
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'
|
23
|
-
spec.add_development_dependency 'rake'
|
24
|
-
spec.add_development_dependency 'rspec'
|
25
|
-
spec.add_development_dependency '
|
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'
|
28
|
-
spec.add_dependency 'fog-json'
|
29
|
-
spec.add_dependency '
|
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
|
-
|
data/lib/fog/cloudatcost.rb
CHANGED
@@ -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
|
-
|
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
|
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
|
45
|
-
persistent
|
46
|
-
@connection
|
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:
|
54
|
-
login:
|
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(
|
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
|
-
|
73
|
-
|
74
|
-
|
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
|
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
|
-
|
41
|
+
!persisted?
|
41
42
|
end
|
42
43
|
|
43
44
|
def save
|
44
|
-
raise Fog::Errors::Error
|
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
|
-
|
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(
|
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
|
-
|
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
|
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(
|
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
|
-
|
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
|
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(
|
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
|
-
|
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 = { :
|
8
|
+
body = { sid: id.to_s }
|
7
9
|
request(
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
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(
|
18
|
-
|
19
|
-
|
20
|
-
|
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' =>
|
25
|
-
'time' =>
|
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:
|
8
|
+
body = { cpu: cpu.to_s, ram: ram.to_s, storage: storage.to_s, os: template_id.to_s }
|
7
9
|
request(
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
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(
|
18
|
-
response
|
19
|
-
response.status
|
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' =>
|
26
|
-
'time' =>
|
27
|
+
'taskid' => 123_123_123_123,
|
28
|
+
'time' => 12_312_323
|
27
29
|
}
|
28
30
|
response
|
29
31
|
end
|