fog-proxmox 0.10.0 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (180) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +79 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +1 -1
  5. data/README.md +10 -2
  6. data/docs/compute.md +23 -7
  7. data/docs/identity.md +31 -6
  8. data/examples/compute.rb +11 -11
  9. data/examples/identity.rb +28 -15
  10. data/fog-proxmox.gemspec +2 -2
  11. data/lib/fog/proxmox.rb +16 -76
  12. data/lib/fog/proxmox/auth/token.rb +88 -0
  13. data/lib/fog/proxmox/auth/token/access_ticket.rb +85 -0
  14. data/lib/fog/proxmox/auth/token/user_token.rb +94 -0
  15. data/lib/fog/{compute/proxmox.rb → proxmox/compute.rb} +31 -16
  16. data/lib/fog/{compute/proxmox → proxmox/compute}/models/disk.rb +15 -2
  17. data/lib/fog/{compute/proxmox → proxmox/compute}/models/disks.rb +5 -1
  18. data/lib/fog/{compute/proxmox → proxmox/compute}/models/interface.rb +4 -0
  19. data/lib/fog/{compute/proxmox → proxmox/compute}/models/interfaces.rb +1 -1
  20. data/lib/fog/{compute/proxmox → proxmox/compute}/models/node.rb +0 -0
  21. data/lib/fog/{compute/proxmox → proxmox/compute}/models/nodes.rb +1 -1
  22. data/lib/fog/{compute/proxmox → proxmox/compute}/models/server.rb +2 -3
  23. data/lib/fog/{compute/proxmox → proxmox/compute}/models/server_config.rb +9 -1
  24. data/lib/fog/{compute/proxmox → proxmox/compute}/models/servers.rb +1 -1
  25. data/lib/fog/{compute/proxmox → proxmox/compute}/models/snapshot.rb +4 -5
  26. data/lib/fog/{compute/proxmox → proxmox/compute}/models/snapshots.rb +1 -1
  27. data/lib/fog/{compute/proxmox → proxmox/compute}/models/storage.rb +2 -3
  28. data/lib/fog/{compute/proxmox → proxmox/compute}/models/storages.rb +1 -1
  29. data/lib/fog/{compute/proxmox → proxmox/compute}/models/task.rb +2 -3
  30. data/lib/fog/{compute/proxmox → proxmox/compute}/models/tasks.rb +1 -1
  31. data/lib/fog/{compute/proxmox → proxmox/compute}/models/volume.rb +9 -3
  32. data/lib/fog/{compute/proxmox → proxmox/compute}/models/volumes.rb +1 -1
  33. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/action_server.rb +1 -0
  34. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/clone_server.rb +1 -0
  35. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/create_backup.rb +1 -0
  36. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/create_server.rb +1 -0
  37. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/create_snapshot.rb +3 -1
  38. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/create_spice.rb +1 -0
  39. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/create_term.rb +1 -0
  40. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/create_vnc.rb +1 -0
  41. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/delete_server.rb +1 -0
  42. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/delete_snapshot.rb +3 -1
  43. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/delete_volume.rb +1 -1
  44. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/get_node_statistics.rb +2 -2
  45. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/get_server_config.rb +18 -0
  46. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/get_server_status.rb +21 -0
  47. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/get_snapshot_config.rb +1 -1
  48. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/get_task.rb +1 -1
  49. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/get_vnc.rb +1 -0
  50. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/get_volume.rb +1 -1
  51. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/list_nodes.rb +8 -1
  52. data/lib/fog/proxmox/compute/requests/list_servers.rb +113 -0
  53. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/list_snapshots.rb +24 -1
  54. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/list_storages.rb +3 -1
  55. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/list_tasks.rb +3 -1
  56. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/list_volumes.rb +3 -1
  57. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/log_task.rb +3 -1
  58. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/migrate_server.rb +1 -1
  59. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/move_disk.rb +1 -1
  60. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/move_volume.rb +1 -1
  61. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/next_vmid.rb +1 -0
  62. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/resize_container.rb +1 -1
  63. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/resize_server.rb +1 -1
  64. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/rollback_snapshot.rb +3 -1
  65. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/status_task.rb +1 -1
  66. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/stop_task.rb +1 -1
  67. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/template_server.rb +1 -0
  68. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/update_server.rb +1 -0
  69. data/lib/fog/{compute/proxmox → proxmox/compute}/requests/update_snapshot.rb +1 -1
  70. data/lib/fog/proxmox/core.rb +67 -58
  71. data/lib/fog/proxmox/hash.rb +2 -2
  72. data/lib/fog/proxmox/helpers/cpu_helper.rb +48 -9
  73. data/lib/fog/proxmox/helpers/disk_helper.rb +55 -19
  74. data/lib/fog/proxmox/helpers/nic_helper.rb +28 -20
  75. data/lib/fog/{identity/proxmox.rb → proxmox/identity.rb} +31 -17
  76. data/lib/fog/{identity/proxmox → proxmox/identity}/models/domain.rb +0 -0
  77. data/lib/fog/{identity/proxmox → proxmox/identity}/models/domain_type.rb +0 -0
  78. data/lib/fog/{identity/proxmox → proxmox/identity}/models/domains.rb +1 -1
  79. data/lib/fog/{identity/proxmox → proxmox/identity}/models/group.rb +4 -2
  80. data/lib/fog/{identity/proxmox → proxmox/identity}/models/groups.rb +1 -1
  81. data/lib/fog/{identity/proxmox → proxmox/identity}/models/permission.rb +0 -0
  82. data/lib/fog/{identity/proxmox → proxmox/identity}/models/permissions.rb +1 -1
  83. data/lib/fog/{identity/proxmox → proxmox/identity}/models/pool.rb +18 -0
  84. data/lib/fog/{identity/proxmox → proxmox/identity}/models/pools.rb +4 -2
  85. data/lib/fog/{identity/proxmox → proxmox/identity}/models/principal.rb +0 -0
  86. data/lib/fog/{identity/proxmox → proxmox/identity}/models/role.rb +0 -0
  87. data/lib/fog/{identity/proxmox → proxmox/identity}/models/roles.rb +1 -1
  88. data/lib/fog/proxmox/identity/models/token.rb +71 -0
  89. data/lib/fog/proxmox/identity/models/token_info.rb +41 -0
  90. data/lib/fog/proxmox/identity/models/tokens.rb +58 -0
  91. data/lib/fog/{identity/proxmox → proxmox/identity}/models/user.rb +25 -2
  92. data/lib/fog/{identity/proxmox → proxmox/identity}/models/users.rb +1 -1
  93. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/change_password.rb +0 -0
  94. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/check_permissions.rb +0 -0
  95. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/create_domain.rb +0 -0
  96. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/create_group.rb +0 -0
  97. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/create_pool.rb +0 -0
  98. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/create_role.rb +0 -0
  99. data/lib/fog/proxmox/identity/requests/create_token.rb +40 -0
  100. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/create_user.rb +0 -0
  101. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/delete_domain.rb +0 -0
  102. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/delete_group.rb +0 -0
  103. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/delete_pool.rb +0 -0
  104. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/delete_role.rb +0 -0
  105. data/lib/fog/proxmox/identity/requests/delete_token.rb +40 -0
  106. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/delete_user.rb +0 -0
  107. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/get_domain.rb +0 -0
  108. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/get_group.rb +0 -0
  109. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/get_pool.rb +0 -0
  110. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/get_role.rb +0 -0
  111. data/lib/fog/proxmox/identity/requests/get_token_info.rb +41 -0
  112. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/get_user.rb +0 -0
  113. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/list_domains.rb +0 -0
  114. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/list_groups.rb +0 -0
  115. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/list_permissions.rb +0 -0
  116. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/list_pools.rb +0 -0
  117. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/list_roles.rb +0 -0
  118. data/lib/fog/proxmox/identity/requests/list_tokens.rb +41 -0
  119. data/lib/fog/proxmox/identity/requests/list_user_permissions.rb +44 -0
  120. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/list_users.rb +0 -0
  121. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/read_version.rb +0 -0
  122. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/update_domain.rb +0 -0
  123. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/update_group.rb +0 -0
  124. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/update_permissions.rb +0 -0
  125. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/update_pool.rb +0 -0
  126. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/update_role.rb +0 -0
  127. data/lib/fog/proxmox/identity/requests/update_token.rb +41 -0
  128. data/lib/fog/{identity/proxmox → proxmox/identity}/requests/update_user.rb +0 -0
  129. data/lib/fog/{network/proxmox.rb → proxmox/network.rb} +21 -14
  130. data/lib/fog/{network/proxmox → proxmox/network}/models/network.rb +0 -0
  131. data/lib/fog/{network/proxmox → proxmox/network}/models/networks.rb +1 -1
  132. data/lib/fog/{network/proxmox → proxmox/network}/models/node.rb +1 -1
  133. data/lib/fog/{network/proxmox → proxmox/network}/models/nodes.rb +1 -1
  134. data/lib/fog/{network/proxmox → proxmox/network}/requests/create_network.rb +0 -0
  135. data/lib/fog/{network/proxmox → proxmox/network}/requests/delete_network.rb +0 -0
  136. data/lib/fog/{network/proxmox → proxmox/network}/requests/get_network.rb +0 -0
  137. data/lib/fog/{network/proxmox → proxmox/network}/requests/get_node.rb +0 -0
  138. data/lib/fog/{network/proxmox → proxmox/network}/requests/list_networks.rb +0 -0
  139. data/lib/fog/{network/proxmox → proxmox/network}/requests/list_nodes.rb +0 -0
  140. data/lib/fog/{network/proxmox → proxmox/network}/requests/power_node.rb +0 -0
  141. data/lib/fog/{network/proxmox → proxmox/network}/requests/update_network.rb +0 -0
  142. data/lib/fog/{storage/proxmox.rb → proxmox/storage.rb} +1 -1
  143. data/lib/fog/proxmox/version.rb +1 -1
  144. data/spec/compute_spec.rb +4 -4
  145. data/spec/fixtures/proxmox/compute/common_auth.yml +40 -0
  146. data/spec/fixtures/proxmox/compute/containers.yml +1752 -7568
  147. data/spec/fixtures/proxmox/compute/nodes.yml +24 -30
  148. data/spec/fixtures/proxmox/compute/servers.yml +5015 -10683
  149. data/spec/fixtures/proxmox/compute/snapshots.yml +479 -1719
  150. data/spec/fixtures/proxmox/compute/storages.yml +32 -40
  151. data/spec/fixtures/proxmox/compute/tasks.yml +118 -338
  152. data/spec/fixtures/proxmox/identity/auth.yml +9 -11
  153. data/spec/fixtures/proxmox/identity/auth_access_ticket.yml +77 -0
  154. data/spec/fixtures/proxmox/identity/auth_user_token.yml +77 -0
  155. data/spec/fixtures/proxmox/identity/common_auth.yml +40 -0
  156. data/spec/fixtures/proxmox/identity/domains.yml +146 -178
  157. data/spec/fixtures/proxmox/identity/groups.yml +72 -90
  158. data/spec/fixtures/proxmox/identity/permissions.yml +301 -193
  159. data/spec/fixtures/proxmox/identity/pools.yml +422 -159
  160. data/spec/fixtures/proxmox/identity/read_version.yml +7 -9
  161. data/spec/fixtures/proxmox/identity/roles.yml +74 -92
  162. data/spec/fixtures/proxmox/identity/tokens.yml +494 -0
  163. data/spec/fixtures/proxmox/identity/users.yml +149 -187
  164. data/spec/fixtures/proxmox/network/common_auth.yml +40 -0
  165. data/spec/fixtures/proxmox/network/networks.yml +99 -96
  166. data/spec/helpers/cpu_helper_spec.rb +28 -21
  167. data/spec/helpers/disk_helper_spec.rb +231 -175
  168. data/spec/helpers/nic_helper_spec.rb +113 -114
  169. data/spec/identity_spec.rb +116 -28
  170. data/spec/network_spec.rb +3 -3
  171. data/spec/proxmox_vcr.rb +24 -22
  172. data/spec/spec_helper.rb +4 -3
  173. metadata +160 -145
  174. data/.gitlab-ci.yml +0 -50
  175. data/.travis.yml +0 -20
  176. data/lib/fog/compute/proxmox/requests/list_servers.rb +0 -42
  177. data/spec/fixtures/proxmox/compute/identity_ticket.yml +0 -40
  178. data/spec/fixtures/proxmox/identity/identity_ticket.yml +0 -40
  179. data/spec/fixtures/proxmox/identity/renew.yml +0 -40
  180. data/spec/fixtures/proxmox/network/identity_ticket.yml +0 -40
@@ -20,179 +20,235 @@
20
20
  require 'spec_helper'
21
21
  require 'fog/proxmox/helpers/disk_helper'
22
22
 
23
- describe Fog::Proxmox::DiskHelper do
24
-
25
- let(:scsi0) do
26
- { id: 'scsi0', storage: 'local-lvm', size: 1, options: { cache: 'none' }}
27
- end
28
-
29
- let(:scsi0_image) do
30
- { id: 'scsi0', volid: 'local-lvm:vm-100-disk-1', storage: 'local-lvm', size: 1, options: { cache: 'none' }}
31
- end
32
-
33
- let(:scsi) do
34
- { scsi0: 'local-lvm:vm-100-disk-1,size=8G,cache=none'}
35
- end
36
-
37
- let(:virtio1) do
38
- { id: 'virtio1', volid: 'local:108/vm-108-disk-1.qcow2,size=15G' }
39
- end
40
-
41
- let(:virtio) do
42
- { virtio1: 'local:108/vm-108-disk-1.qcow2,size=245'}
43
- end
44
-
45
- let(:ide2) do
46
- { id: 'ide2' }
47
- end
48
-
49
- let(:ide2_image) do
50
- { id: 'ide2', volid: 'local:iso/alpine-virt-3.7.0-x86_64.iso' }
51
- end
52
-
53
- let(:cdrom_none) do
54
- { ide2: 'none,media=cdrom'}
55
- end
56
-
57
- let(:cdrom_iso) do
58
- { ide2: 'local:iso/alpine-virt-3.7.0-x86_64.iso,media=cdrom'}
59
- end
60
-
61
- describe '#flatten' do
62
- it "returns creation string" do
63
- disk = Fog::Proxmox::DiskHelper.flatten(scsi0)
64
- assert_equal({ scsi0: 'local-lvm:1,cache=none' }, disk)
65
- end
66
- it "returns image string" do
67
- disk = Fog::Proxmox::DiskHelper.flatten(scsi0_image)
68
- assert_equal({ scsi0: 'local-lvm:vm-100-disk-1,size=1,cache=none' }, disk)
69
- end
70
- it "returns cdrom none string" do
71
- disk = Fog::Proxmox::DiskHelper.flatten(ide2)
72
- assert_equal(cdrom_none, disk)
73
- end
74
- it "returns cdrom image string" do
75
- disk = Fog::Proxmox::DiskHelper.flatten(ide2_image)
76
- assert_equal(cdrom_iso, disk)
77
- end
78
- end
79
-
80
- describe '#extract_controller' do
81
- it "returns virtio controller" do
82
- controller = Fog::Proxmox::DiskHelper.extract_controller(virtio1[:id])
83
- assert_equal('virtio', controller)
84
- end
85
- it "returns scsi controller" do
86
- controller = Fog::Proxmox::DiskHelper.extract_controller(scsi0[:id])
87
- assert_equal('scsi', controller)
88
- end
89
- end
90
-
91
- describe '#extract_device' do
92
- it "returns device" do
93
- device = Fog::Proxmox::DiskHelper.extract_device(scsi0[:id])
94
- assert_equal(0, device)
95
- end
96
- end
97
-
98
- describe '#extract_storage_volid_size' do
99
- it "returns scsi get storage and volid" do
100
- storage, volid, size = Fog::Proxmox::DiskHelper.extract_storage_volid_size(scsi[:scsi0])
101
- assert_equal('local-lvm', storage)
102
- assert_equal('local-lvm:vm-100-disk-1', volid)
103
- assert_equal(8589934592, size)
104
- end
105
- it "returns virtio get local storage volid and size" do
106
- storage, volid, size = Fog::Proxmox::DiskHelper.extract_storage_volid_size(virtio[:virtio1])
107
- assert_equal('local', storage)
108
- assert_equal('local:108/vm-108-disk-1.qcow2', volid)
109
- assert_equal(245, size)
110
- end
111
- it "returns scsi0 creation storage and volid" do
112
- disk = Fog::Proxmox::DiskHelper.flatten(scsi0)
113
- storage, volid, size = Fog::Proxmox::DiskHelper.extract_storage_volid_size(disk[:scsi0])
114
- assert_equal('local-lvm', storage)
115
- assert_nil volid
116
- assert_equal(1, size)
117
- end
118
- it "returns cdrom storage and volid none" do
119
- storage, volid, size = Fog::Proxmox::DiskHelper.extract_storage_volid_size(cdrom_none[:ide2])
120
- assert_nil storage
121
- assert_equal('none', volid)
122
- assert_nil size
123
- end
124
- it "returns cdrom storage and volid iso" do
125
- storage, volid, size = Fog::Proxmox::DiskHelper.extract_storage_volid_size(cdrom_iso[:ide2])
126
- assert_equal('local', storage)
127
- assert_equal('local:iso/alpine-virt-3.7.0-x86_64.iso', volid)
128
- assert_nil size
129
- end
130
- end
131
- describe '#extract_size' do
132
- it "returns size" do
133
- size = Fog::Proxmox::DiskHelper.extract_size(scsi[:scsi0])
134
- assert_equal(8589934592, size)
135
- end
136
- it "returns size" do
137
- size = Fog::Proxmox::DiskHelper.extract_size(virtio[:virtio1])
138
- assert_equal(245, size)
139
- end
140
- end
141
-
142
- describe '#disk?' do
143
- it "rootfs returns true" do
144
- assert Fog::Proxmox::DiskHelper.disk?('rootfs')
145
- end
146
- it "mp0 returns true" do
147
- assert Fog::Proxmox::DiskHelper.disk?('mp0')
148
- end
149
- it "scsi0 returns true" do
150
- assert Fog::Proxmox::DiskHelper.disk?('scsi0')
151
- end
152
- it "virtio12 returns true" do
153
- assert Fog::Proxmox::DiskHelper.disk?('virtio12')
154
- end
155
- it "sata2 returns true" do
156
- assert Fog::Proxmox::DiskHelper.disk?('sata2')
157
- end
158
- it "ide0 returns true" do
159
- assert Fog::Proxmox::DiskHelper.disk?('ide0')
160
- end
161
- it "dsfdsfdsfds returns false" do
162
- assert !Fog::Proxmox::DiskHelper.disk?('dsfdsfdsfds')
163
- end
164
- end
165
-
166
- describe '#server_disk?' do
167
- it "ide0 returns true" do
168
- assert Fog::Proxmox::DiskHelper.server_disk?('ide0')
169
- end
170
- it "scsi1 returns true" do
171
- assert Fog::Proxmox::DiskHelper.server_disk?('scsi1')
172
- end
173
- it "virtio returns false" do
174
- assert !Fog::Proxmox::DiskHelper.server_disk?('virtio')
175
- end
176
- end
177
-
178
- describe '#container_disk?' do
179
- it "rootfs returns true" do
180
- assert Fog::Proxmox::DiskHelper.container_disk?('rootfs')
181
- end
182
- it "mp0 returns true" do
183
- assert Fog::Proxmox::DiskHelper.container_disk?('mp0')
184
- end
185
- it "mp returns false" do
186
- assert !Fog::Proxmox::DiskHelper.container_disk?('mp')
187
- end
188
- end
189
-
190
- describe '#cdrom?' do
191
- it "local:iso/alpine-virt-3.7.0-x86_64.iso,media=cdrom returns true" do
192
- assert Fog::Proxmox::DiskHelper.cdrom?('local:iso/alpine-virt-3.7.0-x86_64.iso,media=cdrom')
193
- end
194
- it "local:iso/alpine-virt-3.7.0-x86_64.iso returns false" do
195
- assert !Fog::Proxmox::DiskHelper.cdrom?('local:iso/alpine-virt-3.7.0-x86_64.iso')
196
- end
197
- end
23
+ describe Fog::Proxmox::DiskHelper do
24
+ let(:scsi0) do
25
+ { id: 'scsi0', storage: 'local-lvm', size: 1, options: { cache: 'none' }}
26
+ end
27
+
28
+ let(:scsi0_image) do
29
+ { id: 'scsi0', volid: 'local-lvm:vm-100-disk-1', storage: 'local-lvm', size: 1, options: { cache: 'none' }}
30
+ end
31
+
32
+ let(:scsi) do
33
+ { scsi0: 'local-lvm:vm-100-disk-1,size=8G,cache=none'}
34
+ end
35
+
36
+ let(:virtio1) do
37
+ { id: 'virtio1', volid: 'local:108/vm-108-disk-1.qcow2,size=15G' }
38
+ end
39
+
40
+ let(:virtio) do
41
+ { virtio1: 'local:108/vm-108-disk-1.qcow2,size=245'}
42
+ end
43
+
44
+ let(:ide2) do
45
+ { id: 'ide2' }
46
+ end
47
+
48
+ let(:ide2_image) do
49
+ { id: 'ide2', volid: 'local:iso/alpine-virt-3.7.0-x86_64.iso' }
50
+ end
51
+
52
+ let(:cdrom_none) do
53
+ { ide2: 'none,media=cdrom'}
54
+ end
55
+
56
+ let(:cdrom_iso) do
57
+ { ide2: 'local:iso/alpine-virt-3.7.0-x86_64.iso,media=cdrom'}
58
+ end
59
+
60
+ let(:template) do
61
+ { virtio0: 'local:100/base-100-disk-0.qcow2'}
62
+ end
63
+
64
+ let(:cloudinit) do
65
+ { ide0: 'local-lvm:vm-100-cloudinit,media=cdrom'}
66
+ end
67
+
68
+ let(:rootfs) do
69
+ { id: 'rootfs', storage: 'local-lvm', size: 1 }
70
+ end
71
+
72
+ describe '#flatten' do
73
+ it "returns creation string" do
74
+ disk = Fog::Proxmox::DiskHelper.flatten(scsi0)
75
+ assert_equal({ scsi0: 'local-lvm:1,cache=none' }, disk)
198
76
  end
77
+ it "returns image string" do
78
+ disk = Fog::Proxmox::DiskHelper.flatten(scsi0_image)
79
+ assert_equal({ scsi0: 'local-lvm:vm-100-disk-1,size=1,cache=none' }, disk)
80
+ end
81
+ it "returns cdrom none string" do
82
+ disk = Fog::Proxmox::DiskHelper.flatten(ide2)
83
+ assert_equal(cdrom_none, disk)
84
+ end
85
+ it "returns cdrom image string" do
86
+ disk = Fog::Proxmox::DiskHelper.flatten(ide2_image)
87
+ assert_equal(cdrom_iso, disk)
88
+ end
89
+ end
90
+
91
+ describe '#extract_controller' do
92
+ it "returns virtio controller" do
93
+ controller = Fog::Proxmox::DiskHelper.extract_controller(virtio1[:id])
94
+ assert_equal('virtio', controller)
95
+ end
96
+ it "returns scsi controller" do
97
+ controller = Fog::Proxmox::DiskHelper.extract_controller(scsi0[:id])
98
+ assert_equal('scsi', controller)
99
+ end
100
+ end
101
+
102
+ describe '#extract_device' do
103
+ it "returns device" do
104
+ device = Fog::Proxmox::DiskHelper.extract_device(scsi0[:id])
105
+ assert_equal(0, device)
106
+ end
107
+ end
108
+
109
+ describe '#extract_storage_volid_size' do
110
+ it "returns scsi get storage and volid" do
111
+ storage, volid, size = Fog::Proxmox::DiskHelper.extract_storage_volid_size(scsi[:scsi0])
112
+ assert_equal('local-lvm', storage)
113
+ assert_equal('local-lvm:vm-100-disk-1', volid)
114
+ assert_equal(8589934592, size)
115
+ end
116
+ it "returns virtio get local storage volid and size" do
117
+ storage, volid, size = Fog::Proxmox::DiskHelper.extract_storage_volid_size(virtio[:virtio1])
118
+ assert_equal('local', storage)
119
+ assert_equal('local:108/vm-108-disk-1.qcow2', volid)
120
+ assert_equal(245, size)
121
+ end
122
+ it "returns scsi0 creation storage and volid" do
123
+ disk = Fog::Proxmox::DiskHelper.flatten(scsi0)
124
+ storage, volid, size = Fog::Proxmox::DiskHelper.extract_storage_volid_size(disk[:scsi0])
125
+ assert_equal('local-lvm', storage)
126
+ assert_nil volid
127
+ assert_equal(1, size)
128
+ end
129
+ it "returns cdrom storage and volid none" do
130
+ storage, volid, size = Fog::Proxmox::DiskHelper.extract_storage_volid_size(cdrom_none[:ide2])
131
+ assert_nil storage
132
+ assert_equal('none', volid)
133
+ assert_nil size
134
+ end
135
+ it "returns cdrom storage and volid iso" do
136
+ storage, volid, size = Fog::Proxmox::DiskHelper.extract_storage_volid_size(cdrom_iso[:ide2])
137
+ assert_equal('local', storage)
138
+ assert_equal('local:iso/alpine-virt-3.7.0-x86_64.iso', volid)
139
+ assert_nil size
140
+ end
141
+ end
142
+ describe '#extract_size' do
143
+ it "returns size" do
144
+ size = Fog::Proxmox::DiskHelper.extract_size(scsi[:scsi0])
145
+ assert_equal(8589934592, size)
146
+ end
147
+ it "returns size" do
148
+ size = Fog::Proxmox::DiskHelper.extract_size(virtio[:virtio1])
149
+ assert_equal(245, size)
150
+ end
151
+ end
152
+
153
+ describe '#disk?' do
154
+ it "rootfs returns true" do
155
+ assert Fog::Proxmox::DiskHelper.disk?('rootfs')
156
+ end
157
+ it "mp0 returns true" do
158
+ assert Fog::Proxmox::DiskHelper.disk?('mp0')
159
+ end
160
+ it "scsi0 returns true" do
161
+ assert Fog::Proxmox::DiskHelper.disk?('scsi0')
162
+ end
163
+ it "virtio12 returns true" do
164
+ assert Fog::Proxmox::DiskHelper.disk?('virtio12')
165
+ end
166
+ it "sata2 returns true" do
167
+ assert Fog::Proxmox::DiskHelper.disk?('sata2')
168
+ end
169
+ it "ide0 returns true" do
170
+ assert Fog::Proxmox::DiskHelper.disk?('ide0')
171
+ end
172
+ it "dsfdsfdsfds returns false" do
173
+ assert !Fog::Proxmox::DiskHelper.disk?('dsfdsfdsfds')
174
+ end
175
+ end
176
+
177
+ describe '#server_disk?' do
178
+ it "ide0 returns true" do
179
+ assert Fog::Proxmox::DiskHelper.server_disk?('ide0')
180
+ end
181
+ it "scsi1 returns true" do
182
+ assert Fog::Proxmox::DiskHelper.server_disk?('scsi1')
183
+ end
184
+ it "virtio returns false" do
185
+ assert !Fog::Proxmox::DiskHelper.server_disk?('virtio')
186
+ end
187
+ end
188
+
189
+ describe '#container_disk?' do
190
+ it "rootfs returns true" do
191
+ assert Fog::Proxmox::DiskHelper.container_disk?('rootfs')
192
+ end
193
+ it "mp0 returns true" do
194
+ assert Fog::Proxmox::DiskHelper.container_disk?('mp0')
195
+ end
196
+ it "mp returns false" do
197
+ assert !Fog::Proxmox::DiskHelper.container_disk?('mp')
198
+ end
199
+ end
200
+
201
+ describe '#cdrom?' do
202
+ it "local:iso/alpine-virt-3.7.0-x86_64.iso,media=cdrom returns true" do
203
+ assert Fog::Proxmox::DiskHelper.cdrom?('local:iso/alpine-virt-3.7.0-x86_64.iso,media=cdrom')
204
+ end
205
+ it "local:iso/alpine-virt-3.7.0-x86_64.iso returns false" do
206
+ assert !Fog::Proxmox::DiskHelper.cdrom?('local:iso/alpine-virt-3.7.0-x86_64.iso')
207
+ end
208
+ end
209
+
210
+ describe '#to_bytes' do
211
+ it "1Gb returns 1 073 741 824" do
212
+ assert_equal Fog::Proxmox::DiskHelper.to_bytes('1Gb'), 1073741824
213
+ end
214
+ end
215
+
216
+ describe '#to_human_bytes' do
217
+ it "1 073 741 824 returns 1Gb" do
218
+ assert_equal '1Gb', Fog::Proxmox::DiskHelper.to_human_bytes(1073741824)
219
+ end
220
+ end
221
+
222
+ describe '#template?' do
223
+ it "local:100/base-100-disk-0.qcow2 returns true" do
224
+ assert Fog::Proxmox::DiskHelper.template?(template[:virtio0])
225
+ end
226
+ it "local:108/vm-108-disk-1.qcow2 returns false" do
227
+ assert !Fog::Proxmox::DiskHelper.template?(virtio[:virtio1])
228
+ end
229
+ end
230
+
231
+ describe '#cloud_init?' do
232
+ it "local-lvm:vm-100-cloudinit,media=cdrom returns true" do
233
+ assert Fog::Proxmox::DiskHelper.cloud_init?(cloudinit[:ide0])
234
+ end
235
+ it "local:108/vm-108-disk-1.qcow2 returns false" do
236
+ assert !Fog::Proxmox::DiskHelper.cloud_init?(virtio[:virtio1])
237
+ end
238
+ end
239
+
240
+ describe '#of_type?' do
241
+ it "qemu and rootfs returns false" do
242
+ refute Fog::Proxmox::DiskHelper.of_type?(rootfs, 'qemu')
243
+ end
244
+ it "qemu and scsi0 returns true" do
245
+ assert Fog::Proxmox::DiskHelper.of_type?(scsi0, 'qemu')
246
+ end
247
+ it "lxc and rootfs returns true" do
248
+ assert Fog::Proxmox::DiskHelper.of_type?(rootfs, 'lxc')
249
+ end
250
+ it "qemu and scsi0 returns false" do
251
+ refute Fog::Proxmox::DiskHelper.of_type?(scsi0, 'lxc')
252
+ end
253
+ end
254
+ end
@@ -20,117 +20,116 @@
20
20
  require 'spec_helper'
21
21
  require 'fog/proxmox/helpers/nic_helper'
22
22
 
23
- describe Fog::Proxmox::NicHelper do
24
-
25
- let(:net_vm) do
26
- { net0: 'virtio=66:89:C5:59:AA:96,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1' }
27
- end
28
-
29
- let(:net_vm_create) do
30
- { net0: 'model=virtio,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1' }
31
- end
32
-
33
- let(:net_lxc) do
34
- { net0: 'eth0=66:89:C5:59:AA:96,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1,ip=192.168.56.100/31' }
35
- end
36
-
37
- let(:net_lxc_create) do
38
- { net0: 'name=eth0,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1,ip=192.168.56.100/31' }
39
- end
40
-
41
- let(:lxc_nic) do
42
- { id: 'net0', name: 'eth0', macaddr: '66:89:C5:59:AA:96', bridge: 'vmbr0', firewall: 1, link_down: 1, queues: 1, rate: 1, tag: 1, ip: '192.168.56.100/31' }
43
- end
44
-
45
- let(:qemu_nic) do
46
- { id: 'net1', model: 'virtio', macaddr: '66:89:C5:59:AA:96', bridge: 'vmbr0', firewall: 1, link_down: 1, queues: 1, rate: 1, tag: 1 }
47
- end
48
-
49
- let(:qemu_nic_create) do
50
- { id: 'net1', model: 'virtio', bridge: 'vmbr0', firewall: 1, link_down: 1, queues: 1, rate: 1, tag: 1 }
51
- end
52
-
53
- describe '#extract_model' do
54
- it "returns model card" do
55
- model = Fog::Proxmox::NicHelper.extract_nic_id(net_vm[:net0])
56
- assert_equal 'virtio', model
57
- end
58
- it "returns model card creation" do
59
- model = Fog::Proxmox::NicHelper.extract_nic_id(net_vm_create[:net0])
60
- assert_equal 'virtio', model
61
- end
62
- end
63
-
64
- describe '#extract_name' do
65
- it "returns lxc name" do
66
- model = Fog::Proxmox::NicHelper.extract_nic_id(net_lxc[:net0])
67
- assert_equal 'eth0', model
68
- end
69
- it "returns lxc name creation" do
70
- model = Fog::Proxmox::NicHelper.extract_nic_id(net_lxc_create[:net0])
71
- assert_equal 'eth0', model
72
- end
73
- end
74
-
75
- describe '#extract_mac_address' do
76
- it "returns vm mac address" do
77
- mac_address = Fog::Proxmox::NicHelper.extract_mac_address(net_vm[:net0])
78
- assert_equal '66:89:C5:59:AA:96', mac_address
79
- end
80
- it "returns lxc mac address" do
81
- mac_address = Fog::Proxmox::NicHelper.extract_mac_address(net_lxc[:net0])
82
- assert_equal '66:89:C5:59:AA:96', mac_address
83
- end
84
- end
85
-
86
- describe '#nic?' do
87
- it "returns true" do
88
- assert Fog::Proxmox::NicHelper.nic?('net0')
89
- end
90
- it "returns false" do
91
- assert !Fog::Proxmox::NicHelper.nic?('net')
92
- end
93
- end
94
-
95
- describe '#collect_nics' do
96
- it "returns net0" do
97
- nets = Fog::Proxmox::NicHelper.collect_nics(net_vm.merge({'netout': 'sdfdsgfdsf'}))
98
- assert nets.has_key?(:net0)
99
- assert nets.has_value?(net_vm[:net0])
100
- assert !nets.has_key?('netout')
101
- end
102
- it "returns empty" do
103
- nets = Fog::Proxmox::NicHelper.collect_nics({'netout': 'sdfdsgfdsf'})
104
- assert nets.empty?
105
- end
106
- end
107
-
108
- describe '#flatten' do
109
- it "returns qemu nic string" do
110
- flat_qemu = { net1: 'virtio=66:89:C5:59:AA:96,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1' }
111
- assert_equal flat_qemu ,Fog::Proxmox::NicHelper.flatten(qemu_nic)
112
- end
113
- it "returns qemu nic create string" do
114
- flat_qemu = { net1: 'model=virtio,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1' }
115
- assert_equal flat_qemu ,Fog::Proxmox::NicHelper.flatten(qemu_nic_create)
116
- end
117
- it "returns lxc nic string" do
118
- flat_lxc = { net0: 'eth0=66:89:C5:59:AA:96,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1,ip=192.168.56.100/31' }
119
- assert_equal flat_lxc ,Fog::Proxmox::NicHelper.flatten(lxc_nic)
120
- end
121
- end
122
-
123
- describe '#has_ip?' do
124
- it "returns true" do
125
- ip = Fog::Proxmox::NicHelper.has_ip?(net_lxc[:net0])
126
- assert_equal true, ip
127
- end
128
- end
129
-
130
- describe '#extract_ip' do
131
- it "returns lxc ip cidr" do
132
- ip = Fog::Proxmox::NicHelper.extract_ip(net_lxc[:net0])
133
- assert_equal '192.168.56.100/31', ip
134
- end
135
- end
136
- end
23
+ describe Fog::Proxmox::NicHelper do
24
+ let(:net_vm) do
25
+ { net0: 'virtio=66:89:C5:59:AA:96,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1' }
26
+ end
27
+
28
+ let(:net_vm_create) do
29
+ { net0: 'model=virtio,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1' }
30
+ end
31
+
32
+ let(:net_lxc) do
33
+ { net0: 'eth0=66:89:C5:59:AA:96,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1,ip=192.168.56.100/31' }
34
+ end
35
+
36
+ let(:net_lxc_create) do
37
+ { net0: 'name=eth0,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1,ip=192.168.56.100/31' }
38
+ end
39
+
40
+ let(:lxc_nic) do
41
+ { id: 'net0', name: 'eth0', macaddr: '66:89:C5:59:AA:96', bridge: 'vmbr0', firewall: 1, link_down: 1, queues: 1, rate: 1, tag: 1, ip: '192.168.56.100/31' }
42
+ end
43
+
44
+ let(:qemu_nic) do
45
+ { id: 'net1', model: 'virtio', macaddr: '66:89:C5:59:AA:96', bridge: 'vmbr0', firewall: 1, link_down: 1, queues: 1, rate: 1, tag: 1 }
46
+ end
47
+
48
+ let(:qemu_nic_create) do
49
+ { id: 'net1', model: 'virtio', bridge: 'vmbr0', firewall: 1, link_down: 1, queues: 1, rate: 1, tag: 1 }
50
+ end
51
+
52
+ describe '#extract_model' do
53
+ it "returns model card" do
54
+ model = Fog::Proxmox::NicHelper.extract_nic_id(net_vm[:net0])
55
+ assert_equal 'virtio', model
56
+ end
57
+ it "returns model card creation" do
58
+ model = Fog::Proxmox::NicHelper.extract_nic_id(net_vm_create[:net0])
59
+ assert_equal 'virtio', model
60
+ end
61
+ end
62
+
63
+ describe '#extract_name' do
64
+ it "returns lxc name" do
65
+ model = Fog::Proxmox::NicHelper.extract_nic_id(net_lxc[:net0])
66
+ assert_equal 'eth0', model
67
+ end
68
+ it "returns lxc name creation" do
69
+ model = Fog::Proxmox::NicHelper.extract_nic_id(net_lxc_create[:net0])
70
+ assert_equal 'eth0', model
71
+ end
72
+ end
73
+
74
+ describe '#extract_mac_address' do
75
+ it "returns vm mac address" do
76
+ mac_address = Fog::Proxmox::NicHelper.extract_mac_address(net_vm[:net0])
77
+ assert_equal '66:89:C5:59:AA:96', mac_address
78
+ end
79
+ it "returns lxc mac address" do
80
+ mac_address = Fog::Proxmox::NicHelper.extract_mac_address(net_lxc[:net0])
81
+ assert_equal '66:89:C5:59:AA:96', mac_address
82
+ end
83
+ end
84
+
85
+ describe '#nic?' do
86
+ it "returns true" do
87
+ assert Fog::Proxmox::NicHelper.nic?('net0')
88
+ end
89
+ it "returns false" do
90
+ assert !Fog::Proxmox::NicHelper.nic?('net')
91
+ end
92
+ end
93
+
94
+ describe '#collect_nics' do
95
+ it "returns net0" do
96
+ nets = Fog::Proxmox::NicHelper.collect_nics(net_vm.merge({'netout': 'sdfdsgfdsf'}))
97
+ assert nets.has_key?(:net0)
98
+ assert nets.has_value?(net_vm[:net0])
99
+ assert !nets.has_key?('netout')
100
+ end
101
+ it "returns empty" do
102
+ nets = Fog::Proxmox::NicHelper.collect_nics({'netout': 'sdfdsgfdsf'})
103
+ assert nets.empty?
104
+ end
105
+ end
106
+
107
+ describe '#flatten' do
108
+ it "returns qemu nic string" do
109
+ flat_qemu = { net1: 'virtio=66:89:C5:59:AA:96,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1' }
110
+ assert_equal flat_qemu, Fog::Proxmox::NicHelper.flatten(qemu_nic)
111
+ end
112
+ it "returns qemu nic create string" do
113
+ flat_qemu = { net1: 'model=virtio,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1' }
114
+ assert_equal flat_qemu, Fog::Proxmox::NicHelper.flatten(qemu_nic_create)
115
+ end
116
+ it "returns lxc nic string" do
117
+ flat_lxc = { net0: 'eth0=66:89:C5:59:AA:96,bridge=vmbr0,firewall=1,link_down=1,queues=1,rate=1,tag=1,ip=192.168.56.100/31' }
118
+ assert_equal flat_lxc, Fog::Proxmox::NicHelper.flatten(lxc_nic)
119
+ end
120
+ end
121
+
122
+ describe '#has_ip?' do
123
+ it "returns true" do
124
+ ip = Fog::Proxmox::NicHelper.has_ip?(net_lxc[:net0])
125
+ assert_equal true, ip
126
+ end
127
+ end
128
+
129
+ describe '#extract_ip' do
130
+ it "returns lxc ip cidr" do
131
+ ip = Fog::Proxmox::NicHelper.extract_ip(net_lxc[:net0])
132
+ assert_equal '192.168.56.100/31', ip
133
+ end
134
+ end
135
+ end