deis-client 0.0.1 → 0.0.3

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