crowbar-client 2.4.3 → 3.0.0
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 -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
|