crowbar-client 2.4.3 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/lib/crowbar/client/app/repository.rb +12 -10
- data/lib/crowbar/client/app/role.rb +2 -2
- data/lib/crowbar/client/command/proposal/create.rb +2 -2
- data/lib/crowbar/client/command/repository/list.rb +8 -5
- data/lib/crowbar/client/command/role/show.rb +2 -2
- data/lib/crowbar/client/config.rb +1 -1
- data/lib/crowbar/client/mixin/barclamp.rb +1 -1
- data/lib/crowbar/client/request.rb +3 -3
- data/lib/crowbar/client/request/backup/create.rb +16 -2
- data/lib/crowbar/client/request/backup/delete.rb +15 -1
- data/lib/crowbar/client/request/backup/download.rb +3 -3
- data/lib/crowbar/client/request/backup/list.rb +15 -1
- data/lib/crowbar/client/request/backup/restore.rb +15 -1
- data/lib/crowbar/client/request/backup/upload.rb +23 -7
- data/lib/crowbar/client/request/base.rb +35 -53
- data/lib/crowbar/client/request/batch/build.rb +5 -4
- data/lib/crowbar/client/request/proposal/create.rb +1 -1
- data/lib/crowbar/client/request/repository/activate.rb +1 -0
- data/lib/crowbar/client/request/repository/deactivate.rb +1 -0
- data/lib/crowbar/client/request/rest.rb +45 -0
- data/lib/crowbar/client/util.rb +3 -0
- data/lib/crowbar/client/util/apiversion.rb +36 -0
- data/lib/crowbar/client/version.rb +3 -3
- data/spec/crowbar/client/command/proposal/create_spec.rb +3 -3
- data/spec/crowbar/client/command/proposal/edit_spec.rb +3 -3
- data/spec/crowbar/client/request/backup/create_spec.rb +6 -4
- data/spec/crowbar/client/request/backup/delete_spec.rb +3 -3
- data/spec/crowbar/client/request/backup/download_spec.rb +1 -1
- data/spec/crowbar/client/request/backup/list_spec.rb +3 -3
- data/spec/crowbar/client/request/backup/restore_spec.rb +3 -3
- data/spec/crowbar/client/request/backup/upload_spec.rb +13 -4
- data/spec/crowbar/client/request/batch/build_spec.rb +7 -1
- data/spec/crowbar/client/request/repository/activate_spec.rb +2 -0
- data/spec/crowbar/client/request/repository/deactivate_spec.rb +2 -0
- data/spec/support/request_examples.rb +12 -14
- metadata +118 -104
- data/lib/crowbar/client/request/party.rb +0 -82
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b731c1c97fffa975e7984c69201175b40747a6c
|
4
|
+
data.tar.gz: eb713da64767ffbd8a11a419b00af7a80ca40fb1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d85ccb27fa7428c469d3718205ba2e3012e31461dabc16384545c65ad614f24eab9a478b514a674458cf308fdb67dfb141839fe3f57b9ad1aa8ccedf0a8dc00a
|
7
|
+
data.tar.gz: 515d9f42654a8f0cb62b42444d91b1da56760bf6c54df92706ee740f03e5fea51fefd346c08d6c900d84b1fa32d4ff48196661b443d3d0fbca3e71d5ceaabdc3
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## [3.0.0](https://github.com/crowbar/crowbar-client/releases/tag/v3.0.0) - 2016-08-16
|
4
|
+
|
5
|
+
* BREAKING
|
6
|
+
* Adapt backups subcommand to the new api 2.0 (@MaximilianMeister)
|
7
|
+
* BUGFIX
|
8
|
+
* Fix repository handling (bsc#993445) (@MaximilianMeister)
|
9
|
+
* ENHANCEMENT
|
10
|
+
* Added lgtm config (@rsalevsky)
|
11
|
+
* Clarify command role show (@itxaka)
|
12
|
+
* Replace httparty/httmultiparty with rest-client (@MaximilianMeister)
|
13
|
+
|
3
14
|
## [2.4.3](https://github.com/crowbar/crowbar-client/releases/tag/v2.4.3) - 2016-07-06
|
4
15
|
|
5
16
|
* BUGFIX
|
@@ -77,18 +77,19 @@ module Crowbar
|
|
77
77
|
catch_errors(e)
|
78
78
|
end
|
79
79
|
|
80
|
-
desc "activate PLATFORM REPO",
|
81
|
-
"Activate a repository for a platform"
|
80
|
+
desc "activate PLATFORM ARCH REPO",
|
81
|
+
"Activate a repository for a platform on a specific architecture"
|
82
82
|
|
83
83
|
long_desc <<-LONGDESC
|
84
|
-
`activate PLATFORM REPO` will try to activate the
|
85
|
-
specified repository for the specified platform.
|
84
|
+
`activate PLATFORM ARCH REPO` will try to activate the
|
85
|
+
specified repository for the specified platform and architecture.
|
86
86
|
LONGDESC
|
87
87
|
|
88
|
-
def activate(platform, repo)
|
88
|
+
def activate(platform, arch, repo)
|
89
89
|
Command::Repository::Activate.new(
|
90
90
|
*command_params(
|
91
91
|
platform: platform,
|
92
|
+
arch: arch,
|
92
93
|
repo: repo
|
93
94
|
)
|
94
95
|
).execute
|
@@ -112,18 +113,19 @@ module Crowbar
|
|
112
113
|
catch_errors(e)
|
113
114
|
end
|
114
115
|
|
115
|
-
desc "deactivate PLATFORM REPO",
|
116
|
-
"Deactivate a repository for a platform"
|
116
|
+
desc "deactivate PLATFORM ARCH REPO",
|
117
|
+
"Deactivate a repository for a platform on a specific architecture"
|
117
118
|
|
118
119
|
long_desc <<-LONGDESC
|
119
|
-
`deactivate PLATFORM REPO` will try to deactivate the
|
120
|
-
specified repository for the specified platform.
|
120
|
+
`deactivate PLATFORM ARCH REPO` will try to deactivate the
|
121
|
+
specified repository for the specified platform and architecture.
|
121
122
|
LONGDESC
|
122
123
|
|
123
|
-
def deactivate(platform, repo)
|
124
|
+
def deactivate(platform, arch, repo)
|
124
125
|
Command::Repository::Deactivate.new(
|
125
126
|
*command_params(
|
126
127
|
platform: platform,
|
128
|
+
arch: arch,
|
127
129
|
repo: repo
|
128
130
|
)
|
129
131
|
).execute
|
@@ -83,8 +83,8 @@ module Crowbar
|
|
83
83
|
"Show details of a specific role"
|
84
84
|
|
85
85
|
long_desc <<-LONGDESC
|
86
|
-
`show BARCLAMP ROLE` will print out the
|
87
|
-
|
86
|
+
`show BARCLAMP ROLE` will print out the nodes available to
|
87
|
+
assign the role. You can display the details in
|
88
88
|
different output formats and you can filter the details by any
|
89
89
|
search criteria.
|
90
90
|
|
@@ -37,7 +37,7 @@ module Crowbar
|
|
37
37
|
when 200
|
38
38
|
formatter = Formatter::Hash.new(
|
39
39
|
format: provide_format,
|
40
|
-
headings: ["Platform", "
|
40
|
+
headings: ["Platform", "Architecture", "Repository"],
|
41
41
|
values: Filter::Hash.new(
|
42
42
|
filter: provide_filter,
|
43
43
|
values: content_from(request)
|
@@ -60,10 +60,13 @@ module Crowbar
|
|
60
60
|
def content_from(request)
|
61
61
|
[].tap do |row|
|
62
62
|
request.parsed_response.each do |child|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
63
|
+
child["repos"].each do |repo|
|
64
|
+
row.push(
|
65
|
+
platform: repo["platform"],
|
66
|
+
arch: repo["arch"],
|
67
|
+
repo: repo["id"]
|
68
|
+
)
|
69
|
+
end
|
67
70
|
end
|
68
71
|
end
|
69
72
|
end
|
@@ -41,7 +41,7 @@ module Crowbar
|
|
41
41
|
when 200
|
42
42
|
formatter = Formatter::Array.new(
|
43
43
|
format: provide_format,
|
44
|
-
headings: ["
|
44
|
+
headings: ["Nodes available to assign the role"],
|
45
45
|
values: Filter::Array.new(
|
46
46
|
filter: provide_filter,
|
47
47
|
values: content_from(request)
|
@@ -49,7 +49,7 @@ module Crowbar
|
|
49
49
|
)
|
50
50
|
|
51
51
|
if formatter.empty?
|
52
|
-
err "No nodes"
|
52
|
+
err "No nodes available to assign the role"
|
53
53
|
else
|
54
54
|
say formatter.result
|
55
55
|
end
|
@@ -44,15 +44,15 @@ module Crowbar
|
|
44
44
|
autoload :Node,
|
45
45
|
File.expand_path("../request/node", __FILE__)
|
46
46
|
|
47
|
-
autoload :Party,
|
48
|
-
File.expand_path("../request/party", __FILE__)
|
49
|
-
|
50
47
|
autoload :Proposal,
|
51
48
|
File.expand_path("../request/proposal", __FILE__)
|
52
49
|
|
53
50
|
autoload :Repository,
|
54
51
|
File.expand_path("../request/repository", __FILE__)
|
55
52
|
|
53
|
+
autoload :Rest,
|
54
|
+
File.expand_path("../request/rest", __FILE__)
|
55
|
+
|
56
56
|
autoload :Role,
|
57
57
|
File.expand_path("../request/role", __FILE__)
|
58
58
|
|
@@ -24,6 +24,17 @@ module Crowbar
|
|
24
24
|
# Implementation for the backup create request
|
25
25
|
#
|
26
26
|
class Create < Base
|
27
|
+
#
|
28
|
+
# Override the request headers
|
29
|
+
#
|
30
|
+
# @return [Hash] the headers for the request
|
31
|
+
#
|
32
|
+
def headers
|
33
|
+
super.easy_merge!(
|
34
|
+
Crowbar::Client::Util::ApiVersion.new(2.0).headers
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
27
38
|
#
|
28
39
|
# Override the request content
|
29
40
|
#
|
@@ -31,7 +42,9 @@ module Crowbar
|
|
31
42
|
#
|
32
43
|
def content
|
33
44
|
super.easy_merge!(
|
34
|
-
|
45
|
+
backup: {
|
46
|
+
name: attrs.name
|
47
|
+
}
|
35
48
|
)
|
36
49
|
end
|
37
50
|
|
@@ -51,7 +64,8 @@ module Crowbar
|
|
51
64
|
#
|
52
65
|
def url
|
53
66
|
[
|
54
|
-
"
|
67
|
+
"api",
|
68
|
+
"crowbar",
|
55
69
|
"backups"
|
56
70
|
].join("/")
|
57
71
|
end
|
@@ -14,6 +14,8 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
+
require "easy_diff"
|
18
|
+
|
17
19
|
module Crowbar
|
18
20
|
module Client
|
19
21
|
module Request
|
@@ -22,6 +24,17 @@ module Crowbar
|
|
22
24
|
# Implementation for the backup delete request
|
23
25
|
#
|
24
26
|
class Delete < Base
|
27
|
+
#
|
28
|
+
# Override the request headers
|
29
|
+
#
|
30
|
+
# @return [Hash] the headers for the request
|
31
|
+
#
|
32
|
+
def headers
|
33
|
+
super.easy_merge!(
|
34
|
+
Crowbar::Client::Util::ApiVersion.new(2.0).headers
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
25
38
|
#
|
26
39
|
# HTTP method that gets used by the request
|
27
40
|
#
|
@@ -38,7 +51,8 @@ module Crowbar
|
|
38
51
|
#
|
39
52
|
def url
|
40
53
|
[
|
41
|
-
"
|
54
|
+
"api",
|
55
|
+
"crowbar",
|
42
56
|
"backups",
|
43
57
|
attrs.name
|
44
58
|
].join("/")
|
@@ -26,8 +26,7 @@ module Crowbar
|
|
26
26
|
class Download < Base
|
27
27
|
def headers
|
28
28
|
super.easy_merge!(
|
29
|
-
|
30
|
-
"Accept" => "application/octet-stream"
|
29
|
+
Crowbar::Client::Util::ApiVersion.new(2.0).headers
|
31
30
|
)
|
32
31
|
end
|
33
32
|
|
@@ -47,7 +46,8 @@ module Crowbar
|
|
47
46
|
#
|
48
47
|
def url
|
49
48
|
[
|
50
|
-
"
|
49
|
+
"api",
|
50
|
+
"crowbar",
|
51
51
|
"backups",
|
52
52
|
attrs.name,
|
53
53
|
"download"
|
@@ -14,6 +14,8 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
+
require "easy_diff"
|
18
|
+
|
17
19
|
module Crowbar
|
18
20
|
module Client
|
19
21
|
module Request
|
@@ -22,6 +24,17 @@ module Crowbar
|
|
22
24
|
# Implementation for the backup list request
|
23
25
|
#
|
24
26
|
class List < Base
|
27
|
+
#
|
28
|
+
# Override the request headers
|
29
|
+
#
|
30
|
+
# @return [Hash] the headers for the request
|
31
|
+
#
|
32
|
+
def headers
|
33
|
+
super.easy_merge!(
|
34
|
+
Crowbar::Client::Util::ApiVersion.new(2.0).headers
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
25
38
|
#
|
26
39
|
# HTTP method that gets used by the request
|
27
40
|
#
|
@@ -38,7 +51,8 @@ module Crowbar
|
|
38
51
|
#
|
39
52
|
def url
|
40
53
|
[
|
41
|
-
"
|
54
|
+
"api",
|
55
|
+
"crowbar",
|
42
56
|
"backups"
|
43
57
|
].join("/")
|
44
58
|
end
|
@@ -14,6 +14,8 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
+
require "easy_diff"
|
18
|
+
|
17
19
|
module Crowbar
|
18
20
|
module Client
|
19
21
|
module Request
|
@@ -22,6 +24,17 @@ module Crowbar
|
|
22
24
|
# Implementation for the backup restore request
|
23
25
|
#
|
24
26
|
class Restore < Base
|
27
|
+
#
|
28
|
+
# Override the request headers
|
29
|
+
#
|
30
|
+
# @return [Hash] the headers for the request
|
31
|
+
#
|
32
|
+
def headers
|
33
|
+
super.easy_merge!(
|
34
|
+
Crowbar::Client::Util::ApiVersion.new(2.0).headers
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
25
38
|
#
|
26
39
|
# HTTP method that gets used by the request
|
27
40
|
#
|
@@ -38,7 +51,8 @@ module Crowbar
|
|
38
51
|
#
|
39
52
|
def url
|
40
53
|
[
|
41
|
-
"
|
54
|
+
"api",
|
55
|
+
"crowbar",
|
42
56
|
"backups",
|
43
57
|
attrs.name,
|
44
58
|
"restore"
|
@@ -14,6 +14,8 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
+
require "easy_diff"
|
18
|
+
|
17
19
|
module Crowbar
|
18
20
|
module Client
|
19
21
|
module Request
|
@@ -22,13 +24,26 @@ module Crowbar
|
|
22
24
|
# Implementation for the backup upload request
|
23
25
|
#
|
24
26
|
class Upload < Base
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
#
|
28
|
+
# Override the request headers
|
29
|
+
#
|
30
|
+
# @return [Hash] the headers for the request
|
31
|
+
#
|
32
|
+
def headers
|
33
|
+
super.easy_merge!(
|
34
|
+
Crowbar::Client::Util::ApiVersion.new(2.0).headers
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
38
|
+
def content
|
39
|
+
super.easy_merge!(
|
40
|
+
backup: {
|
41
|
+
payload: {
|
42
|
+
multipart: true,
|
43
|
+
file: attrs.file
|
44
|
+
}
|
30
45
|
}
|
31
|
-
|
46
|
+
)
|
32
47
|
end
|
33
48
|
|
34
49
|
#
|
@@ -47,7 +62,8 @@ module Crowbar
|
|
47
62
|
#
|
48
63
|
def url
|
49
64
|
[
|
50
|
-
"
|
65
|
+
"api",
|
66
|
+
"crowbar",
|
51
67
|
"backups",
|
52
68
|
"upload"
|
53
69
|
].join("/")
|
@@ -31,7 +31,7 @@ module Crowbar
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def request
|
34
|
-
@request ||=
|
34
|
+
@request ||= Rest.new(url: url)
|
35
35
|
end
|
36
36
|
|
37
37
|
def content
|
@@ -46,25 +46,43 @@ module Crowbar
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def params
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
49
|
+
case method
|
50
|
+
when :post
|
51
|
+
[
|
52
|
+
method,
|
53
|
+
content
|
54
|
+
]
|
55
|
+
when :put
|
56
|
+
[
|
57
|
+
method,
|
58
|
+
content.to_json
|
59
|
+
]
|
60
|
+
else
|
61
|
+
[
|
62
|
+
method
|
63
|
+
]
|
64
|
+
end
|
53
65
|
end
|
54
66
|
|
55
67
|
def process
|
56
|
-
result =
|
57
|
-
|
58
|
-
|
59
|
-
"
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
+
result = begin
|
69
|
+
request.send(
|
70
|
+
*params,
|
71
|
+
accept: headers["Accept"],
|
72
|
+
content_type: headers["Content-Type"]
|
73
|
+
)
|
74
|
+
rescue => e
|
75
|
+
if e.class.superclass == RestClient::RequestFailed
|
76
|
+
Hashie::Mash.new(
|
77
|
+
parsed_response: {
|
78
|
+
error: e.message
|
79
|
+
},
|
80
|
+
code: e.http_code
|
81
|
+
)
|
82
|
+
else
|
83
|
+
raise e
|
84
|
+
end
|
85
|
+
end
|
68
86
|
|
69
87
|
if block_given?
|
70
88
|
yield result
|
@@ -72,42 +90,6 @@ module Crowbar
|
|
72
90
|
result
|
73
91
|
end
|
74
92
|
end
|
75
|
-
|
76
|
-
def errors
|
77
|
-
{
|
78
|
-
401 => :not_authorized,
|
79
|
-
403 => :not_authorized,
|
80
|
-
500 => :internal_server,
|
81
|
-
502 => :bad_gateway,
|
82
|
-
503 => :service_unavailable,
|
83
|
-
504 => :gateway_timeout
|
84
|
-
}
|
85
|
-
end
|
86
|
-
|
87
|
-
def not_authorized
|
88
|
-
raise NotAuthorizedError,
|
89
|
-
"User is not authorized"
|
90
|
-
end
|
91
|
-
|
92
|
-
def internal_server
|
93
|
-
raise InternalServerError,
|
94
|
-
"An internal error occured"
|
95
|
-
end
|
96
|
-
|
97
|
-
def bad_gateway
|
98
|
-
raise BadGatewayError,
|
99
|
-
"Received a bad gateway error"
|
100
|
-
end
|
101
|
-
|
102
|
-
def service_unavailable
|
103
|
-
raise ServiceUnavailableError,
|
104
|
-
"Service is not available"
|
105
|
-
end
|
106
|
-
|
107
|
-
def gateway_timeout
|
108
|
-
raise GatewayTimeoutError,
|
109
|
-
"Received a gateway timeout"
|
110
|
-
end
|
111
93
|
end
|
112
94
|
end
|
113
95
|
end
|