deis-client 0.0.1 → 0.0.3

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: 58e6e3b57178229a12238962facc11faa3e81cb1
4
- data.tar.gz: 69ca12a1ffda0e319ca5d2229cb2349ef401253f
3
+ metadata.gz: 6dcb74cfa303978b1e9c5169f418480292446037
4
+ data.tar.gz: 670327ddddf2ee023ec8703855a988df01186306
5
5
  SHA512:
6
- metadata.gz: a015c5ac514dceb06d4460be73c1cb09fdbc4674de061b9c2fb8c392d04a167aca37c7ce165e07ef30fb076080d14972c46ace05f815e4f0fe00842b6d18779a
7
- data.tar.gz: 701a4f5f4848ed78552048b7c952d8d120a817e81aacd0db5a68d27390521f87e719122684bc31f540f163fe7d9b563a421cb40338b726c98b3d2d47cfb29074
6
+ metadata.gz: 703d803d18249bdfb2f4fbcb8287557d52b68fa5dbbcf4989d52439ff77f9455d6b48da39e3e7d4754dca09799e2e736c10dcc2ef325c2b5ce7a1757d6425fe0
7
+ data.tar.gz: 26b8240bcf90fab415ed9ca0bbc13582fff56f065c3ffebd559b146637e5b2527ab3e0dacb05f35f9e220e0efef5f18263cdac0b499c871444aea3b62c6c07e6
data/README.md CHANGED
@@ -1 +1,23 @@
1
1
  # deis-client
2
+ A simple Ruby wrapper to manage Deis PaaS applications via its REST API.
3
+
4
+ # Usage
5
+ ```
6
+ app_name = 'awesome-app'
7
+
8
+ # Log in with a username and a password
9
+ @client = DeisClient.new('https://deis.example.com', 'admin', 'secret')
10
+
11
+ # Create an application with the given name, or let Deis make one up by passing nil
12
+ @client.app_create(app_name)
13
+
14
+ # Set some configurations on it
15
+ hash = {'FOO' => 'BAR', 'AWESOME' => 'SAUCE'}
16
+ @client.config_set(app_name, hash)
17
+
18
+ # Read and print its logs
19
+ puts @client.logs_get(app_name)
20
+
21
+ # Destroy it
22
+ @client.app_destroy(app_name)
23
+ ```
data/deis_client.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'deis-client'
3
- s.version = '0.0.1'
4
- s.date = '2015-07-08'
3
+ s.version = '0.0.3'
4
+ s.date = '2015-09-09'
5
5
  s.summary = "Deis REST operations in a Ruby gem."
6
6
  s.description = "Deis Platform REST (V1.5) client for Ruby."
7
7
  s.authors = ["AnyPresence"]
data/lib/deis_client.rb CHANGED
@@ -87,6 +87,54 @@ class DeisClient
87
87
  end
88
88
  end
89
89
 
90
+ def cert_add(common_name, certificate, private_key)
91
+ raise DeisError.new("Common name is required") if common_name.nil?
92
+ raise DeisError.new("Certificate name is required") if certificate.nil?
93
+ raise DeisError.new("Private key is required") if private_key.nil?
94
+ if @mock
95
+ {}
96
+ else
97
+ payload = {"common_name" => common_name, "certificate" => certificate, "key" => private_key}
98
+ response = RestClient::Request.execute(:method => :post, :url => certs_url, :payload => payload.to_json, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers)
99
+ JSON.parse response.body
100
+ end
101
+ end
102
+
103
+ def cert_remove(common_name)
104
+ raise DeisError.new("Common name is required") if common_name.nil?
105
+ if @mock
106
+ {}
107
+ else
108
+ url = "#{certs_url}#{common_name}"
109
+ response = RestClient::Request.execute(:method => :delete, :url => url, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers)
110
+ response.code == 204
111
+ end
112
+ end
113
+
114
+ def domain_add(app_name, domain_name)
115
+ raise DeisError.new("App name is required") if app_name.nil?
116
+ raise DeisError.new("Domain name is required") if domain_name.nil?
117
+ if @mock
118
+ {}
119
+ else
120
+ payload = {"domain" => domain_name}
121
+ response = RestClient::Request.execute(:method => :post, :url => domains_url(app_name), :payload => payload.to_json, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers)
122
+ JSON.parse response.body
123
+ end
124
+ end
125
+
126
+ def domain_remove(app_name, domain_name)
127
+ raise DeisError.new("App name is required") if app_name.nil?
128
+ raise DeisError.new("Domain name is required") if domain_name.nil?
129
+ if @mock
130
+ {}
131
+ else
132
+ url = "#{domains_url(app_name)}#{domain_name}"
133
+ response = RestClient::Request.execute(:method => :delete, :url => url, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers)
134
+ response.code == 204
135
+ end
136
+ end
137
+
90
138
  def config_set(app_name, config_hash={})
91
139
  raise DeisError.new("App name is required") if app_name.nil?
92
140
  if @mock || config_hash.empty?
@@ -118,14 +166,14 @@ class DeisClient
118
166
  end
119
167
  end
120
168
 
121
- def command_run(app_name, command)
169
+ def command_run(app_name, command, timeout_in_seconds=REQUEST_TIMEOUT)
122
170
  raise DeisError.new("App name is required") if app_name.nil?
123
171
  raise DeisError.new("Command string is required") if command.nil?
124
172
  if @mock
125
173
  {}
126
174
  else
127
175
  payload = {"command" => command}
128
- response = RestClient::Request.execute(:method => :post, :url => command_run_url(app_name), :payload => payload.to_json, :timeout => REQUEST_TIMEOUT, :verify_ssl => VERIFY_SSL, :headers => headers)
176
+ response = RestClient::Request.execute(:method => :post, :url => command_run_url(app_name), :payload => payload.to_json, :timeout => timeout_in_seconds, :verify_ssl => VERIFY_SSL, :headers => headers)
129
177
  JSON.parse response.body
130
178
  end
131
179
  end
@@ -140,6 +188,10 @@ class DeisClient
140
188
  "#{@deis_controller}/v1/apps/"
141
189
  end
142
190
 
191
+ def domains_url(app_name)
192
+ "#{app_url(app_name)}domains/"
193
+ end
194
+
143
195
  def app_url(app_name)
144
196
  "#{apps_url}#{app_name}/"
145
197
  end
@@ -164,6 +216,10 @@ class DeisClient
164
216
  "#{app_url(app_name)}run/"
165
217
  end
166
218
 
219
+ def certs_url
220
+ "#{@deis_controller}/v1/certs/"
221
+ end
222
+
167
223
  def keys_url
168
224
  "#{@deis_controller}/v1/keys/"
169
225
  end
@@ -109,4 +109,46 @@ class DeisClientTest < Minitest::Test
109
109
  @client.app_restart(@instance_name)
110
110
  end
111
111
  end
112
+
113
+ def test_domain_add
114
+ assert_raises(DeisError) {
115
+ @client.domain_add(nil,nil)
116
+ }
117
+ unless @instance_name.nil?
118
+ response = @client.domain_add(@instance_name,"foo.example.com")
119
+ assert response["domain"] == "foo.example.com" if response.has_key?("domain")
120
+ end
121
+ end
122
+
123
+ def test_domain_remove
124
+ assert_raises(DeisError) {
125
+ @client.domain_remove(nil,nil)
126
+ }
127
+ unless @instance_name.nil?
128
+ response = @client.domain_add(@instance_name,"foo.example.com")
129
+ if response.has_key?("domain")
130
+ assert response["domain"] == "foo.example.com"
131
+ assert @client.domain_remove(@instance_name,"foo.example.com")
132
+ end
133
+ end
134
+ end
135
+
136
+ def test_cert_add
137
+ assert_raises(DeisError) {
138
+ @client.cert_add(nil,nil,nil)
139
+ }
140
+ unless @instance_name.nil?
141
+ response = @client.cert_add("foo.example.com", "CERT", "KEY")
142
+ assert response
143
+ end
144
+ end
145
+
146
+ def test_cert_remove
147
+ assert_raises(DeisError) {
148
+ @client.cert_remove(nil)
149
+ }
150
+ unless @instance_name.nil?
151
+ assert @client.cert_remove("foo.example.com")
152
+ end
153
+ end
112
154
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: deis-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - AnyPresence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-08 00:00:00.000000000 Z
11
+ date: 2015-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client