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