crowbar-client 3.2.1 → 3.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4fa92429ae0597553742dd5918ead9a106d2eb08
4
- data.tar.gz: 939e659025907ef02c2c6af06260ea4623f455ad
3
+ metadata.gz: 3e9ee78b325f208de3dfb08e444318cd016607aa
4
+ data.tar.gz: 9aa5c6c228225c4b824ce10c68f3f7794a0ba0e8
5
5
  SHA512:
6
- metadata.gz: 442e4c585f84bd76b9bfd49e0a9e674746ba5c5bd9da625f0725b823b362272af7d754c43c42b5bb7ecbbd63792111eaf579bc30921ca7f8b428d993303fd25f
7
- data.tar.gz: 7e89f7b328898f472ae7f8a770ee4ac4817b8cfe280b47ca14ba78e0fe4bffd8eb0cfbff4c24b5d9883ce09e07ecf3da958ccc354a986ced74293b33e47e77a6
6
+ metadata.gz: c38b0e4b6b814a194220d455968398d9956252d798883f7108aed6c4824f91a571420351904879825a771c94bf2f68fd96e03956f9d00f9b254ef6e5d493b7c0
7
+ data.tar.gz: 401cd2d10f4289e316acb67200dd610dc2ce47f56ff7f76678b24653f60250859cccd2915c7061a3ae49710e1cf0581705fc307fded3f9caaacdf44bff48f968
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## [3.2.2](https://github.com/crowbar/crowbar-client/releases/tag/v3.2.2) - 2017-03-08
4
+
5
+ * ENHANCEMENT
6
+ * Add support for api/upgrade/mode API
7
+ * BUGFIX
8
+ * Send a reset command on node reset (bsc#1025206)
9
+ * Check for file existance before uploading backup (bsc#1025309)
10
+ * Fix backup upload args (bsc#1026111)
11
+
3
12
  ## [3.2.1](https://github.com/crowbar/crowbar-client/releases/tag/v3.2.1) - 2017-02-14
4
13
 
5
14
  * BUGFIX
@@ -367,6 +367,27 @@ module Crowbar
367
367
  catch_errors(e)
368
368
  end
369
369
 
370
+ desc "mode UPGRADEMODE",
371
+ "Set/Get the upgrade mode (normal|non_disruptive)"
372
+
373
+ long_desc <<-LONGDESC
374
+ `mode` allows you to switch the upgrade mode between `non_disruptive` and `normal`.
375
+ Calling it without any arguments will return the currently selected upgrade mode.
376
+
377
+ Note: Changing the upgrade mode is only possible before starting the `services`
378
+ step.
379
+ LONGDESC
380
+
381
+ def mode(mode = nil)
382
+ Command::Upgrade::Mode.new(
383
+ *command_params(
384
+ mode: mode
385
+ )
386
+ ).execute
387
+ rescue => e
388
+ catch_errors(e)
389
+ end
390
+
370
391
  desc "cancel",
371
392
  "Cancel Crowbar upgrade"
372
393
 
@@ -29,6 +29,9 @@ module Crowbar
29
29
  when File
30
30
  args.file
31
31
  else
32
+ unless File.exist?(args.file)
33
+ err "File #{args.file} does not exist."
34
+ end
32
35
  File.new(
33
36
  args.file,
34
37
  File::RDONLY
@@ -27,7 +27,7 @@ module Crowbar
27
27
  def request
28
28
  @request ||= Request::Node::Reset.new(
29
29
  args.easy_merge(
30
- action: :shutdown
30
+ action: :reset
31
31
  )
32
32
  )
33
33
  end
@@ -33,6 +33,9 @@ module Crowbar
33
33
  autoload :Database,
34
34
  File.expand_path("../upgrade/database", __FILE__)
35
35
 
36
+ autoload :Mode,
37
+ File.expand_path("../upgrade/mode", __FILE__)
38
+
36
39
  autoload :Nodes,
37
40
  File.expand_path("../upgrade/nodes", __FILE__)
38
41
 
@@ -0,0 +1,58 @@
1
+ #
2
+ # Copyright 2017, 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 nodes command
23
+ #
24
+ class Mode < Base
25
+ include Mixin::UpgradeError
26
+
27
+ def request
28
+ @request ||= Request::Upgrade::Mode.new(
29
+ args
30
+ )
31
+ end
32
+
33
+ def execute
34
+ unless ["normal", "non_disruptive", nil].include? args.mode
35
+ err "Invalid upgrade mode '#{args.mode}'. " \
36
+ "Only 'normal' and 'non_disruptive' are valid upgrade modes"
37
+ end
38
+
39
+ method = request.method
40
+ request.process do |request|
41
+ case request.code
42
+ when 200
43
+ if method == :post
44
+ say "Successfully switched to the \"#{args.mode}\" upgrade mode. "
45
+ else
46
+ mode = request.parsed_response["mode"] || "none"
47
+ say "Selected upgrade mode: '#{mode}'"
48
+ end
49
+ else
50
+ err request.parsed_response["error"]
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -38,10 +38,7 @@ module Crowbar
38
38
  def content
39
39
  super.easy_merge!(
40
40
  backup: {
41
- payload: {
42
- multipart: true,
43
- file: attrs.file
44
- }
41
+ file: attrs.file
45
42
  }
46
43
  )
47
44
  end
@@ -33,6 +33,9 @@ module Crowbar
33
33
  autoload :Database,
34
34
  File.expand_path("../upgrade/database", __FILE__)
35
35
 
36
+ autoload :Mode,
37
+ File.expand_path("../upgrade/mode", __FILE__)
38
+
36
39
  autoload :Nodes,
37
40
  File.expand_path("../upgrade/nodes", __FILE__)
38
41
 
@@ -0,0 +1,78 @@
1
+ #
2
+ # Copyright 2017, 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
+ require "easy_diff"
18
+
19
+ module Crowbar
20
+ module Client
21
+ module Request
22
+ module Upgrade
23
+ #
24
+ # Implementation for the upgrade mode request
25
+ #
26
+ class Mode < 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
+
38
+ #
39
+ # Override the request content
40
+ #
41
+ # @return [Hash] the content for the request
42
+ #
43
+ def content
44
+ super.easy_merge!(
45
+ mode: attrs.mode
46
+ )
47
+ end
48
+
49
+ #
50
+ # HTTP method that gets used by the request
51
+ #
52
+ # @return [Symbol] the method for the request
53
+ #
54
+ def method
55
+ if attrs.mode
56
+ :post
57
+ else
58
+ :get
59
+ end
60
+ end
61
+
62
+ #
63
+ # Path to the API endpoint for the request
64
+ #
65
+ # @return [String] path to the API endpoint
66
+ #
67
+ def url
68
+ [
69
+ "api",
70
+ "upgrade",
71
+ "mode"
72
+ ].join("/")
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -33,7 +33,7 @@ module Crowbar
33
33
  #
34
34
  # Patch version
35
35
  #
36
- PATCH = 1
36
+ PATCH = 2
37
37
 
38
38
  #
39
39
  # Optional suffix
@@ -32,4 +32,33 @@ describe "Crowbar::Client::Command::Backup::Upload" do
32
32
  )
33
33
  end
34
34
  end
35
+ context "Using a nonexistant file" do
36
+ it "should show an error message" do
37
+ expect do
38
+ Crowbar::Client::Command::Backup::Upload.new(
39
+ stdin,
40
+ stdout,
41
+ stderr,
42
+ {},
43
+ file: "test"
44
+ ).request
45
+ end.to raise_error(Crowbar::Client::SimpleCatchableError, "File test does not exist.")
46
+ end
47
+ end
48
+
49
+ context "Using a existing file" do
50
+ it "should NOT show an error message" do
51
+ expect do
52
+ Crowbar::Client::Command::Backup::Upload.new(
53
+ stdin,
54
+ stdout,
55
+ stderr,
56
+ {},
57
+ file: fixture_path(
58
+ "upload.tgz"
59
+ )
60
+ ).request
61
+ end.not_to raise_error
62
+ end
63
+ end
35
64
  end
@@ -0,0 +1,31 @@
1
+ #
2
+ # Copyright 2017, 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
+ require_relative "../../../../spec_helper"
18
+
19
+ describe "Crowbar::Client::Command::Upgrade::Mode" do
20
+ include_context "command_context"
21
+
22
+ it_behaves_like "a command class", true do
23
+ subject do
24
+ ::Crowbar::Client::Command::Upgrade::Mode.new(
25
+ stdin,
26
+ stdout,
27
+ stderr
28
+ )
29
+ end
30
+ end
31
+ end
@@ -39,12 +39,9 @@ describe "Crowbar::Client::Request::Backup::Upload" do
39
39
  let!(:params) do
40
40
  {
41
41
  backup: {
42
- payload: {
43
- multipart: true,
44
- file: fixture_path(
45
- "upload.tgz"
46
- ).open.path
47
- }
42
+ file: fixture_path(
43
+ "upload.tgz"
44
+ ).open.path
48
45
  }
49
46
  }
50
47
  end
@@ -0,0 +1,54 @@
1
+ #
2
+ # Copyright 2017, 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
+ require_relative "../../../../spec_helper"
18
+
19
+ describe "Crowbar::Client::Request::Upgrade::Mode" do
20
+ it_behaves_like "a request class", true do
21
+ subject do
22
+ ::Crowbar::Client::Request::Upgrade::Mode.new(
23
+ attrs
24
+ )
25
+ end
26
+
27
+ let!(:attrs) do
28
+ {
29
+ mode: "normal"
30
+ }
31
+ end
32
+
33
+ let!(:params) do
34
+ {
35
+ mode: "normal"
36
+ }
37
+ end
38
+
39
+ let!(:method) do
40
+ :post
41
+ end
42
+
43
+ let!(:url) do
44
+ "api/upgrade/mode"
45
+ end
46
+
47
+ let!(:headers) do
48
+ {
49
+ "Content-Type" => "application/vnd.crowbar.v2.0+json",
50
+ "Accept" => "application/vnd.crowbar.v2.0+json"
51
+ }
52
+ end
53
+ end
54
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crowbar-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.1
4
+ version: 3.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas Boerger
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-02-14 00:00:00.000000000 Z
13
+ date: 2017-03-08 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -320,6 +320,7 @@ files:
320
320
  - lib/crowbar/client/command/upgrade/backup.rb
321
321
  - lib/crowbar/client/command/upgrade/cancel.rb
322
322
  - lib/crowbar/client/command/upgrade/database.rb
323
+ - lib/crowbar/client/command/upgrade/mode.rb
323
324
  - lib/crowbar/client/command/upgrade/nodes.rb
324
325
  - lib/crowbar/client/command/upgrade/prechecks.rb
325
326
  - lib/crowbar/client/command/upgrade/prepare.rb
@@ -421,6 +422,7 @@ files:
421
422
  - lib/crowbar/client/request/upgrade/backup.rb
422
423
  - lib/crowbar/client/request/upgrade/cancel.rb
423
424
  - lib/crowbar/client/request/upgrade/database.rb
425
+ - lib/crowbar/client/request/upgrade/mode.rb
424
426
  - lib/crowbar/client/request/upgrade/nodes.rb
425
427
  - lib/crowbar/client/request/upgrade/prechecks.rb
426
428
  - lib/crowbar/client/request/upgrade/prepare.rb
@@ -492,6 +494,7 @@ files:
492
494
  - spec/crowbar/client/command/upgrade/backup_spec.rb
493
495
  - spec/crowbar/client/command/upgrade/cancel_spec.rb
494
496
  - spec/crowbar/client/command/upgrade/database_spec.rb
497
+ - spec/crowbar/client/command/upgrade/mode_spec.rb
495
498
  - spec/crowbar/client/command/upgrade/nodes_spec.rb
496
499
  - spec/crowbar/client/command/upgrade/prechecks_spec.rb
497
500
  - spec/crowbar/client/command/upgrade/prepare_spec.rb
@@ -555,6 +558,7 @@ files:
555
558
  - spec/crowbar/client/request/upgrade/backup_spec.rb
556
559
  - spec/crowbar/client/request/upgrade/cancel_spec.rb
557
560
  - spec/crowbar/client/request/upgrade/database_spec.rb
561
+ - spec/crowbar/client/request/upgrade/mode_spec.rb
558
562
  - spec/crowbar/client/request/upgrade/nodes_spec.rb
559
563
  - spec/crowbar/client/request/upgrade/prechecks_spec.rb
560
564
  - spec/crowbar/client/request/upgrade/prepare_spec.rb
@@ -655,6 +659,7 @@ test_files:
655
659
  - spec/crowbar/client/command/upgrade/backup_spec.rb
656
660
  - spec/crowbar/client/command/upgrade/cancel_spec.rb
657
661
  - spec/crowbar/client/command/upgrade/database_spec.rb
662
+ - spec/crowbar/client/command/upgrade/mode_spec.rb
658
663
  - spec/crowbar/client/command/upgrade/nodes_spec.rb
659
664
  - spec/crowbar/client/command/upgrade/prechecks_spec.rb
660
665
  - spec/crowbar/client/command/upgrade/prepare_spec.rb
@@ -718,6 +723,7 @@ test_files:
718
723
  - spec/crowbar/client/request/upgrade/backup_spec.rb
719
724
  - spec/crowbar/client/request/upgrade/cancel_spec.rb
720
725
  - spec/crowbar/client/request/upgrade/database_spec.rb
726
+ - spec/crowbar/client/request/upgrade/mode_spec.rb
721
727
  - spec/crowbar/client/request/upgrade/nodes_spec.rb
722
728
  - spec/crowbar/client/request/upgrade/prechecks_spec.rb
723
729
  - spec/crowbar/client/request/upgrade/prepare_spec.rb