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 +4 -4
- data/README.md +22 -0
- data/deis_client.gemspec +2 -2
- data/lib/deis_client.rb +58 -2
- data/test/test_deis_client.rb +42 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6dcb74cfa303978b1e9c5169f418480292446037
|
4
|
+
data.tar.gz: 670327ddddf2ee023ec8703855a988df01186306
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
4
|
-
s.date = '2015-
|
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 =>
|
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
|
data/test/test_deis_client.rb
CHANGED
@@ -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.
|
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-
|
11
|
+
date: 2015-09-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|