oceanarium 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a4441ed289120db783c86716878983a1fe47d1e8
4
- data.tar.gz: 14128c2fa5fe0a672434e8e002e3dd7a48546a75
3
+ metadata.gz: 95524a489a1f806147f12e0eff8ae1fe1d69b83a
4
+ data.tar.gz: fd164db5e292eb6a42d6b947ec7ca1c3d874f899
5
5
  SHA512:
6
- metadata.gz: 3da88d66142ac8a627ebecfab9dd654fb8bc5636421c9b2de902d9ecf3000d07c7cb910c943fce90961c075ba54947ed8574754861a1e94fec2163482757f89b
7
- data.tar.gz: f4fb8246c0f493b1d20a4eda6fed19a9f42c5ae2cb54b1cb1cd9d45bbc965d400dcfe1f5c55825fcea157a49224790793abed67fd3ce6f987934aacf7ca195ff
6
+ metadata.gz: b51e657f17dd1c58b788b8f9fd73c5781833d6a4835b9854c609093970424d71fbe8c87d76c7f7e2dcce3154c48bb27e068cc2cf1406828ce9c0786ed36a285d
7
+ data.tar.gz: d3495ef8e913d93b044b11045bbf74f78852e56b18aca160ebf69bc833f109d413a5021cbb5f497d22c4e592c87520d6320f2115e3977038ee81d4fdbdbf3365
@@ -21,7 +21,7 @@ module Oceanarium
21
21
 
22
22
  def api_key
23
23
  return @api_key if @api_key
24
- "You have missed API key. Please, provide it by Oceanarium::Config.api_key = 'your_key'."
24
+ nil
25
25
  end
26
26
 
27
27
  # Client key getter/setter.
@@ -32,7 +32,7 @@ module Oceanarium
32
32
 
33
33
  def client_id
34
34
  return @client_id if @client_id
35
- "You have missed client ID. Please, provide it by Oceanarium::Config.client_id = 'your_id'"
35
+ nil
36
36
  end
37
37
  end
38
38
  end
@@ -1,5 +1,59 @@
1
+ require 'oceanarium/config'
2
+ require 'oceanarium/resources/record'
3
+
1
4
  module Oceanarium
2
5
  class Domain
6
+ attr_accessor :id, :name, :ttl, :live_zone_file
7
+
8
+ def initialize(option, api_key, config_id)
9
+ if api_key.nil? || config_id.nil?
10
+ raise 'No API key/client ID!'
11
+ else
12
+ if option.is_a?(Hash)
13
+ @object = option
14
+ else
15
+ @object = Oceanarium::Domain.find(option)
16
+ end
17
+ if @object.nil?
18
+ self.id = nil
19
+ else
20
+ self.id = @object['id']
21
+ self.name = @object['name']
22
+ self.ttl = @object['ttl']
23
+ self.live_zone_file = @object['live_zone_file']
24
+ end
25
+ end
26
+ end
27
+
28
+ def self.record(id = nil)
29
+ Oceanarium::Record.new(id, Oceanarium::Config.api_key, Oceanarium::Config.client_id, self.id)
30
+ end
31
+
32
+ def self.records
33
+ unless Oceanarium::Config.api_key.nil? || Oceanarium::Config.client_id.nil?
34
+ @records = Array.new()
35
+ Oceanarium::Record.all(self.id).each do |record|
36
+ @object = Oceanarium::Record.new(record, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
37
+ @records << @object
38
+ end
39
+ @records
40
+ end
41
+ end
42
+
43
+ # User API
44
+
45
+ def new(name, ip_addr)
46
+ @new_id = Oceanarium::Domain.create(name, ip_addr)
47
+ unless @new_id == 'ERROR'
48
+ Oceanarium::domain(@new_id)
49
+ end
50
+ end
51
+
52
+ def destroy
53
+ Oceanarium::Domain.destroy(self.id)
54
+ end
55
+
56
+ # Core API
3
57
 
4
58
  def self.all
5
59
  @request = Oceanarium::Request.new
@@ -2,6 +2,99 @@ require 'open-uri'
2
2
 
3
3
  module Oceanarium
4
4
  class Droplet
5
+ attr_accessor :id, :name, :image_id, :size_id, :region_id, :backups_active, :ip_address, :status, :created_at
6
+
7
+ def initialize(option, api_key, config_id)
8
+ if api_key.nil? || config_id.nil?
9
+ raise 'No API key/client ID!'
10
+ else
11
+ if option.is_a?(Hash)
12
+ @object = option
13
+ else
14
+ @object = Oceanarium::Droplet.find(option)
15
+ end
16
+ if @object.nil?
17
+ self.id = nil
18
+ else
19
+ self.id = @object['id']
20
+ self.name = @object['name']
21
+ self.image_id = @object['image_id']
22
+ self.size_id = @object['size_id']
23
+ self.region_id = @object['region_id']
24
+ self.backups_active = @object['backups_active']
25
+ self.ip_address = @object['ip_address']
26
+ self.status = @object['status']
27
+ self.created_at = @object['created_at']
28
+ end
29
+ end
30
+ end
31
+
32
+ # User API
33
+
34
+ def new(name, size_id, image_id, region_id, ssh_key_ids=nil)
35
+ @new_id = Oceanarium::Droplet.create(name, size_id, image_id, region_id, ssh_key_ids=nil)
36
+ unless @new_id == 'ERROR'
37
+ Oceanarium::droplet(@new_id)
38
+ end
39
+ end
40
+
41
+ def reboot
42
+ Oceanarium::Droplet::action(self.id, 'reboot')
43
+ end
44
+
45
+ def power_cycle
46
+ Oceanarium::Droplet::action(self.id, 'power_cycle')
47
+ end
48
+
49
+ def shutdown
50
+ Oceanarium::Droplet::action(self.id, 'shutdown')
51
+ end
52
+
53
+ def power_off
54
+ Oceanarium::Droplet::action(self.id, 'power_off')
55
+ end
56
+
57
+ def power_on
58
+ Oceanarium::Droplet::action(self.id, 'power_on')
59
+ end
60
+
61
+ def password_reset
62
+ Oceanarium::Droplet::action(self.id, 'password_reset')
63
+ end
64
+
65
+ def resize(size_id)
66
+ Oceanarium::Droplet.resize(self.id, size_id)
67
+ end
68
+
69
+ def snapshot(name)
70
+ Oceanarium::Droplet.snapshot(self.id, name)
71
+ end
72
+
73
+ def restore(image_id)
74
+ Oceanarium::Droplet.restore(self.id, image_id)
75
+ end
76
+
77
+ def rebuild(image_id)
78
+ Oceanarium::Droplet.rebuild(self.id, image_id)
79
+ end
80
+
81
+ def enable_backups
82
+ Oceanarium::Droplet::action(self.id, 'enable_backups')
83
+ end
84
+
85
+ def disable_backups
86
+ Oceanarium::Droplet::action(self.id, 'disable_backups')
87
+ end
88
+
89
+ def rename(new_name)
90
+ Oceanarium::Droplet.rename(self.id, new_name)
91
+ end
92
+
93
+ def destroy
94
+ Oceanarium::Droplet::action(self.id, 'destroy')
95
+ end
96
+
97
+ # Core API
5
98
 
6
99
  def self.all
7
100
  # Returns all Droplets in Array. Each Droplet is a Hash
@@ -1,5 +1,38 @@
1
1
  module Oceanarium
2
2
  class Image
3
+ attr_accessor :id, :name, :slug, :distribution
4
+
5
+ def initialize(option, api_key, client_id)
6
+ if api_key.nil? || client_id.nil?
7
+ raise 'No API key/client ID!'
8
+ else
9
+ if option.is_a?(Hash)
10
+ @object = option
11
+ else
12
+ @object = Oceanarium::Image.find(option)
13
+ end
14
+ if @object.nil?
15
+ self.id = nil
16
+ else
17
+ self.id = @object['id']
18
+ self.name = @object['name']
19
+ self.slug = @object['slug']
20
+ self.distribution = @object['distribution']
21
+ end
22
+ end
23
+ end
24
+
25
+ # User API
26
+
27
+ def destroy
28
+ Oceanarium::Image.destroy(self.id)
29
+ end
30
+
31
+ def transfer(region_id)
32
+ Oceanarium::Image.transfer(self.id, region_id)
33
+ end
34
+
35
+ # Core API
3
36
 
4
37
  def self.all
5
38
  # Returns all avaliable images in Array
@@ -1,7 +1,48 @@
1
1
  module Oceanarium
2
2
  class Record
3
+ attr_accessor :id, :domain_id, :record_type, :name, :data, :priority, :port, :weight
3
4
 
4
- def all(domain_id)
5
+ def initialize(option, api_key, config_id, domain_id = nil)
6
+ if api_key.nil? || config_id.nil?
7
+ raise 'No API key/client ID!'
8
+ else
9
+ if option.is_a?(Hash)
10
+ @object = option
11
+ else
12
+ @object = Oceanarium::Record.find(option, domain_id)
13
+ end
14
+ if @object.nil?
15
+ self.id = nil
16
+ else
17
+ self.id = @object['id']
18
+ self.domain_id = @object['domain_id']
19
+ self.record_type = @object['record_type']
20
+ self.name = @object['name']
21
+ self.data = @object['data']
22
+ self.priority = @object['priority']
23
+ self.port = @object['port']
24
+ self.weight = @object['weight']
25
+ end
26
+ end
27
+ end
28
+
29
+ # User API
30
+
31
+ def new(options={})
32
+ Oceanarium::Record.create(self.domain_id, options)
33
+ end
34
+
35
+ def edit(options={})
36
+ Oceanarium::Record.update(self.id, self.domain_id, options)
37
+ end
38
+
39
+ def destroy
40
+ Oceanarium::Record.destroy(self.domain_id, self.id)
41
+ end
42
+
43
+ # Core API
44
+
45
+ def self.all(domain_id)
5
46
  @request = Oceanarium::Request.new
6
47
  @get = @request.get("/domains/#{domain_id}/records")
7
48
  if @get.parsed_response['status'] == 'OK'
@@ -9,7 +50,7 @@ module Oceanarium
9
50
  end
10
51
  end
11
52
 
12
- def find(domain_id, id)
53
+ def self.find(domain_id, id)
13
54
  @request = Oceanarium::Request.new
14
55
  @get = @request.get("/domains/#{domain_id}/records/#{id}/")
15
56
  if @get.parsed_response['status'] == 'OK'
@@ -17,7 +58,7 @@ module Oceanarium
17
58
  end
18
59
  end
19
60
 
20
- def create(domain_id, options={})
61
+ def self.create(domain_id, options={})
21
62
  # There is a gotcha: too many params, so we need to pass an Hash with all params.
22
63
  # For example:
23
64
  #
@@ -33,10 +74,10 @@ module Oceanarium
33
74
  end
34
75
  end
35
76
 
36
- def update(domain_id, options={})
77
+ def self.update(id, domain_id, options={})
37
78
  # Same shit there
38
79
  @request = Oceanarium::Request.new
39
- @get = @request.get("/domains/#{domain_id}/records/new", options)
80
+ @get = @request.get("/domains/#{domain_id}/records/#{id}/edit/", options)
40
81
  if @get.parsed_response['status'] == 'OK'
41
82
  @get.parsed_response['record']
42
83
  else
@@ -44,7 +85,7 @@ module Oceanarium
44
85
  end
45
86
  end
46
87
 
47
- def destroy(domain_id, id)
88
+ def self.destroy(domain_id, id)
48
89
  @request = Oceanarium::Request.new
49
90
  @get = @request.get("/domains/#{domain_id}/records/#{id}/destroy")
50
91
  @get.parsed_response['status']
@@ -0,0 +1,30 @@
1
+ module Oceanarium
2
+ class Region
3
+ attr_accessor :id, :name
4
+
5
+ def initialize(option, api_key, client_id)
6
+ if api_key.nil? || client_id.nil?
7
+ raise 'No API key/client ID!'
8
+ else
9
+ if option.is_a?(Hash)
10
+ @object = option
11
+ end
12
+ if @object.nil?
13
+ self.id = nil
14
+ else
15
+ self.id = @object['id']
16
+ self.name = @object['name']
17
+ end
18
+ end
19
+ end
20
+
21
+ def self.all
22
+ # Returns all avaliable regions in Array
23
+ @request = Oceanarium::Request.new
24
+ @get = @request.get('/regions/')
25
+ if @get.parsed_response['status'] == 'OK'
26
+ @get.parsed_response['regions']
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,32 @@
1
+ module Oceanarium
2
+ class Size
3
+ attr_accessor :id, :name
4
+
5
+ def initialize(option, api_key, client_id)
6
+ if api_key.nil? || client_id.nil?
7
+ raise 'No API key/client ID!'
8
+ else
9
+ if option.is_a?(Hash)
10
+ @object = option
11
+ end
12
+ if @object.nil?
13
+ self.id = nil
14
+ else
15
+ self.id = @object['id']
16
+ self.name = @object['name']
17
+ end
18
+ end
19
+ end
20
+
21
+ # Core API
22
+
23
+ def self.all
24
+ # Returns all avaliable sizess in Array
25
+ @request = Oceanarium::Request.new
26
+ @get = @request.get('/sizes/')
27
+ if @get.parsed_response['status'] == 'OK'
28
+ @get.parsed_response['sizes']
29
+ end
30
+ end
31
+ end
32
+ end
@@ -2,6 +2,45 @@ require 'open-uri'
2
2
 
3
3
  module Oceanarium
4
4
  class SSHKey
5
+ attr_accessor :id, :name, :ssh_pub_key
6
+
7
+ def initialize(option, api_key, client_id)
8
+ if api_key.nil? || client_id.nil?
9
+ raise 'No API key/client ID!'
10
+ else
11
+ if option.is_a?(Hash)
12
+ @object = option
13
+ else
14
+ @object = Oceanarium::SSHKey.find(option)
15
+ end
16
+ if @object.nil?
17
+ self.id = nil
18
+ else
19
+ self.id = @object['id']
20
+ self.name = @object['name']
21
+ self.ssh_pub_key = @object['ssh_pub_key']
22
+ end
23
+ end
24
+ end
25
+
26
+ # User API
27
+
28
+ def new(name, key)
29
+ @new_id = Oceanarium::SSHKey.create(name, id)
30
+ unless @new_id == 'ERROR'
31
+ Oceanarium::ssh_key(@new_id)
32
+ end
33
+ end
34
+
35
+ def edit(key)
36
+ Oceanarium::SSHKey.update(self.id, key)
37
+ end
38
+
39
+ def destroy
40
+ Oceanarium::SSHKey.destroy(self.id)
41
+ end
42
+
43
+ # Core API
5
44
 
6
45
  def self.all
7
46
  # Returns all ssh keys in Array
@@ -3,7 +3,8 @@ require 'oceanarium/resources/image'
3
3
  require 'oceanarium/resources/sshkey'
4
4
  require 'oceanarium/resources/domain'
5
5
  require 'oceanarium/resources/record'
6
- require 'oceanarium/resources/lists'
6
+ require 'oceanarium/resources/region'
7
+ require 'oceanarium/resources/size'
7
8
 
8
9
  module Oceanarium
9
10
  module Resources
@@ -1,3 +1,3 @@
1
1
  module Oceanarium
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
data/lib/oceanarium.rb CHANGED
@@ -6,4 +6,110 @@ require "oceanarium/request"
6
6
  require "oceanarium/resources"
7
7
 
8
8
  module Oceanarium
9
+ # User API roots:
10
+ # /droplets/
11
+
12
+ def self.droplet(id = nil)
13
+ Oceanarium::Droplet.new(id, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
14
+ end
15
+
16
+ def self.droplets
17
+ unless Oceanarium::Config.api_key.nil? || Oceanarium::Config.client_id.nil?
18
+ @droplets = Array.new()
19
+ Oceanarium::Droplet.all.each do |droplet|
20
+ @object = Oceanarium::Droplet.new(droplet, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
21
+ @droplets << @object
22
+ end
23
+ @droplets
24
+ end
25
+ end
26
+
27
+ # /images/
28
+
29
+ def self.image(id = nil)
30
+ Oceanarium::Image.new(id, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
31
+ end
32
+
33
+ def self.images(scope = nil)
34
+ unless Oceanarium::Config.api_key.nil? || Oceanarium::Config.client_id.nil?
35
+ @images = Array.new()
36
+ if scope.nil?
37
+ Oceanarium::Image.all.each do |image|
38
+ @object = Oceanarium::Image.new(image, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
39
+ @images << @object
40
+ end
41
+ elsif scope == 'global'
42
+ Oceanarium::Image.global.each do |image|
43
+ @object = Oceanarium::Image.new(image, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
44
+ @images << @object
45
+ end
46
+ elsif scope == 'my_images'
47
+ Oceanarium::Image.local.each do |image|
48
+ @object = Oceanarium::Image.new(image, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
49
+ @images << @object
50
+ end
51
+ end
52
+ end
53
+ @images
54
+ end
55
+
56
+ # /ssh_keys/
57
+
58
+ def self.ssh_key(id = nil)
59
+ Oceanarium::SSHKey.new(id, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
60
+ end
61
+
62
+ def self.ssh_keys
63
+ unless Oceanarium::Config.api_key.nil? || Oceanarium::Config.client_id.nil?
64
+ @keys = Array.new()
65
+ Oceanarium::SSHKey.all.each do |key|
66
+ @object = Oceanarium::SSHKey.new(key, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
67
+ @keys << @object
68
+ end
69
+ @keys
70
+ end
71
+ end
72
+
73
+ # /domains/
74
+
75
+ def self.domain(id = nil)
76
+ Oceanarium::Domain.new(id, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
77
+ end
78
+
79
+ def self.domains
80
+ unless Oceanarium::Config.api_key.nil? || Oceanarium::Config.client_id.nil?
81
+ @domains = Array.new()
82
+ Oceanarium::Domain.all.each do |domain|
83
+ @object = Oceanarium::Domain.new(domain, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
84
+ @domains << @object
85
+ end
86
+ @domains
87
+ end
88
+ end
89
+
90
+ # /sizes/
91
+
92
+ def self.sizes
93
+ unless Oceanarium::Config.api_key.nil? || Oceanarium::Config.client_id.nil?
94
+ @sizes = Array.new()
95
+ Oceanarium::Size.all.each do |size|
96
+ @object = Oceanarium::Size.new(size, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
97
+ @sizes << @object
98
+ end
99
+ @sizes
100
+ end
101
+ end
102
+
103
+ # /regions/
104
+
105
+ def self.regions
106
+ unless Oceanarium::Config.api_key.nil? || Oceanarium::Config.client_id.nil?
107
+ @regions = Array.new
108
+ Oceanarium::Region.all.each do |region|
109
+ @object = Oceanarium::Region.new(region, Oceanarium::Config.api_key, Oceanarium::Config.client_id)
110
+ @regions << @object
111
+ end
112
+ @regions
113
+ end
114
+ end
9
115
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oceanarium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Valdos Sine
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-04 00:00:00.000000000 Z
12
+ date: 2013-07-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -86,8 +86,9 @@ files:
86
86
  - lib/oceanarium/resources/domain.rb
87
87
  - lib/oceanarium/resources/droplet.rb
88
88
  - lib/oceanarium/resources/image.rb
89
- - lib/oceanarium/resources/lists.rb
90
89
  - lib/oceanarium/resources/record.rb
90
+ - lib/oceanarium/resources/region.rb
91
+ - lib/oceanarium/resources/size.rb
91
92
  - lib/oceanarium/resources/sshkey.rb
92
93
  - lib/oceanarium/version.rb
93
94
  - oceanarium.gemspec
@@ -1,22 +0,0 @@
1
- module Oceanarium
2
- class Lists
3
-
4
- def self.regions
5
- # Returns all avaliable regions in Array
6
- @request = Oceanarium::Request.new
7
- @get = @request.get('/regions/')
8
- if @get.parsed_response['status'] == 'OK'
9
- @get.parsed_response['regions']
10
- end
11
- end
12
-
13
- def self.sizes
14
- # Returns all avaliable sizess in Array
15
- @request = Oceanarium::Request.new
16
- @get = @request.get('/sizes/')
17
- if @get.parsed_response['status'] == 'OK'
18
- @get.parsed_response['sizes']
19
- end
20
- end
21
- end
22
- end