knife-profitbricks 1.2.1 → 2.0.1

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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +303 -96
  4. data/knife-profitbricks.gemspec +1 -1
  5. data/lib/chef/knife/profitbricks_base.rb +24 -0
  6. data/lib/chef/knife/profitbricks_composite_server_create.rb +59 -45
  7. data/lib/chef/knife/profitbricks_contract_list.rb +37 -0
  8. data/lib/chef/knife/profitbricks_datacenter_create.rb +8 -7
  9. data/lib/chef/knife/profitbricks_firewall_create.rb +15 -15
  10. data/lib/chef/knife/profitbricks_firewall_delete.rb +6 -8
  11. data/lib/chef/knife/profitbricks_firewall_list.rb +6 -5
  12. data/lib/chef/knife/profitbricks_ipblock_create.rb +6 -7
  13. data/lib/chef/knife/profitbricks_ipfailover_add.rb +60 -0
  14. data/lib/chef/knife/profitbricks_ipfailover_remove.rb +60 -0
  15. data/lib/chef/knife/profitbricks_lan_create.rb +5 -3
  16. data/lib/chef/knife/profitbricks_lan_list.rb +1 -1
  17. data/lib/chef/knife/profitbricks_nic_create.rb +12 -14
  18. data/lib/chef/knife/profitbricks_nic_delete.rb +4 -3
  19. data/lib/chef/knife/profitbricks_nic_list.rb +4 -3
  20. data/lib/chef/knife/profitbricks_server_create.rb +14 -16
  21. data/lib/chef/knife/profitbricks_server_delete.rb +1 -1
  22. data/lib/chef/knife/profitbricks_server_list.rb +1 -1
  23. data/lib/chef/knife/profitbricks_server_reboot.rb +1 -1
  24. data/lib/chef/knife/profitbricks_server_start.rb +1 -1
  25. data/lib/chef/knife/profitbricks_server_stop.rb +1 -1
  26. data/lib/chef/knife/profitbricks_volume_attach.rb +5 -5
  27. data/lib/chef/knife/profitbricks_volume_create.rb +38 -18
  28. data/lib/chef/knife/profitbricks_volume_delete.rb +1 -1
  29. data/lib/chef/knife/profitbricks_volume_detach.rb +4 -4
  30. data/lib/chef/knife/profitbricks_volume_list.rb +5 -6
  31. data/lib/knife-profitbricks/version.rb +1 -1
  32. data/spec/chef/knife/profitbricks_composite_server_create_spec.rb +64 -0
  33. data/spec/chef/knife/profitbricks_contract_list_spec.rb +20 -0
  34. data/spec/chef/knife/profitbricks_datacenter_create_spec.rb +44 -0
  35. data/spec/chef/knife/profitbricks_datacenter_delete_spec.rb +39 -0
  36. data/spec/chef/knife/profitbricks_datacenter_list_spec.rb +7 -6
  37. data/spec/chef/knife/profitbricks_firewall_create_spec.rb +74 -0
  38. data/spec/chef/knife/profitbricks_firewall_delete_spec.rb +86 -0
  39. data/spec/chef/knife/profitbricks_firewall_list_spec.rb +61 -0
  40. data/spec/chef/knife/profitbricks_image_list_spec.rb +19 -0
  41. data/spec/chef/knife/profitbricks_ipblock_create_spec.rb +39 -0
  42. data/spec/chef/knife/profitbricks_ipblock_delete_spec.rb +37 -0
  43. data/spec/chef/knife/profitbricks_ipfailover_add_spec.rb +80 -0
  44. data/spec/chef/knife/profitbricks_ipfailover_remove_spec.rb +85 -0
  45. data/spec/chef/knife/profitbricks_lan_create_spec.rb +59 -0
  46. data/spec/chef/knife/profitbricks_lan_delete_spec.rb +58 -0
  47. data/spec/chef/knife/profitbricks_lan_list_spec.rb +37 -0
  48. data/spec/chef/knife/profitbricks_location_list_spec.rb +24 -0
  49. data/spec/chef/knife/profitbricks_nic_create_spec.rb +71 -0
  50. data/spec/chef/knife/profitbricks_nic_delete_spec.rb +69 -0
  51. data/spec/chef/knife/profitbricks_nic_list_spec.rb +69 -0
  52. data/spec/chef/knife/profitbricks_server_create_spec.rb +63 -0
  53. data/spec/chef/knife/profitbricks_server_delete_spec.rb +63 -0
  54. data/spec/chef/knife/profitbricks_server_list_spec.rb +65 -0
  55. data/spec/chef/knife/profitbricks_server_reboot_spec.rb +65 -0
  56. data/spec/chef/knife/profitbricks_server_start_spec.rb +68 -0
  57. data/spec/chef/knife/profitbricks_server_stop_spec.rb +65 -0
  58. data/spec/chef/knife/profitbricks_volume_attach_spec.rb +70 -0
  59. data/spec/chef/knife/profitbricks_volume_create_spec.rb +63 -0
  60. data/spec/chef/knife/profitbricks_volume_delete_spec.rb +70 -0
  61. data/spec/chef/knife/profitbricks_volume_detach_spec.rb +81 -0
  62. data/spec/chef/knife/profitbricks_volume_list_spec.rb +80 -0
  63. data/spec/spec_helper.rb +22 -3
  64. data/spec/test.sh +1 -1
  65. metadata +81 -18
@@ -0,0 +1,71 @@
1
+ require 'spec_helper'
2
+ require 'profitbricks_nic_create'
3
+
4
+ Chef::Knife::ProfitbricksNicCreate.load_deps
5
+
6
+ describe Chef::Knife::ProfitbricksNicCreate do
7
+ subject { Chef::Knife::ProfitbricksNicCreate.new }
8
+
9
+ before :each do
10
+ {
11
+ name: 'Chef Test',
12
+ public: 'true'
13
+ }.each do |key, value|
14
+ Chef::Config[:knife][key] = value
15
+ end
16
+
17
+ ProfitBricks.configure do |config|
18
+ config.username = Chef::Config[:knife][:profitbricks_username]
19
+ config.password = Chef::Config[:knife][:profitbricks_password]
20
+ config.url = Chef::Config[:knife][:profitbricks_url]
21
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
22
+ config.global_classes = false
23
+ end
24
+
25
+ @datacenter = ProfitBricks::Datacenter.create(name: 'Chef test',
26
+ description: 'Chef test datacenter',
27
+ location: 'us/las')
28
+ @datacenter.wait_for { ready? }
29
+
30
+ @lan = ProfitBricks::LAN.create(@datacenter.id, name: 'Chef Test',
31
+ public: 'true')
32
+ @lan.wait_for { ready? }
33
+
34
+ @server = ProfitBricks::Server.create(@datacenter.id, name: 'Chef Test',
35
+ ram: 1024,
36
+ cores: 1,
37
+ availabilityZone: 'ZONE_1',
38
+ cpuFamily: 'INTEL_XEON')
39
+ @server.wait_for { ready? }
40
+
41
+ Chef::Config[:knife][:datacenter_id] = @datacenter.id
42
+ Chef::Config[:knife][:server_id] = @server.id
43
+ Chef::Config[:knife][:lan] = @lan.id
44
+ Chef::Config[:knife][:name] = 'Chef Test'
45
+
46
+ allow(subject).to receive(:puts)
47
+ end
48
+
49
+ after :each do
50
+ ProfitBricks.configure do |config|
51
+ config.username = Chef::Config[:knife][:profitbricks_username]
52
+ config.password = Chef::Config[:knife][:profitbricks_password]
53
+ config.url = Chef::Config[:knife][:profitbricks_url]
54
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
55
+ config.global_classes = false
56
+ end
57
+
58
+ @datacenter.delete
59
+ @datacenter.wait_for { ready? }
60
+ end
61
+
62
+ describe '#run' do
63
+ it 'should create a nic' do
64
+ expect(subject).to receive(:puts).with('Name: Chef Test')
65
+ expect(subject).to receive(:puts).with('DHCP: true')
66
+ expect(subject).to receive(:puts).with('LAN: 1')
67
+ expect(subject).to receive(:puts).with('NAT: false')
68
+ subject.run
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+ require 'profitbricks_nic_delete'
3
+
4
+ Chef::Knife::ProfitbricksNicDelete.load_deps
5
+
6
+ describe Chef::Knife::ProfitbricksNicDelete do
7
+ subject { Chef::Knife::ProfitbricksNicDelete.new }
8
+
9
+ before :each do
10
+ subject.config[:yes] = true
11
+ allow(subject).to receive(:puts)
12
+ {
13
+ name: 'Chef Test',
14
+ public: 'true'
15
+ }.each do |key, value|
16
+ Chef::Config[:knife][key] = value
17
+ end
18
+
19
+ ProfitBricks.configure do |config|
20
+ config.username = Chef::Config[:knife][:profitbricks_username]
21
+ config.password = Chef::Config[:knife][:profitbricks_password]
22
+ config.url = Chef::Config[:knife][:profitbricks_url]
23
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
24
+ config.global_classes = false
25
+ end
26
+
27
+ @datacenter = ProfitBricks::Datacenter.create(name: 'Chef test',
28
+ description: 'Chef test datacenter',
29
+ location: 'us/las')
30
+ @datacenter.wait_for { ready? }
31
+
32
+ @lan = ProfitBricks::LAN.create(@datacenter.id, name: 'Chef Test',
33
+ public: 'true')
34
+ @lan.wait_for { ready? }
35
+
36
+ @server = ProfitBricks::Server.create(@datacenter.id, name: 'Chef Test',
37
+ ram: 1024,
38
+ cores: 1,
39
+ availabilityZone: 'ZONE_1',
40
+ cpuFamily: 'INTEL_XEON')
41
+ @server.wait_for { ready? }
42
+
43
+ @nic = ProfitBricks::NIC.create(@datacenter.id, @server.id, lan: @lan.id)
44
+ @nic.wait_for { ready? }
45
+
46
+ Chef::Config[:knife][:datacenter_id] = @datacenter.id
47
+ Chef::Config[:knife][:server_id] = @server.id
48
+ subject.name_args = [@nic.id]
49
+ end
50
+
51
+ after :each do
52
+ ProfitBricks.configure do |config|
53
+ config.username = Chef::Config[:knife][:profitbricks_username]
54
+ config.password = Chef::Config[:knife][:profitbricks_password]
55
+ config.url = Chef::Config[:knife][:profitbricks_url]
56
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
57
+ config.global_classes = false
58
+ end
59
+
60
+ @datacenter.delete
61
+ @datacenter.wait_for { ready? }
62
+ end
63
+
64
+ describe '#run' do
65
+ it 'should delete a nic' do
66
+ subject.run
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+ require 'profitbricks_nic_list'
3
+
4
+ Chef::Knife::ProfitbricksNicList.load_deps
5
+
6
+ describe Chef::Knife::ProfitbricksNicList do
7
+ subject { Chef::Knife::ProfitbricksNicList.new }
8
+
9
+ before :each do
10
+ {
11
+ name: 'Chef Test',
12
+ public: 'true'
13
+ }.each do |key, value|
14
+ Chef::Config[:knife][key] = value
15
+ end
16
+
17
+ ProfitBricks.configure do |config|
18
+ config.username = Chef::Config[:knife][:profitbricks_username]
19
+ config.password = Chef::Config[:knife][:profitbricks_password]
20
+ config.url = Chef::Config[:knife][:profitbricks_url]
21
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
22
+ config.global_classes = false
23
+ end
24
+
25
+ @datacenter = ProfitBricks::Datacenter.create(name: 'Chef test',
26
+ description: 'Chef test datacenter',
27
+ location: 'us/las')
28
+ @datacenter.wait_for { ready? }
29
+
30
+ @lan = ProfitBricks::LAN.create(@datacenter.id, name: 'Chef Test',
31
+ public: 'true')
32
+ @lan.wait_for { ready? }
33
+
34
+ @server = ProfitBricks::Server.create(@datacenter.id, name: 'Chef Test',
35
+ ram: 1024,
36
+ cores: 1,
37
+ availabilityZone: 'ZONE_1',
38
+ cpuFamily: 'INTEL_XEON')
39
+ @server.wait_for { ready? }
40
+
41
+ @nic = ProfitBricks::NIC.create(@datacenter.id, @server.id, lan: @lan.id)
42
+ @nic.wait_for { ready? }
43
+
44
+ Chef::Config[:knife][:datacenter_id] = @datacenter.id
45
+ Chef::Config[:knife][:server_id] = @server.id
46
+
47
+ allow(subject).to receive(:puts)
48
+ end
49
+
50
+ after :each do
51
+ ProfitBricks.configure do |config|
52
+ config.username = Chef::Config[:knife][:profitbricks_username]
53
+ config.password = Chef::Config[:knife][:profitbricks_password]
54
+ config.url = Chef::Config[:knife][:profitbricks_url]
55
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
56
+ config.global_classes = false
57
+ end
58
+
59
+ @datacenter.delete
60
+ @datacenter.wait_for { ready? }
61
+ end
62
+
63
+ describe '#run' do
64
+ it 'should output the column headers' do
65
+ expect(subject).to receive(:puts).with(/^ID\s+Name\s+IPs\s+DHCP\s+NAT\s+LAN\s*$/)
66
+ subject.run
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+ require 'profitbricks_server_create'
3
+
4
+ Chef::Knife::ProfitbricksServerCreate.load_deps
5
+
6
+ describe Chef::Knife::ProfitbricksServerCreate do
7
+ subject { Chef::Knife::ProfitbricksServerCreate.new }
8
+
9
+ before :each do
10
+ {
11
+ name: 'Chef Test',
12
+ public: 'true'
13
+ }.each do |key, value|
14
+ Chef::Config[:knife][key] = value
15
+ end
16
+
17
+ ProfitBricks.configure do |config|
18
+ config.username = Chef::Config[:knife][:profitbricks_username]
19
+ config.password = Chef::Config[:knife][:profitbricks_password]
20
+ config.url = Chef::Config[:knife][:profitbricks_url]
21
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
22
+ config.global_classes = false
23
+ end
24
+
25
+ @datacenter = ProfitBricks::Datacenter.create(name: 'Chef test',
26
+ description: 'Chef test datacenter',
27
+ location: 'us/las')
28
+ @datacenter.wait_for { ready? }
29
+
30
+ @lan = ProfitBricks::LAN.create(@datacenter.id, name: 'Chef Test',
31
+ public: 'true')
32
+ @lan.wait_for { ready? }
33
+
34
+ Chef::Config[:knife][:datacenter_id] = @datacenter.id
35
+ Chef::Config[:knife][:cores] = 2
36
+ Chef::Config[:knife][:ram] = 2048
37
+ Chef::Config[:knife][:name] = 'Chef Test'
38
+
39
+ allow(subject).to receive(:puts)
40
+ end
41
+
42
+ after :each do
43
+ ProfitBricks.configure do |config|
44
+ config.username = Chef::Config[:knife][:profitbricks_username]
45
+ config.password = Chef::Config[:knife][:profitbricks_password]
46
+ config.url = Chef::Config[:knife][:profitbricks_url]
47
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
48
+ config.global_classes = false
49
+ end
50
+
51
+ @datacenter.delete
52
+ @datacenter.wait_for { ready? }
53
+ end
54
+
55
+ describe '#run' do
56
+ it 'should create a server' do
57
+ expect(subject).to receive(:puts).with('Name: Chef Test')
58
+ expect(subject).to receive(:puts).with('Cores: 2')
59
+ expect(subject).to receive(:puts).with('Ram: 2048')
60
+ subject.run
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+ require 'profitbricks_server_delete'
3
+
4
+ Chef::Knife::ProfitbricksServerDelete.load_deps
5
+
6
+ describe Chef::Knife::ProfitbricksServerDelete do
7
+ subject { Chef::Knife::ProfitbricksServerDelete.new }
8
+
9
+ before :each do
10
+ allow(subject).to receive(:puts)
11
+ subject.config[:yes] = true
12
+
13
+ {
14
+ name: 'Chef Test',
15
+ public: 'true'
16
+ }.each do |key, value|
17
+ Chef::Config[:knife][key] = value
18
+ end
19
+
20
+ ProfitBricks.configure do |config|
21
+ config.username = Chef::Config[:knife][:profitbricks_username]
22
+ config.password = Chef::Config[:knife][:profitbricks_password]
23
+ config.url = Chef::Config[:knife][:profitbricks_url]
24
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
25
+ config.global_classes = false
26
+ end
27
+
28
+ @datacenter = ProfitBricks::Datacenter.create(name: 'Chef test',
29
+ description: 'Chef test datacenter',
30
+ location: 'us/las')
31
+ @datacenter.wait_for { ready? }
32
+
33
+ @server = ProfitBricks::Server.create(@datacenter.id, name: 'Chef Test',
34
+ ram: 1024,
35
+ cores: 1,
36
+ availabilityZone: 'ZONE_1',
37
+ cpuFamily: 'INTEL_XEON')
38
+ @server.wait_for { ready? }
39
+
40
+ Chef::Config[:knife][:datacenter_id] = @datacenter.id
41
+
42
+ subject.name_args = [@server.id]
43
+ end
44
+
45
+ after :each do
46
+ ProfitBricks.configure do |config|
47
+ config.username = Chef::Config[:knife][:profitbricks_username]
48
+ config.password = Chef::Config[:knife][:profitbricks_password]
49
+ config.url = Chef::Config[:knife][:profitbricks_url]
50
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
51
+ config.global_classes = false
52
+ end
53
+
54
+ @datacenter.delete
55
+ @datacenter.wait_for { ready? }
56
+ end
57
+
58
+ describe '#run' do
59
+ it 'should delete a server' do
60
+ subject.run
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+ require 'profitbricks_server_list'
3
+
4
+ Chef::Knife::ProfitbricksServerList.load_deps
5
+
6
+ describe Chef::Knife::ProfitbricksServerList do
7
+ subject { Chef::Knife::ProfitbricksServerList.new }
8
+
9
+ before :each do
10
+ {
11
+ name: 'Chef Test',
12
+ public: 'true'
13
+ }.each do |key, value|
14
+ Chef::Config[:knife][key] = value
15
+ end
16
+
17
+ ProfitBricks.configure do |config|
18
+ config.username = Chef::Config[:knife][:profitbricks_username]
19
+ config.password = Chef::Config[:knife][:profitbricks_password]
20
+ config.url = Chef::Config[:knife][:profitbricks_url]
21
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
22
+ config.global_classes = false
23
+ end
24
+
25
+ @datacenter = ProfitBricks::Datacenter.create(name: 'Chef test',
26
+ description: 'Chef test datacenter',
27
+ location: 'us/las')
28
+ @datacenter.wait_for { ready? }
29
+
30
+ @lan = ProfitBricks::LAN.create(@datacenter.id, name: 'Chef Test',
31
+ public: 'true')
32
+ @lan.wait_for { ready? }
33
+
34
+ @server = ProfitBricks::Server.create(@datacenter.id, name: 'Chef Test',
35
+ ram: 1024,
36
+ cores: 1,
37
+ availabilityZone: 'ZONE_1',
38
+ cpuFamily: 'INTEL_XEON')
39
+ @server.wait_for { ready? }
40
+
41
+ Chef::Config[:knife][:datacenter_id] = @datacenter.id
42
+
43
+ allow(subject).to receive(:puts)
44
+ end
45
+
46
+ after :each do
47
+ ProfitBricks.configure do |config|
48
+ config.username = Chef::Config[:knife][:profitbricks_username]
49
+ config.password = Chef::Config[:knife][:profitbricks_password]
50
+ config.url = Chef::Config[:knife][:profitbricks_url]
51
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
52
+ config.global_classes = false
53
+ end
54
+
55
+ @datacenter.delete
56
+ @datacenter.wait_for { ready? }
57
+ end
58
+
59
+ describe '#run' do
60
+ it 'should output the column headers' do
61
+ expect(subject).to receive(:puts).with(/^ID\s+Name\s+Cores\s+RAM\s+ Availability Zone\s+VM State\s+Boot Volume\s+Boot CDROM\s*$/)
62
+ subject.run
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,65 @@
1
+ require 'spec_helper'
2
+ require 'profitbricks_server_reboot'
3
+
4
+ Chef::Knife::ProfitbricksServerReboot.load_deps
5
+
6
+ describe Chef::Knife::ProfitbricksServerReboot do
7
+ subject { Chef::Knife::ProfitbricksServerReboot.new }
8
+
9
+ before :each do
10
+ {
11
+ name: 'Chef Test',
12
+ public: 'true'
13
+ }.each do |key, value|
14
+ Chef::Config[:knife][key] = value
15
+ end
16
+
17
+ ProfitBricks.configure do |config|
18
+ config.username = Chef::Config[:knife][:profitbricks_username]
19
+ config.password = Chef::Config[:knife][:profitbricks_password]
20
+ config.url = Chef::Config[:knife][:profitbricks_url]
21
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
22
+ config.global_classes = false
23
+ end
24
+
25
+ @datacenter = ProfitBricks::Datacenter.create(name: 'Chef test',
26
+ description: 'Chef test datacenter',
27
+ location: 'us/las')
28
+ @datacenter.wait_for { ready? }
29
+
30
+ @lan = ProfitBricks::LAN.create(@datacenter.id, name: 'Chef Test',
31
+ public: 'true')
32
+ @lan.wait_for { ready? }
33
+
34
+ @server = ProfitBricks::Server.create(@datacenter.id, name: 'Chef Test',
35
+ ram: 1024,
36
+ cores: 1,
37
+ availabilityZone: 'ZONE_1',
38
+ cpuFamily: 'INTEL_XEON')
39
+ @server.wait_for { ready? }
40
+
41
+ Chef::Config[:knife][:datacenter_id] = @datacenter.id
42
+ subject.name_args = [@server.id]
43
+
44
+ allow(subject).to receive(:puts)
45
+ end
46
+
47
+ after :each do
48
+ ProfitBricks.configure do |config|
49
+ config.username = Chef::Config[:knife][:profitbricks_username]
50
+ config.password = Chef::Config[:knife][:profitbricks_password]
51
+ config.url = Chef::Config[:knife][:profitbricks_url]
52
+ config.debug = Chef::Config[:knife][:profitbricks_debug] || false
53
+ config.global_classes = false
54
+ end
55
+
56
+ @datacenter.delete
57
+ @datacenter.wait_for { ready? }
58
+ end
59
+
60
+ describe '#run' do
61
+ it 'should output the column headers' do
62
+ subject.run
63
+ end
64
+ end
65
+ end