rundeck 0.0.4 → 1.0.1
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/CHANGELOG.md +11 -2
- data/README.md +12 -8
- data/lib/rundeck/client.rb +1 -0
- data/lib/rundeck/client/execution.rb +7 -13
- data/lib/rundeck/client/job.rb +1 -2
- data/lib/rundeck/client/project.rb +4 -1
- data/lib/rundeck/client/token.rb +63 -0
- data/lib/rundeck/configuration.rb +0 -4
- data/lib/rundeck/request.rb +8 -2
- data/lib/rundeck/version.rb +1 -1
- data/spec/cassettes/12/create_token.yml +38 -0
- data/spec/cassettes/12/delete_token.yml +32 -0
- data/spec/cassettes/12/delete_token_invalid.yml +41 -0
- data/spec/cassettes/12/token.yml +38 -0
- data/spec/cassettes/12/token_invalid.yml +41 -0
- data/spec/cassettes/12/tokens_multiple.yml +42 -0
- data/spec/cassettes/12/tokens_single.yml +41 -0
- data/spec/cassettes/12/tokens_user.yml +41 -0
- data/spec/rundeck/client/execution_spec.rb +81 -35
- data/spec/rundeck/client/job_spec.rb +51 -28
- data/spec/rundeck/client/key_spec.rb +15 -2
- data/spec/rundeck/client/token_spec.rb +113 -0
- data/spec/rundeck/request_spec.rb +4 -1
- data/spec/rundeck_spec.rb +1 -2
- data/spec/spec_helper.rb +2 -1
- data/spec/support/helpers.rb +10 -30
- data/spec/support/shared_examples.rb +40 -0
- metadata +23 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7b621a7132091422a6aa3950967b078fc054949
|
4
|
+
data.tar.gz: 7d72079c260b9a6275735ac78ca95e8706fa78b6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 944acfc1b5262b541368af518080915062c060943171785cbd7fba87d1cb13c185db5ec369f6c54b02f03ae181265d686ebed0214e6e4c0a6140da6b5fce75ad
|
7
|
+
data.tar.gz: de90f30a173206965347ffea9e9812cce828604ba6571d0802378e675f5f3ccdd6c9172e289dbe5645a625997ecaff28131bcee7e3bc49b3d5062671787cee42
|
data/CHANGELOG.md
CHANGED
@@ -1,2 +1,11 @@
|
|
1
|
-
|
2
|
-
-
|
1
|
+
1.0.1 (November 23, 2014)
|
2
|
+
- Version bump to push gem to RubyGems. Something during push caused an error
|
3
|
+
and re-pushing is not allowed.
|
4
|
+
|
5
|
+
1.0.0 (November 23, 2014)
|
6
|
+
- First stable release
|
7
|
+
- Feature: Basic CRUD on Projects
|
8
|
+
- Feature: Token endpoints
|
9
|
+
- Feature: Most execution endpoints
|
10
|
+
- Feature: Job endpoints
|
11
|
+
- Feature: Private/Public key endpoints
|
data/README.md
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
# Rundeck Ruby Gem
|
2
2
|
|
3
|
-
[Website](http://dblessing.github.io/rundeck-ruby)
|
3
|
+
[Official Website](http://dblessing.github.io/rundeck-ruby) with examples,
|
4
|
+
documentation, and links to the RDoc technical documentation.
|
4
5
|
|
5
|
-
|
6
|
-
|
7
|
-
**Note: Although the git repository is called 'rundeck-ruby', the gem is called 'Rundeck' on Rubygems.org. There is another gem called 'rundeck-ruby' on Rubygems.org and it is not affiliated with this project.**
|
6
|
+
**Note: Although the git repository is called 'rundeck-ruby', the gem is called 'rundeck' on Rubygems.org. There is another gem called 'rundeck-ruby' on Rubygems.org and it is not affiliated with this project.**
|
8
7
|
|
9
8
|
[](http://badge.fury.io/rb/rundeck)
|
10
9
|
[](https://travis-ci.org/dblessing/rundeck-ruby)
|
@@ -14,12 +13,17 @@
|
|
14
13
|
|
15
14
|
A Ruby wrapper around the Rundeck API.
|
16
15
|
|
17
|
-
This library will strive to achieve reliable
|
18
|
-
|
16
|
+
This library will strive to achieve reliable coverage of the Rundeck API.
|
17
|
+
Please submit an issue if you find a bug and feel
|
19
18
|
free to submit a pull request to contribute fixes or new features.
|
20
19
|
|
21
|
-
|
22
|
-
|
20
|
+
Initial versions of this gem to not achieve 100% coverage of the Rundeck API.
|
21
|
+
Each release will include more and more endpoint support until there is 100%
|
22
|
+
coverage.
|
23
|
+
|
24
|
+
The layout and the code in this library is inspired by
|
25
|
+
https://github.com/NARKOZ/gitlab. NARKOZ does a fantastic job of keeping code
|
26
|
+
simple and achieving API feature parity.
|
23
27
|
|
24
28
|
See http://dblessing.github.io/rundeck-ruby for documentation
|
25
29
|
|
data/lib/rundeck/client.rb
CHANGED
@@ -2,12 +2,6 @@ module Rundeck
|
|
2
2
|
class Client
|
3
3
|
# Defines methods related to executions.
|
4
4
|
module Execution
|
5
|
-
def project_options_query(project, options)
|
6
|
-
options[:query] = {} if options[:query].nil?
|
7
|
-
options[:query]['project'] = project
|
8
|
-
options
|
9
|
-
end
|
10
|
-
|
11
5
|
# Execute a job
|
12
6
|
#
|
13
7
|
# @!macro has_optional_params
|
@@ -177,13 +171,13 @@ module Rundeck
|
|
177
171
|
objectify get('/executions', options)['result']['executions']
|
178
172
|
end
|
179
173
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
174
|
+
private
|
175
|
+
|
176
|
+
def project_options_query(project, options)
|
177
|
+
options[:query] = {} if options[:query].nil?
|
178
|
+
options[:query]['project'] = project
|
179
|
+
options
|
180
|
+
end
|
187
181
|
end
|
188
182
|
end
|
189
183
|
end
|
data/lib/rundeck/client/job.rb
CHANGED
@@ -30,13 +30,12 @@ module Rundeck
|
|
30
30
|
|
31
31
|
# Delete a job
|
32
32
|
#
|
33
|
-
# @TODO: What does this return?!
|
34
|
-
#
|
35
33
|
# @example
|
36
34
|
# Rundeck.delete_job('c07518ef-b697-4792-9a59-5b4f08855b67')
|
37
35
|
#
|
38
36
|
# @param [String] id Job id
|
39
37
|
# @!macro options
|
38
|
+
# @return [nil] if the delete is successful
|
40
39
|
# @!macro exceptions
|
41
40
|
def delete_job(id, options = {})
|
42
41
|
delete("/job/#{id}", options)
|
@@ -23,7 +23,10 @@ module Rundeck
|
|
23
23
|
# Rundeck API documentation for 'POST /api/11/projects' endpoint
|
24
24
|
#
|
25
25
|
# @example
|
26
|
-
#
|
26
|
+
# Rundeck.create_project('{ "name": "json_project" }', 'json')
|
27
|
+
#
|
28
|
+
# @example
|
29
|
+
# Rundeck.create_project('<project><name>xml_project</name></project>', 'xml')
|
27
30
|
#
|
28
31
|
# @param [String] content The job definition(s) as yaml or xml
|
29
32
|
# @param [String] format The project creation format. 'json|xml',
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module Rundeck
|
2
|
+
class Client
|
3
|
+
# Defines methods related to managing security.
|
4
|
+
module Token
|
5
|
+
# List all tokens, or all tokens for a specific user.
|
6
|
+
#
|
7
|
+
# @example
|
8
|
+
# Rundeck.tokens
|
9
|
+
#
|
10
|
+
# @example
|
11
|
+
# Rundeck.tokens('admin')
|
12
|
+
#
|
13
|
+
# @param [String] user List tokens for this user.
|
14
|
+
# @!macro options
|
15
|
+
# @return [Rundeck::ObjectifiedHash] if there is only a single token
|
16
|
+
# @return [Array<Rundeck::ObjectifiedHash>] if there are multiple tokens
|
17
|
+
# @!macro exceptions
|
18
|
+
def tokens(user = nil, options = {})
|
19
|
+
path = user.nil? ? '/tokens' : "/tokens/#{user}"
|
20
|
+
objectify get(path, options)['tokens']
|
21
|
+
end
|
22
|
+
|
23
|
+
# Get a specific token
|
24
|
+
#
|
25
|
+
# @example
|
26
|
+
# Rundeck.token('admin')
|
27
|
+
#
|
28
|
+
# @param [String] id The token id
|
29
|
+
# @!macro options
|
30
|
+
# @return [Rundeck::ObjectifiedHash]
|
31
|
+
# @!macro exceptions
|
32
|
+
def token(id, options = {})
|
33
|
+
objectify get("/token/#{id}", options)['token']
|
34
|
+
end
|
35
|
+
|
36
|
+
# Create a new token for a user
|
37
|
+
#
|
38
|
+
# @example
|
39
|
+
# Rundeck.create_token('user1')
|
40
|
+
#
|
41
|
+
# @param [String] user Create a token for this user
|
42
|
+
# @!macro options
|
43
|
+
# @return [Rundeck::ObjectifiedHash]
|
44
|
+
# @!macro exceptions
|
45
|
+
def create_token(user, options = {})
|
46
|
+
objectify post("/tokens/#{user}", options)['token']
|
47
|
+
end
|
48
|
+
|
49
|
+
# Delete a token
|
50
|
+
#
|
51
|
+
# @example
|
52
|
+
# Rundeck.delete_token('cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd')
|
53
|
+
#
|
54
|
+
# @param [String] id The token id
|
55
|
+
# @!macro options
|
56
|
+
# @return [nil] if the delete is successful
|
57
|
+
# @!macro exceptions
|
58
|
+
def delete_token(id, options = {})
|
59
|
+
delete("/token/#{id}", options)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/rundeck/request.rb
CHANGED
@@ -44,7 +44,7 @@ module Rundeck
|
|
44
44
|
when 503 then fail Error::ServiceUnavailable, error_message(response)
|
45
45
|
end
|
46
46
|
|
47
|
-
response
|
47
|
+
handle_response(response)
|
48
48
|
end
|
49
49
|
|
50
50
|
# Sets a base_uri and default_params for requests.
|
@@ -55,7 +55,7 @@ module Rundeck
|
|
55
55
|
end
|
56
56
|
@api_token = api_token
|
57
57
|
|
58
|
-
self.class.base_uri endpoint
|
58
|
+
self.class.base_uri "#{endpoint}/api/#{Rundeck.api_version}"
|
59
59
|
end
|
60
60
|
|
61
61
|
private
|
@@ -84,6 +84,12 @@ module Rundeck
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
+
def handle_response(response)
|
88
|
+
response.parsed_response
|
89
|
+
rescue MultiXml::ParseError
|
90
|
+
raise Error::Parsing, 'An unexpected error occurred. Please try again'
|
91
|
+
end
|
92
|
+
|
87
93
|
def error_message(response)
|
88
94
|
message = if response.parsed_response && response.parsed_response['result']
|
89
95
|
response.parsed_response['result']['error'][1]['message']
|
data/lib/rundeck/version.rb
CHANGED
@@ -0,0 +1,38 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: http://192.168.50.2:4440/api/12/tokens/admin
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
X-Rundeck-Auth-Token:
|
11
|
+
- cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd
|
12
|
+
Accept:
|
13
|
+
- application/xml
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 201
|
17
|
+
message: Created
|
18
|
+
headers:
|
19
|
+
Set-Cookie:
|
20
|
+
- JSESSIONID=1941ar9mgoofz1m1uwnn1ocgyy;Path=/
|
21
|
+
Expires:
|
22
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
23
|
+
X-Rundeck-Api-Xml-Response-Wrapper:
|
24
|
+
- 'false'
|
25
|
+
Content-Type:
|
26
|
+
- application/xml;charset=UTF-8
|
27
|
+
X-Rundeck-Api-Version:
|
28
|
+
- '12'
|
29
|
+
Transfer-Encoding:
|
30
|
+
- chunked
|
31
|
+
Server:
|
32
|
+
- Jetty(7.6.0.v20120127)
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: <token id='cbsQgUIZBOyCgoipJAwKd1YgfcwPJ0FY' user='admin' />
|
36
|
+
http_version:
|
37
|
+
recorded_at: Sun, 23 Nov 2014 16:00:00 GMT
|
38
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,32 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: delete
|
5
|
+
uri: http://192.168.50.2:4440/api/12/token/cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
X-Rundeck-Auth-Token:
|
11
|
+
- cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd
|
12
|
+
Accept:
|
13
|
+
- application/xml
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 204
|
17
|
+
message: No Content
|
18
|
+
headers:
|
19
|
+
Set-Cookie:
|
20
|
+
- JSESSIONID=13o1yjpqta9yx198hq507djfhw;Path=/
|
21
|
+
Expires:
|
22
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
23
|
+
Content-Type:
|
24
|
+
- text/html;charset=UTF-8
|
25
|
+
Server:
|
26
|
+
- Jetty(7.6.0.v20120127)
|
27
|
+
body:
|
28
|
+
encoding: UTF-8
|
29
|
+
string: ''
|
30
|
+
http_version:
|
31
|
+
recorded_at: Sun, 23 Nov 2014 18:34:34 GMT
|
32
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,41 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: delete
|
5
|
+
uri: http://192.168.50.2:4440/api/12/token/123456
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
X-Rundeck-Auth-Token:
|
11
|
+
- cbsQgUIZBOyCgoipJAwKd1YgfcwPJ0FY
|
12
|
+
Accept:
|
13
|
+
- application/xml
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 404
|
17
|
+
message: Not Found
|
18
|
+
headers:
|
19
|
+
Set-Cookie:
|
20
|
+
- JSESSIONID=u1d9tztnztpug1t3g2mchrtg;Path=/
|
21
|
+
Expires:
|
22
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
23
|
+
Content-Type:
|
24
|
+
- text/xml;charset=UTF-8
|
25
|
+
X-Rundeck-Api-Version:
|
26
|
+
- '12'
|
27
|
+
Transfer-Encoding:
|
28
|
+
- chunked
|
29
|
+
Server:
|
30
|
+
- Jetty(7.6.0.v20120127)
|
31
|
+
body:
|
32
|
+
encoding: UTF-8
|
33
|
+
string: |-
|
34
|
+
<result error='true' apiversion='12'>
|
35
|
+
<error code='api.error.item.doesnotexist'>
|
36
|
+
<message>Token does not exist: 123456</message>
|
37
|
+
</error>
|
38
|
+
</result>
|
39
|
+
http_version:
|
40
|
+
recorded_at: Sun, 23 Nov 2014 18:37:05 GMT
|
41
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,38 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://192.168.50.2:4440/api/12/token/cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
X-Rundeck-Auth-Token:
|
11
|
+
- cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd
|
12
|
+
Accept:
|
13
|
+
- application/xml
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 200
|
17
|
+
message: OK
|
18
|
+
headers:
|
19
|
+
Set-Cookie:
|
20
|
+
- JSESSIONID=wtzic3qqbt2utce9f4dv8nin;Path=/
|
21
|
+
Expires:
|
22
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
23
|
+
X-Rundeck-Api-Xml-Response-Wrapper:
|
24
|
+
- 'false'
|
25
|
+
Content-Type:
|
26
|
+
- application/xml;charset=UTF-8
|
27
|
+
X-Rundeck-Api-Version:
|
28
|
+
- '12'
|
29
|
+
Transfer-Encoding:
|
30
|
+
- chunked
|
31
|
+
Server:
|
32
|
+
- Jetty(7.6.0.v20120127)
|
33
|
+
body:
|
34
|
+
encoding: UTF-8
|
35
|
+
string: <token id='cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd' user='admin' />
|
36
|
+
http_version:
|
37
|
+
recorded_at: Sun, 23 Nov 2014 15:47:50 GMT
|
38
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,41 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://192.168.50.2:4440/api/12/token/123456
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
X-Rundeck-Auth-Token:
|
11
|
+
- cmJQYoy9EAsSd0905yNjKDNGs0ESIwEd
|
12
|
+
Accept:
|
13
|
+
- application/xml
|
14
|
+
response:
|
15
|
+
status:
|
16
|
+
code: 404
|
17
|
+
message: Not Found
|
18
|
+
headers:
|
19
|
+
Set-Cookie:
|
20
|
+
- JSESSIONID=1t9cqr0wjp3o2r25nlk84cvyg;Path=/
|
21
|
+
Expires:
|
22
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
23
|
+
Content-Type:
|
24
|
+
- text/xml;charset=UTF-8
|
25
|
+
X-Rundeck-Api-Version:
|
26
|
+
- '12'
|
27
|
+
Transfer-Encoding:
|
28
|
+
- chunked
|
29
|
+
Server:
|
30
|
+
- Jetty(7.6.0.v20120127)
|
31
|
+
body:
|
32
|
+
encoding: UTF-8
|
33
|
+
string: |-
|
34
|
+
<result error='true' apiversion='12'>
|
35
|
+
<error code='api.error.item.doesnotexist'>
|
36
|
+
<message>Token does not exist: 123456</message>
|
37
|
+
</error>
|
38
|
+
</result>
|
39
|
+
http_version:
|
40
|
+
recorded_at: Sun, 23 Nov 2014 15:47:50 GMT
|
41
|
+
recorded_with: VCR 2.9.3
|