tutum 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 75966173483c153b837c3002bf26d7b7fe4c3e37
4
+ data.tar.gz: 31679aa19491f217c370659fdb1dfb3c739f43a6
5
+ SHA512:
6
+ metadata.gz: 28d5f65569eddf3ce151eca6ea8713e7dc21cb244ac17fd7e62470c1f7f7ed73913c2c216cc4f7a65b57991f1c69018f829a887de9d5a6056cf18ce256d76945
7
+ data.tar.gz: 853524302151028c24acef49bd163e39fa4364944175efb3d42bb6b3a5c7bcfd37efe2c0eac1baf9df4bf6f48f5df899e5e5959a95a9e07034eb70c0915eb3e0
data/lib/tutum.rb ADDED
@@ -0,0 +1,32 @@
1
+ require_relative './tutum_api'
2
+ require_relative './tutum_clusters'
3
+ require_relative './tutum_containers'
4
+ require_relative './tutum_images'
5
+
6
+ class Tutum
7
+ attr_reader :username, :api_key
8
+ def initialize(username, api_key)
9
+ @username = username
10
+ @api_key = api_key
11
+ end
12
+
13
+ def headers
14
+ {
15
+ "Authorization" => "ApiKey #{@username}:#{@api_key}",
16
+ "Accept" => "application/json",
17
+ "Content-Type" => "application/json"
18
+ }
19
+ end
20
+
21
+ def containers
22
+ @containers ||= TutumContainers.new(headers)
23
+ end
24
+
25
+ def images
26
+ @images ||= TutumImages.new(headers)
27
+ end
28
+
29
+ def clusters
30
+ @clusters ||= TutumClusters.new(headers)
31
+ end
32
+ end
data/lib/tutum_api.rb ADDED
@@ -0,0 +1,28 @@
1
+ require 'httparty'
2
+ class TutumApi
3
+ attr_reader :headers
4
+ BASE_API_PATH = "https://app.tutum.co/api"
5
+ API_VERSION = "v1"
6
+ def initialize(headers)
7
+ @headers = headers
8
+ end
9
+ def http_headers
10
+ { headers: headers }
11
+ end
12
+ def api_path(path)
13
+ BASE_API_PATH+"/"+API_VERSION + path
14
+ end
15
+
16
+ def http_get(path, args={})
17
+ HTTParty.get(api_path(path), http_headers.merge({ :query => args }))
18
+ end
19
+ def http_post(path, args={})
20
+ HTTParty.post(api_path(path), http_headers.merge({ :body => args.to_json }))
21
+ end
22
+ def http_patch(path, args={})
23
+ HTTParty.patch(api_path(path), http_headers.merge({ :body => args.to_json }))
24
+ end
25
+ def http_delete(path, args={})
26
+ HTTParty.delete(api_path(path), http_headers.merge({ :query => args }))
27
+ end
28
+ end
@@ -0,0 +1,66 @@
1
+ class TutumClusters < TutumApi
2
+ def list_url
3
+ "/application/"
4
+ end
5
+
6
+ def list(params)
7
+ http_get(list_url, params)
8
+ end
9
+
10
+ def create_url
11
+ "/application/"
12
+ end
13
+
14
+ def create(params)
15
+ http_post(create_url, params)
16
+ end
17
+
18
+ def get_url(uuid)
19
+ "/application/#{uuid}/"
20
+ end
21
+
22
+ def get(uuid)
23
+ http_get(get_url(uuid))
24
+ end
25
+
26
+ def start_url(uuid)
27
+ "/application/#{uuid}/start/"
28
+ end
29
+
30
+ def start(uuid)
31
+ http_post(start_url(uuid))
32
+ end
33
+
34
+ def stop_url(uuid)
35
+ "/application/#{uuid}/stop/"
36
+ end
37
+
38
+ def stop(uuid)
39
+ http_post(stop_url(uuid))
40
+ end
41
+
42
+ def update_url(uuid)
43
+ "/application/#{uuid}/"
44
+ end
45
+
46
+ def update(uuid, params)
47
+ http_patch(update_url(uuid), params)
48
+ end
49
+
50
+ def redeploy_url(uuid)
51
+ "/application/#{uuid}/redeploy/"
52
+ end
53
+
54
+ def redeploy(uuid, params)
55
+ http_post(redeploy_url(uuid), params)
56
+ end
57
+
58
+ def delete_url(uuid)
59
+ "/application/#{uuid}/"
60
+ end
61
+
62
+ def delete(uuid)
63
+ http_delete(delete_url(uuid))
64
+ end
65
+
66
+ end
@@ -0,0 +1,65 @@
1
+ class TutumContainers < TutumApi
2
+ def list_url
3
+ "/container/"
4
+ end
5
+
6
+ def list(params)
7
+ http_get(list_url, params)
8
+ end
9
+
10
+ def create_url
11
+ "/container/"
12
+ end
13
+
14
+ def create(params)
15
+ http_post(create_url, params)
16
+ end
17
+
18
+ def get_url(uuid)
19
+ "/container/#{uuid}/"
20
+ end
21
+
22
+ def get(uuid)
23
+ http_get(get_url(uuid))
24
+ end
25
+
26
+ def start_url(uuid)
27
+ "/container/#{uuid}/start/"
28
+ end
29
+
30
+ def start(uuid)
31
+ http_post(start_url(uuid))
32
+ end
33
+
34
+ def stop_url(uuid)
35
+ "/container/#{uuid}/stop/"
36
+ end
37
+
38
+ def stop(uuid)
39
+ http_post(stop_url(uuid))
40
+ end
41
+
42
+ def logs_url(uuid)
43
+ "/container/#{uuid}/logs/"
44
+ end
45
+
46
+ def logs(uuid)
47
+ http_get(logs_url(uuid))
48
+ end
49
+
50
+ def redeploy_url(uuid)
51
+ "/container/#{uuid}/redeploy/"
52
+ end
53
+
54
+ def redeploy(uuid, params)
55
+ http_post(redeploy_url(uuid), params)
56
+ end
57
+
58
+ def delete_url(uuid)
59
+ "/container/#{uuid}/"
60
+ end
61
+
62
+ def delete(uuid)
63
+ http_delete(delete_url(uuid))
64
+ end
65
+ end
@@ -0,0 +1,43 @@
1
+ class TutumImages < TutumApi
2
+ def list_url
3
+ "/image/"
4
+ end
5
+
6
+ def list(params)
7
+ http_get(list_url, params)
8
+ end
9
+
10
+ def add_url
11
+ "/image/"
12
+ end
13
+
14
+ def add(name, params)
15
+ http_post(add_url, params.merge({:name => name}))
16
+ end
17
+
18
+ def get_url(name)
19
+ "/image/#{name}/"
20
+ end
21
+
22
+ def get(name)
23
+ http_get(get_url(name))
24
+ end
25
+
26
+ def update_url(name)
27
+ "/image/#{name}/"
28
+ end
29
+
30
+ def update(name, params)
31
+ http_patch(update_url(name), params)
32
+ end
33
+
34
+ def delete_url(name)
35
+ "/image/#{name}/"
36
+ end
37
+
38
+ def delete(name)
39
+ http_delete(delete_url(name))
40
+ end
41
+
42
+
43
+ end
metadata ADDED
@@ -0,0 +1,50 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tutum
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Martyn Garcia
8
+ - Mikkel Garcia
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-08-06 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Provides HTTP functionality wrapped in a nice ruby interface.
15
+ email: martyn@255bits.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/tutum.rb
21
+ - lib/tutum_api.rb
22
+ - lib/tutum_clusters.rb
23
+ - lib/tutum_containers.rb
24
+ - lib/tutum_images.rb
25
+ homepage: https://github.com/255BITS/ruby-tutum
26
+ licenses:
27
+ - MIT
28
+ metadata: {}
29
+ post_install_message:
30
+ rdoc_options: []
31
+ require_paths:
32
+ - lib
33
+ required_ruby_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ required_rubygems_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - '>='
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ requirements: []
44
+ rubyforge_project:
45
+ rubygems_version: 2.0.3
46
+ signing_key:
47
+ specification_version: 4
48
+ summary: Ruby interface for the tutum PaaS API.
49
+ test_files: []
50
+ has_rdoc: