crowbar-client 3.0.1 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +8 -8
  2. data/CHANGELOG.md +7 -0
  3. data/lib/crowbar/client/app.rb +3 -0
  4. data/lib/crowbar/client/app/entry.rb +4 -0
  5. data/lib/crowbar/client/app/upgrade.rb +280 -0
  6. data/lib/crowbar/client/command.rb +3 -0
  7. data/lib/crowbar/client/command/upgrade.rb +50 -0
  8. data/lib/crowbar/client/command/upgrade/backup.rb +45 -0
  9. data/lib/crowbar/client/command/upgrade/crowbar.rb +45 -0
  10. data/lib/crowbar/client/command/upgrade/node.rb +45 -0
  11. data/lib/crowbar/client/command/upgrade/prechecks.rb +61 -0
  12. data/lib/crowbar/client/command/upgrade/prepare.rb +45 -0
  13. data/lib/crowbar/client/command/upgrade/repocheck.rb +61 -0
  14. data/lib/crowbar/client/command/upgrade/services.rb +45 -0
  15. data/lib/crowbar/client/command/upgrade/status.rb +61 -0
  16. data/lib/crowbar/client/config.rb +2 -4
  17. data/lib/crowbar/client/request.rb +3 -0
  18. data/lib/crowbar/client/request/upgrade.rb +50 -0
  19. data/lib/crowbar/client/request/upgrade/backup.rb +83 -0
  20. data/lib/crowbar/client/request/upgrade/crowbar.rb +63 -0
  21. data/lib/crowbar/client/request/upgrade/node.rb +75 -0
  22. data/lib/crowbar/client/request/upgrade/prechecks.rb +63 -0
  23. data/lib/crowbar/client/request/upgrade/prepare.rb +63 -0
  24. data/lib/crowbar/client/request/upgrade/repocheck.rb +72 -0
  25. data/lib/crowbar/client/request/upgrade/services.rb +63 -0
  26. data/lib/crowbar/client/request/upgrade/status.rb +62 -0
  27. data/lib/crowbar/client/version.rb +2 -2
  28. data/spec/crowbar/client/command/upgrade/backup_spec.rb +34 -0
  29. data/spec/crowbar/client/command/upgrade/crowbar_spec.rb +31 -0
  30. data/spec/crowbar/client/command/upgrade/node_spec.rb +32 -0
  31. data/spec/crowbar/client/command/upgrade/prechecks_spec.rb +31 -0
  32. data/spec/crowbar/client/command/upgrade/prepare_spec.rb +31 -0
  33. data/spec/crowbar/client/command/upgrade/repocheck_spec.rb +34 -0
  34. data/spec/crowbar/client/command/upgrade/services_spec.rb +31 -0
  35. data/spec/crowbar/client/command/upgrade/status_spec.rb +31 -0
  36. data/spec/crowbar/client/request/backup/create_spec.rb +4 -0
  37. data/spec/crowbar/client/request/backup/delete_spec.rb +4 -0
  38. data/spec/crowbar/client/request/backup/download_spec.rb +4 -0
  39. data/spec/crowbar/client/request/backup/list_spec.rb +4 -0
  40. data/spec/crowbar/client/request/backup/restore_spec.rb +4 -0
  41. data/spec/crowbar/client/request/backup/upload_spec.rb +4 -0
  42. data/spec/crowbar/client/request/{party_spec.rb → rest_spec.rb} +3 -3
  43. data/spec/crowbar/client/request/upgrade/backup_spec.rb +53 -0
  44. data/spec/crowbar/client/request/upgrade/crowbar_spec.rb +53 -0
  45. data/spec/crowbar/client/request/upgrade/node_spec.rb +55 -0
  46. data/spec/crowbar/client/request/upgrade/prechecks_spec.rb +53 -0
  47. data/spec/crowbar/client/request/upgrade/prepare_spec.rb +53 -0
  48. data/spec/crowbar/client/request/upgrade/repocheck_spec.rb +56 -0
  49. data/spec/crowbar/client/request/upgrade/services_spec.rb +53 -0
  50. data/spec/crowbar/client/request/upgrade/status_spec.rb +53 -0
  51. metadata +55 -4
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YWYxMTliZmFlZGE3ZmExZjM2NzEzNzk2YTI4OWQwNTBiZmU1NTMzMw==
4
+ MWFkZGRhY2FjZmZiODEyOGZlNzhhMWFiNGI2YzdmNzhmYjFmYjczMQ==
5
5
  data.tar.gz: !binary |-
6
- MDEzMDJlYjI3YzEyZDQwMzI0Y2Y1MGRhYjZjMzBhZmIzZDZmM2Q3OA==
6
+ ZGZmMjNkNzYxNzhjZjhhMzg3ZDYxZDZmNzQxNTAzMjE2NTJjZTUyZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZmRkOTJjMGU1Yzk5ODY4MWUxNTljMGM1MDBjZTI2ZTAzN2ExOWExYjk0OTA2
10
- ZWRjNmU1NzlmMGRhMjhmZGE1ZjJhNjYwMWRmMmY1ZGM5MmFhYWY1NWM0MDg3
11
- NjEyMDJjMDAyOTZkNzk0ZTMzNmY2YmZjZjdiNDFmODI4ZWI5ZGY=
9
+ ZmE2MTU3ZDkwZDFhZWZiMGEyOWM1ZjQwMzQ0OGYyZjU0ZWY4MzI5Y2JjNDZi
10
+ NzFkNmQ2YzJhNTNiZGE4YzFlMDY2NWIwODdjYjMyNDQ2YjU1NTZmMTRlOWY3
11
+ NWZmN2ZjNDViNTZjYTI0NzhiZWNhMGVmYTczYjI1NDQ3NWJhYjE=
12
12
  data.tar.gz: !binary |-
13
- Y2Y5YmZhM2M2ZTIyNDI3OTAyOGJkYzJmYjIxNDI3YTJmYTFkNjkyMDFmOTlm
14
- NjFjOGJmZGNlYjYzZTliYzJiYmQ2YmViOGQ5MjJkNjBjMzYwZjk0MGUzMWFl
15
- MDMxMDNjZTQ1ZGI4ZGZlYWFlNTc3NWJiNjEyY2Q2YjdhYjViMWM=
13
+ OTkwNzUzODcxY2EzZTExMzVjYWIwZDNhYWVkMjc5Zjg2NTE3OWIzNjI1OWYz
14
+ MmNiMGNiZjgwMWY1ZDNlM2JlNGNkNTFiZjAxODc0YzY3ZmY4YWNmNzQ1NTQz
15
+ NTEyZTFlNTcyMWI1YWJjY2E3YWE3ZTNkZTljMDc2ZGEyNGQwY2U=
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.1.0](https://github.com/crowbar/crowbar-client/releases/tag/v3.1.0) - 2016-08-23
4
+
5
+ * BUGFIX
6
+ * Set the default apiversion to 1.0 (@MaximilianMeister)
7
+ * ENHANCEMENT
8
+ * Add upgrade subcommand (@MaximilianMeister)
9
+
3
10
  ## [3.0.1](https://github.com/crowbar/crowbar-client/releases/tag/v3.0.1) - 2016-08-19
4
11
 
5
12
  * BUGFIX
@@ -62,6 +62,9 @@ module Crowbar
62
62
  autoload :Server,
63
63
  File.expand_path("../app/server", __FILE__)
64
64
 
65
+ autoload :Upgrade,
66
+ File.expand_path("../app/upgrade", __FILE__)
67
+
65
68
  autoload :VirtualIP,
66
69
  File.expand_path("../app/virtual_ip", __FILE__)
67
70
  end
@@ -148,6 +148,10 @@ module Crowbar
148
148
  desc "installer [COMMANDS]",
149
149
  "Installer specific commands, call without params for help"
150
150
  subcommand "installer", Crowbar::Client::App::Installer
151
+
152
+ desc "upgrade [COMMANDS]",
153
+ "Upgrade specific commands, call without params for help"
154
+ subcommand "upgrade", Crowbar::Client::App::Upgrade
151
155
  end
152
156
  end
153
157
  end
@@ -0,0 +1,280 @@
1
+ #
2
+ # Copyright 2016, SUSE Linux GmbH
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ module Crowbar
18
+ module Client
19
+ module App
20
+ #
21
+ # A Thor based CLI wrapper for upgrade commands
22
+ #
23
+ class Upgrade < Base
24
+ desc "status",
25
+ "Show the status of the upgrade"
26
+
27
+ long_desc <<-LONGDESC
28
+ `status` will print out a status of the upgrade.
29
+ You can display the status in different output formats
30
+ and you can filter the list by any search criteria.
31
+
32
+ With --format <format> option you can choose an output format
33
+ with the available options table, json or plain. You can also
34
+ use the shortcut options --table, --json or --plain.
35
+
36
+ With --filter <filter> option you can limit the result of
37
+ printed out elements. You can use any substring that is part
38
+ of the found elements.
39
+ LONGDESC
40
+
41
+ method_option :format,
42
+ type: :string,
43
+ default: "table",
44
+ banner: "<format>",
45
+ desc: "Format of the output, valid formats are table, json or plain"
46
+
47
+ method_option :table,
48
+ type: :boolean,
49
+ default: false,
50
+ aliases: [],
51
+ desc: "Format output as table, a shortcut for --format table option"
52
+
53
+ method_option :json,
54
+ type: :boolean,
55
+ default: false,
56
+ aliases: [],
57
+ desc: "Format output as table, a shortcut for --format json option"
58
+
59
+ method_option :plain,
60
+ type: :boolean,
61
+ default: false,
62
+ aliases: [],
63
+ desc: "Format output as table, a shortcut for --format plain option"
64
+
65
+ method_option :filter,
66
+ type: :string,
67
+ default: nil,
68
+ banner: "<filter>",
69
+ desc: "Filter by criteria, display only data that contains filter"
70
+
71
+ def status
72
+ Command::Upgrade::Status.new(
73
+ *command_params
74
+ ).execute
75
+ rescue => e
76
+ catch_errors(e)
77
+ end
78
+
79
+ desc "prepare",
80
+ "Prepare Crowbar upgrade"
81
+
82
+ long_desc <<-LONGDESC
83
+ `prepare` will set the nodes to upgrading state
84
+ LONGDESC
85
+
86
+ def prepare
87
+ Command::Upgrade::Prepare.new(
88
+ *command_params
89
+ ).execute
90
+ rescue => e
91
+ catch_errors(e)
92
+ end
93
+
94
+ desc "services",
95
+ "Stop related services on all nodes during upgrade"
96
+
97
+ long_desc <<-LONGDESC
98
+ `services` will stop all related services on all nodes
99
+ during the upgrade.
100
+
101
+ With --format <format> option you can choose an output format
102
+ with the available options table, json or plain. You can also
103
+ use the shortcut options --table, --json or --plain.
104
+
105
+ With --filter <filter> option you can limit the result of
106
+ printed out rows. You can use any substring that is part of
107
+ the found rows.
108
+ LONGDESC
109
+
110
+ def services
111
+ Command::Upgrade::Services.new(
112
+ *command_params
113
+ ).execute
114
+ rescue => e
115
+ catch_errors(e)
116
+ end
117
+
118
+ desc "prechecks",
119
+ "Perform checks to make sure Crowbar can be upgraded"
120
+
121
+ long_desc <<-LONGDESC
122
+ `prechecks` will perform a sanity check on the Crowbar server to
123
+ make sure that the server, nodes and services can be upgraded.
124
+
125
+ With --format <format> option you can choose an output format
126
+ with the available options table, json or plain. You can also
127
+ use the shortcut options --table, --json or --plain.
128
+
129
+ With --filter <filter> option you can limit the result of
130
+ printed out rows. You can use any substring that is part of
131
+ the found rows.
132
+ LONGDESC
133
+
134
+ method_option :format,
135
+ type: :string,
136
+ default: "table",
137
+ banner: "<format>",
138
+ desc: "Format of the output, valid formats are table, json or plain"
139
+
140
+ method_option :table,
141
+ type: :boolean,
142
+ default: false,
143
+ aliases: [],
144
+ desc: "Format output as table, a shortcut for --format table option"
145
+
146
+ method_option :json,
147
+ type: :boolean,
148
+ default: false,
149
+ aliases: [],
150
+ desc: "Format output as table, a shortcut for --format json option"
151
+
152
+ method_option :plain,
153
+ type: :boolean,
154
+ default: false,
155
+ aliases: [],
156
+ desc: "Format output as table, a shortcut for --format plain option"
157
+
158
+ method_option :filter,
159
+ type: :string,
160
+ default: nil,
161
+ banner: "<filter>",
162
+ desc: "Filter by criteria, display only data that contains filter"
163
+
164
+ def prechecks
165
+ Command::Upgrade::Prechecks.new(
166
+ *command_params
167
+ ).execute
168
+ rescue => e
169
+ catch_errors(e)
170
+ end
171
+
172
+ desc "crowbar",
173
+ "Upgrade Crowbar"
174
+
175
+ long_desc <<-LONGDESC
176
+ `crowbar` will upgrade the operating system of the Crowbar server.
177
+ LONGDESC
178
+
179
+ def crowbar
180
+ Command::Upgrade::Crowbar.new(
181
+ *command_params
182
+ ).execute
183
+ rescue => e
184
+ catch_errors(e)
185
+ end
186
+
187
+ desc "node NODE",
188
+ "Upgrade a single node"
189
+
190
+ long_desc <<-LONGDESC
191
+ `node NODE` will upgrade the operating system of a single node.
192
+ LONGDESC
193
+
194
+ def node(node)
195
+ Command::Upgrade::Node.new(
196
+ *command_params(
197
+ node: node
198
+ )
199
+ ).execute
200
+ rescue => e
201
+ catch_errors(e)
202
+ end
203
+
204
+ desc "backup COMPONENT",
205
+ "Create a backup of a component (crowbar|openstack)"
206
+
207
+ long_desc <<-LONGDESC
208
+ `backup COMPONENT` will create a backup of Crowbar or the
209
+ OpenStack database. COMPONENT can be 'crowbar' or 'openstack'
210
+ LONGDESC
211
+
212
+ def backup(component)
213
+ Command::Upgrade::Backup.new(
214
+ *command_params(
215
+ component: component
216
+ )
217
+ ).execute
218
+ rescue => e
219
+ catch_errors(e)
220
+ end
221
+
222
+ desc "repocheck ADDON",
223
+ "Check for existing repositories for an addon (ha|storage)"
224
+
225
+ long_desc <<-LONGDESC
226
+ `repocheck ADDON` will check for existing repositories
227
+ for a specifix addon product. ADDON can be 'storage' or 'ha'
228
+
229
+ With --format <format> option you can choose an output format
230
+ with the available options table, json or plain. You can also
231
+ use the shortcut options --table, --json or --plain.
232
+
233
+ With --filter <filter> option you can limit the result of
234
+ printed out rows. You can use any substring that is part of
235
+ the found rows.
236
+ LONGDESC
237
+
238
+ method_option :format,
239
+ type: :string,
240
+ default: "table",
241
+ banner: "<format>",
242
+ desc: "Format of the output, valid formats are table, json or plain"
243
+
244
+ method_option :table,
245
+ type: :boolean,
246
+ default: false,
247
+ aliases: [],
248
+ desc: "Format output as table, a shortcut for --format table option"
249
+
250
+ method_option :json,
251
+ type: :boolean,
252
+ default: false,
253
+ aliases: [],
254
+ desc: "Format output as table, a shortcut for --format json option"
255
+
256
+ method_option :plain,
257
+ type: :boolean,
258
+ default: false,
259
+ aliases: [],
260
+ desc: "Format output as table, a shortcut for --format plain option"
261
+
262
+ method_option :filter,
263
+ type: :string,
264
+ default: nil,
265
+ banner: "<filter>",
266
+ desc: "Filter by criteria, display only data that contains filter"
267
+
268
+ def repocheck(addon)
269
+ Command::Upgrade::Repocheck.new(
270
+ *command_params(
271
+ addon: addon
272
+ )
273
+ ).execute
274
+ rescue => e
275
+ catch_errors(e)
276
+ end
277
+ end
278
+ end
279
+ end
280
+ end
@@ -56,6 +56,9 @@ module Crowbar
56
56
  autoload :Server,
57
57
  File.expand_path("../command/server", __FILE__)
58
58
 
59
+ autoload :Upgrade,
60
+ File.expand_path("../command/upgrade", __FILE__)
61
+
59
62
  autoload :VirtualIP,
60
63
  File.expand_path("../command/virtual_ip", __FILE__)
61
64
  end
@@ -0,0 +1,50 @@
1
+ #
2
+ # Copyright 2016, SUSE Linux GmbH
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ module Crowbar
18
+ module Client
19
+ module Command
20
+ #
21
+ # Module for the upgrade command implementations
22
+ #
23
+ module Upgrade
24
+ autoload :Backup,
25
+ File.expand_path("../upgrade/backup", __FILE__)
26
+
27
+ autoload :Crowbar,
28
+ File.expand_path("../upgrade/crowbar", __FILE__)
29
+
30
+ autoload :Node,
31
+ File.expand_path("../upgrade/node", __FILE__)
32
+
33
+ autoload :Prechecks,
34
+ File.expand_path("../upgrade/prechecks", __FILE__)
35
+
36
+ autoload :Prepare,
37
+ File.expand_path("../upgrade/prepare", __FILE__)
38
+
39
+ autoload :Repocheck,
40
+ File.expand_path("../upgrade/repocheck", __FILE__)
41
+
42
+ autoload :Services,
43
+ File.expand_path("../upgrade/services", __FILE__)
44
+
45
+ autoload :Status,
46
+ File.expand_path("../upgrade/status", __FILE__)
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,45 @@
1
+ #
2
+ # Copyright 2015, SUSE Linux GmbH
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ module Crowbar
18
+ module Client
19
+ module Command
20
+ module Upgrade
21
+ #
22
+ # Implementation for the upgrade backup command
23
+ #
24
+ class Backup < Base
25
+ def request
26
+ @request ||= Request::Upgrade::Backup.new(
27
+ args
28
+ )
29
+ end
30
+
31
+ def execute
32
+ request.process do |request|
33
+ case request.code
34
+ when 200
35
+ say "Successfully created backup for #{args.component}"
36
+ else
37
+ err request.parsed_response["error"]
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end