knife-google 3.3.6 → 3.3.7

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.
@@ -1,86 +0,0 @@
1
- # frozen_string_literal: true
2
- #
3
- # Author:: Chef Partner Engineering (<partnereng@chef.io>)
4
- # Copyright:: Copyright (c) 2016 Chef Software, Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- require "spec_helper"
21
- require "chef/knife/google_disk_create"
22
- require "support/shared_examples_for_command"
23
-
24
- class Tester
25
- include Chef::Knife::Cloud::GoogleServiceHelpers
26
- end
27
-
28
- describe Chef::Knife::Cloud::GoogleDiskCreate do
29
- let(:tester) { Tester.new }
30
- let(:command) { described_class.new(%w{disk1}) }
31
- let(:service) { double("service") }
32
-
33
- before do
34
- allow(command).to receive(:service).and_return(service)
35
- end
36
-
37
- it_behaves_like Chef::Knife::Cloud::Command, described_class.new
38
-
39
- describe "#validate_params!" do
40
- before do
41
- allow(command).to receive(:check_for_missing_config_values!)
42
- allow(command).to receive(:valid_disk_size?).and_return(true)
43
- end
44
-
45
- it "checks for missing config values" do
46
- expect(command).to receive(:check_for_missing_config_values!).with(:gce_zone, :disk_size, :disk_type)
47
-
48
- command.validate_params!
49
- end
50
-
51
- it "does not raise an exception if all params are good" do
52
- expect { command.validate_params! }.not_to raise_error
53
- end
54
-
55
- it "raises an exception if the disk size is invalid" do
56
- expect(command).to receive(:valid_disk_size?).and_return(false)
57
- expect { command.validate_params! }.to raise_error(RuntimeError, "Disk size must be between 10 and 10,000")
58
- end
59
-
60
- it "raises an exception if the gce_project is missing" do
61
- ui = double("ui")
62
- expect(tester).to receive(:ui).and_return(ui)
63
- expect(tester).to receive(:locate_config_value).with(:gce_project).and_return(nil)
64
- expect(ui).to receive(:error).with("The following required parameters are missing: gce_project")
65
- expect { tester.check_for_missing_config_values! }.to raise_error(RuntimeError)
66
- end
67
-
68
- context "when no disk name is provided" do
69
- let(:command) { described_class.new }
70
- it "raises an exception" do
71
- expect { command.validate_params! }.to raise_error(RuntimeError, "Please specify a disk name.")
72
- end
73
- end
74
- end
75
-
76
- describe "#execute_command" do
77
- it "calls the service to create the disk" do
78
- expect(command).to receive(:locate_config_value).with(:disk_size).and_return("size")
79
- expect(command).to receive(:locate_config_value).with(:disk_type).and_return("type")
80
- expect(command).to receive(:locate_config_value).with(:disk_source).and_return("source")
81
- expect(service).to receive(:create_disk).with("disk1", "size", "type", "source")
82
-
83
- command.execute_command
84
- end
85
- end
86
- end
@@ -1,78 +0,0 @@
1
- # frozen_string_literal: true
2
- #
3
- # Author:: Chef Partner Engineering (<partnereng@chef.io>)
4
- # Copyright:: Copyright (c) 2016 Chef Software, Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- require "spec_helper"
21
- require "chef/knife/google_disk_delete"
22
- require "support/shared_examples_for_command"
23
-
24
- class Tester
25
- include Chef::Knife::Cloud::GoogleServiceHelpers
26
- end
27
-
28
- describe Chef::Knife::Cloud::GoogleDiskDelete do
29
- let(:tester) { Tester.new }
30
- let(:command) { described_class.new(%w{disk1 disk2}) }
31
- let(:service) { double("service") }
32
-
33
- before do
34
- allow(command).to receive(:service).and_return(service)
35
- end
36
-
37
- it_behaves_like Chef::Knife::Cloud::Command, described_class.new
38
-
39
- describe "#validate_params!" do
40
- before do
41
- allow(command).to receive(:check_for_missing_config_values!)
42
- end
43
-
44
- it "checks for missing config values" do
45
- expect(command).to receive(:check_for_missing_config_values!).with(:gce_zone)
46
-
47
- command.validate_params!
48
- end
49
-
50
- it "does not raise an exception if all params are good" do
51
- expect { command.validate_params! }.not_to raise_error
52
- end
53
-
54
- it "raises an exception if the gce_project is missing" do
55
- ui = double("ui")
56
- expect(tester).to receive(:ui).and_return(ui)
57
- expect(tester).to receive(:locate_config_value).with(:gce_project).and_return(nil)
58
- expect(ui).to receive(:error).with("The following required parameters are missing: gce_project")
59
- expect { tester.check_for_missing_config_values! }.to raise_error(RuntimeError)
60
- end
61
-
62
- context "when no disk name is provided" do
63
- let(:command) { described_class.new }
64
- it "raises an exception" do
65
- expect { command.validate_params! }.to raise_error(RuntimeError, "You must specify at least one disk to delete.")
66
- end
67
- end
68
- end
69
-
70
- describe "#execute_command" do
71
- it "calls the service to delete each disk" do
72
- expect(service).to receive(:delete_disk).with("disk1")
73
- expect(service).to receive(:delete_disk).with("disk2")
74
-
75
- command.execute_command
76
- end
77
- end
78
- end
@@ -1,107 +0,0 @@
1
- # frozen_string_literal: true
2
- #
3
- # Author:: Chef Partner Engineering (<partnereng@chef.io>)
4
- # Copyright:: Copyright (c) 2016 Chef Software, Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- require "spec_helper"
21
- require "chef/knife/google_disk_list"
22
- require "support/shared_examples_for_command"
23
-
24
- class Tester
25
- include Chef::Knife::Cloud::GoogleServiceHelpers
26
- end
27
-
28
- describe Chef::Knife::Cloud::GoogleDiskList do
29
- let(:tester) { Tester.new }
30
- let(:command) { described_class.new }
31
- let(:service) { double("service") }
32
-
33
- before do
34
- allow(command).to receive(:service).and_return(service)
35
- end
36
-
37
- it_behaves_like Chef::Knife::Cloud::Command, described_class.new
38
-
39
- describe "#validate_params!" do
40
- it "checks for missing config values" do
41
- expect(command).to receive(:check_for_missing_config_values!).with(:gce_zone)
42
-
43
- command.validate_params!
44
- end
45
-
46
- it "raises an exception if the gce_project is missing" do
47
- ui = double("ui")
48
- expect(tester).to receive(:ui).and_return(ui)
49
- expect(tester).to receive(:locate_config_value).with(:gce_project).and_return(nil)
50
- expect(ui).to receive(:error).with("The following required parameters are missing: gce_project")
51
- expect { tester.check_for_missing_config_values! }.to raise_error(RuntimeError)
52
- end
53
- end
54
-
55
- describe "#query_resource" do
56
- it "uses the service to list disks" do
57
- expect(service).to receive(:list_disks).and_return("disks")
58
- expect(command.query_resource).to eq("disks")
59
- end
60
- end
61
-
62
- describe "#format_status_value" do
63
- it "returns green when the status is ready" do
64
- expect(command.ui).to receive(:color).with("ready", :green)
65
- command.format_status_value("ready")
66
- end
67
-
68
- it "returns red when the status is stopped" do
69
- expect(command.ui).to receive(:color).with("stopped", :red)
70
- command.format_status_value("stopped")
71
- end
72
- end
73
-
74
- describe "#format_disk_type" do
75
- it "returns a properly-formatted disk type" do
76
- expect(command.format_disk_type("a/b/c/disk_type")).to eq("disk_type")
77
- end
78
- end
79
-
80
- describe "#format_source_image" do
81
- it "returns 'unknown' if the source is nil" do
82
- expect(command.format_source_image(nil)).to eq("unknown")
83
- end
84
-
85
- it "returns 'unknown' if the source is empty" do
86
- expect(command.format_source_image([])).to eq("unknown")
87
- end
88
-
89
- it "returns a properly-formatted image URL" do
90
- expect(command.format_source_image("/1/2/3/4/5/6/image_name")).to eq("4/5/6/image_name")
91
- end
92
- end
93
-
94
- describe "#format_users" do
95
- it "returns 'unknown' if the source is nil" do
96
- expect(command.format_users(nil)).to eq("none")
97
- end
98
-
99
- it "returns 'unknown' if the source is empty" do
100
- expect(command.format_users([])).to eq("none")
101
- end
102
-
103
- it "returns a properly-formatted user URL" do
104
- expect(command.format_users(["/1/2/3/4/5/6/user1", "/1/2/3/4/5/6/user2"])).to eq("3/4/5/6/user1, 3/4/5/6/user2")
105
- end
106
- end
107
- end
@@ -1,77 +0,0 @@
1
- # frozen_string_literal: true
2
- #
3
- # Author:: Chef Partner Engineering (<partnereng@chef.io>)
4
- # Copyright:: Copyright (c) 2016 Chef Software, Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- require "spec_helper"
21
- require "chef/knife/google_project_quotas"
22
- require "support/shared_examples_for_command"
23
-
24
- class Tester
25
- include Chef::Knife::Cloud::GoogleServiceHelpers
26
- end
27
-
28
- describe Chef::Knife::Cloud::GoogleProjectQuotas do
29
- let(:tester) { Tester.new }
30
- let(:command) { described_class.new }
31
- let(:service) { double("service") }
32
-
33
- before do
34
- allow(command).to receive(:service).and_return(service)
35
- end
36
-
37
- it_behaves_like Chef::Knife::Cloud::Command, described_class.new
38
-
39
- describe "#validate_params!" do
40
- it "checks for missing config values" do
41
- expect(command).to receive(:check_for_missing_config_values!)
42
-
43
- command.validate_params!
44
- end
45
-
46
- it "raises an exception if the gce_project is missing" do
47
- ui = double("ui")
48
- expect(tester).to receive(:ui).and_return(ui)
49
- expect(tester).to receive(:locate_config_value).with(:gce_project).and_return(nil)
50
- expect(ui).to receive(:error).with("The following required parameters are missing: gce_project")
51
- expect { tester.check_for_missing_config_values! }.to raise_error(RuntimeError)
52
- end
53
- end
54
-
55
- describe "#query_resource" do
56
- it "uses the service to list project quotas" do
57
- expect(service).to receive(:list_project_quotas).and_return("quotas")
58
- expect(command.query_resource).to eq("quotas")
59
- end
60
- end
61
-
62
- describe "#format_name" do
63
- it "returns a properly-formatted name" do
64
- expect(command.format_name("something_cool_here")).to eq("Something Cool Here")
65
- end
66
- end
67
-
68
- describe "#format_number" do
69
- it "returns an integer as a string if the number is a whole number" do
70
- expect(command.format_number(2.0)).to eq("2")
71
- end
72
-
73
- it "returns the number as-is if it is not a whole number" do
74
- expect(command.format_number(2.5)).to eq("2.5")
75
- end
76
- end
77
- end
@@ -1,79 +0,0 @@
1
- # frozen_string_literal: true
2
- #
3
- # Author:: Chef Partner Engineering (<partnereng@chef.io>)
4
- # Copyright:: Copyright (c) 2016 Chef Software, Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- require "spec_helper"
21
- require "chef/knife/google_region_list"
22
- require "support/shared_examples_for_command"
23
-
24
- class Tester
25
- include Chef::Knife::Cloud::GoogleServiceHelpers
26
- end
27
-
28
- describe Chef::Knife::Cloud::GoogleRegionList do
29
- let(:tester) { Tester.new }
30
- let(:command) { described_class.new }
31
- let(:service) { double("service") }
32
-
33
- before do
34
- allow(command).to receive(:service).and_return(service)
35
- end
36
-
37
- it_behaves_like Chef::Knife::Cloud::Command, described_class.new
38
-
39
- describe "#validate_params!" do
40
- it "checks for missing config values" do
41
- expect(command).to receive(:check_for_missing_config_values!)
42
-
43
- command.validate_params!
44
- end
45
-
46
- it "raises an exception if the gce_project is missing" do
47
- ui = double("ui")
48
- expect(tester).to receive(:ui).and_return(ui)
49
- expect(tester).to receive(:locate_config_value).with(:gce_project).and_return(nil)
50
- expect(ui).to receive(:error).with("The following required parameters are missing: gce_project")
51
- expect { tester.check_for_missing_config_values! }.to raise_error(RuntimeError)
52
- end
53
- end
54
-
55
- describe "#query_resource" do
56
- it "uses the service to list regions" do
57
- expect(service).to receive(:list_regions).and_return("regions")
58
- expect(command.query_resource).to eq("regions")
59
- end
60
- end
61
-
62
- describe "#format_status_value" do
63
- it "returns green when the status is up" do
64
- expect(command.ui).to receive(:color).with("up", :green)
65
- command.format_status_value("up")
66
- end
67
-
68
- it "returns red when the status is stopped" do
69
- expect(command.ui).to receive(:color).with("stopped", :red)
70
- command.format_status_value("stopped")
71
- end
72
- end
73
-
74
- describe "#format_zones" do
75
- it "returns properly-formatted zones" do
76
- expect(command.format_zones(["a/b/zone1", "c/d/zone2"])).to eq("zone1, zone2")
77
- end
78
- end
79
- end
@@ -1,122 +0,0 @@
1
- # frozen_string_literal: true
2
- #
3
- # Author:: Chef Partner Engineering (<partnereng@chef.io>)
4
- # Copyright:: Copyright (c) 2016 Chef Software, Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- require "spec_helper"
21
- require "chef/knife/google_region_quotas"
22
- require "support/shared_examples_for_command"
23
-
24
- class Tester
25
- include Chef::Knife::Cloud::GoogleServiceHelpers
26
- end
27
-
28
- describe Chef::Knife::Cloud::GoogleRegionQuotas do
29
- let(:tester) { Tester.new }
30
- let(:command) { described_class.new }
31
- let(:service) { double("service") }
32
-
33
- before do
34
- allow(command).to receive(:service).and_return(service)
35
- end
36
-
37
- it_behaves_like Chef::Knife::Cloud::Command, described_class.new
38
-
39
- describe "#validate_params!" do
40
- it "checks for missing config values" do
41
- expect(command).to receive(:check_for_missing_config_values!)
42
-
43
- command.validate_params!
44
- end
45
-
46
- it "raises an exception if the gce_project is missing" do
47
- ui = double("ui")
48
- expect(tester).to receive(:ui).and_return(ui)
49
- expect(tester).to receive(:locate_config_value).with(:gce_project).and_return(nil)
50
- expect(ui).to receive(:error).with("The following required parameters are missing: gce_project")
51
- expect { tester.check_for_missing_config_values! }.to raise_error(RuntimeError)
52
- end
53
- end
54
-
55
- describe "#execute_command" do
56
- let(:ui) { double("ui") }
57
- let(:regions) { [region1] }
58
-
59
- before do
60
- allow(command).to receive(:ui).and_return(ui)
61
- allow(ui).to receive(:msg)
62
- allow(ui).to receive(:color)
63
- allow(ui).to receive(:list)
64
- expect(service).to receive(:list_regions).and_return(regions)
65
- end
66
-
67
- context "when the quota information for the region is nil" do
68
- let(:region1) { double("region1", name: "my-region", quotas: nil) }
69
-
70
- it "prints a warning and does not output a list" do
71
- expect(ui).to receive(:warn).with("No quota information available for this region.")
72
- expect(ui).not_to receive(:list)
73
- command.execute_command
74
- end
75
- end
76
-
77
- context "when the quota information for the region is empty" do
78
- let(:region1) { double("region1", name: "my-region", quotas: []) }
79
-
80
- it "prints a warning and does not output a list" do
81
- expect(ui).to receive(:warn).with("No quota information available for this region.")
82
- expect(ui).not_to receive(:list)
83
- command.execute_command
84
- end
85
- end
86
-
87
- context "when there is quota information available" do
88
- let(:quota1) { double("quota1", metric: "metric1", limit: "limit1", usage: "usage1") }
89
- let(:quota2) { double("quota2", metric: "metric2", limit: "limit2", usage: "usage2") }
90
- let(:region1) { double("region1", name: "my-region", quotas: [quota1, quota2]) }
91
-
92
- it "formats the output and outputs a list" do
93
- expect(command).to receive(:format_name).with("metric1")
94
- expect(command).to receive(:format_name).with("metric2")
95
- expect(command).to receive(:format_number).with("limit1")
96
- expect(command).to receive(:format_number).with("limit2")
97
- expect(command).to receive(:format_number).with("usage1")
98
- expect(command).to receive(:format_number).with("usage2")
99
- expect(ui).to receive(:list).and_return("list_output")
100
- expect(ui).to receive(:msg).with("list_output")
101
-
102
- command.execute_command
103
- end
104
- end
105
- end
106
-
107
- describe "#format_name" do
108
- it "returns a properly-formatted name" do
109
- expect(command.format_name("something_cool_here")).to eq("Something Cool Here")
110
- end
111
- end
112
-
113
- describe "#format_number" do
114
- it "returns an integer as a string if the number is a whole number" do
115
- expect(command.format_number(2.0)).to eq("2")
116
- end
117
-
118
- it "returns the number as-is if it is not a whole number" do
119
- expect(command.format_number(2.5)).to eq("2.5")
120
- end
121
- end
122
- end