oceanarium 0.1.0 → 0.2.0

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 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