knife-ionoscloud 5.1.0 → 6.0.0.alpha.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 (192) hide show
  1. checksums.yaml +4 -4
  2. data/knife-ionoscloud.gemspec +1 -1
  3. data/lib/chef/knife/ionoscloud_backupunit_create.rb +1 -1
  4. data/lib/chef/knife/ionoscloud_backupunit_delete.rb +1 -1
  5. data/lib/chef/knife/ionoscloud_backupunit_list.rb +1 -1
  6. data/lib/chef/knife/ionoscloud_backupunit_ssourl.rb +1 -1
  7. data/lib/chef/knife/ionoscloud_base.rb +1 -1
  8. data/lib/chef/knife/ionoscloud_composite_server_create.rb +25 -23
  9. data/lib/chef/knife/ionoscloud_contract_list.rb +32 -23
  10. data/lib/chef/knife/ionoscloud_cube_server_create.rb +215 -0
  11. data/lib/chef/knife/ionoscloud_datacenter_create.rb +1 -1
  12. data/lib/chef/knife/ionoscloud_datacenter_delete.rb +1 -1
  13. data/lib/chef/knife/ionoscloud_datacenter_list.rb +4 -2
  14. data/lib/chef/knife/ionoscloud_firewall_create.rb +11 -4
  15. data/lib/chef/knife/ionoscloud_firewall_delete.rb +4 -3
  16. data/lib/chef/knife/ionoscloud_firewall_list.rb +5 -3
  17. data/lib/chef/knife/ionoscloud_flowlog_create.rb +121 -0
  18. data/lib/chef/knife/ionoscloud_flowlog_delete.rb +106 -0
  19. data/lib/chef/knife/ionoscloud_flowlog_list.rb +100 -0
  20. data/lib/chef/knife/ionoscloud_group_create.rb +35 -14
  21. data/lib/chef/knife/ionoscloud_group_delete.rb +7 -0
  22. data/lib/chef/knife/ionoscloud_group_get.rb +6 -0
  23. data/lib/chef/knife/ionoscloud_group_list.rb +19 -7
  24. data/lib/chef/knife/ionoscloud_image_list.rb +1 -1
  25. data/lib/chef/knife/ionoscloud_ipfailover_add.rb +1 -1
  26. data/lib/chef/knife/ionoscloud_ipfailover_remove.rb +1 -1
  27. data/lib/chef/knife/ionoscloud_k8s_delete.rb +5 -2
  28. data/lib/chef/knife/ionoscloud_label_add.rb +1 -1
  29. data/lib/chef/knife/ionoscloud_label_list.rb +1 -1
  30. data/lib/chef/knife/ionoscloud_label_remove.rb +1 -1
  31. data/lib/chef/knife/ionoscloud_lan_create.rb +1 -1
  32. data/lib/chef/knife/ionoscloud_lan_delete.rb +1 -1
  33. data/lib/chef/knife/ionoscloud_lan_list.rb +1 -1
  34. data/lib/chef/knife/ionoscloud_loadbalancer_create.rb +1 -1
  35. data/lib/chef/knife/ionoscloud_loadbalancer_delete.rb +1 -1
  36. data/lib/chef/knife/ionoscloud_loadbalancer_get.rb +1 -1
  37. data/lib/chef/knife/ionoscloud_loadbalancer_list.rb +1 -1
  38. data/lib/chef/knife/ionoscloud_loadbalancer_nic_add.rb +1 -1
  39. data/lib/chef/knife/ionoscloud_loadbalancer_nic_remove.rb +1 -1
  40. data/lib/chef/knife/ionoscloud_location_list.rb +5 -3
  41. data/lib/chef/knife/ionoscloud_natgateway_create.rb +71 -0
  42. data/lib/chef/knife/ionoscloud_natgateway_delete.rb +69 -0
  43. data/lib/chef/knife/ionoscloud_natgateway_lan_add.rb +82 -0
  44. data/lib/chef/knife/ionoscloud_natgateway_lan_remove.rb +58 -0
  45. data/lib/chef/knife/ionoscloud_natgateway_list.rb +49 -0
  46. data/lib/chef/knife/ionoscloud_natgateway_rule_add.rb +124 -0
  47. data/lib/chef/knife/ionoscloud_natgateway_rule_list.rb +63 -0
  48. data/lib/chef/knife/ionoscloud_natgateway_rule_remove.rb +72 -0
  49. data/lib/chef/knife/ionoscloud_networkloadbalancer_create.rb +95 -0
  50. data/lib/chef/knife/ionoscloud_networkloadbalancer_delete.rb +81 -0
  51. data/lib/chef/knife/ionoscloud_networkloadbalancer_list.rb +56 -0
  52. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_add.rb +150 -0
  53. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_list.rb +63 -0
  54. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_remove.rb +78 -0
  55. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_add.rb +141 -0
  56. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_list.rb +68 -0
  57. data/lib/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove.rb +105 -0
  58. data/lib/chef/knife/ionoscloud_nic_create.rb +14 -9
  59. data/lib/chef/knife/ionoscloud_nic_delete.rb +4 -2
  60. data/lib/chef/knife/ionoscloud_nic_list.rb +9 -5
  61. data/lib/chef/knife/ionoscloud_node_list.rb +0 -1
  62. data/lib/chef/knife/ionoscloud_nodepool_create.rb +42 -16
  63. data/lib/chef/knife/ionoscloud_nodepool_delete.rb +25 -0
  64. data/lib/chef/knife/ionoscloud_nodepool_lan_add.rb +130 -0
  65. data/lib/chef/knife/ionoscloud_nodepool_lan_remove.rb +96 -0
  66. data/lib/chef/knife/ionoscloud_nodepool_list.rb +3 -1
  67. data/lib/chef/knife/ionoscloud_pcc_create.rb +2 -2
  68. data/lib/chef/knife/ionoscloud_pcc_delete.rb +1 -1
  69. data/lib/chef/knife/ionoscloud_pcc_list.rb +1 -1
  70. data/lib/chef/knife/ionoscloud_request_list.rb +1 -1
  71. data/lib/chef/knife/ionoscloud_request_status.rb +1 -1
  72. data/lib/chef/knife/ionoscloud_s3key_create.rb +2 -2
  73. data/lib/chef/knife/ionoscloud_s3key_delete.rb +3 -3
  74. data/lib/chef/knife/ionoscloud_s3key_list.rb +2 -2
  75. data/lib/chef/knife/ionoscloud_server_console.rb +42 -0
  76. data/lib/chef/knife/ionoscloud_server_create.rb +8 -8
  77. data/lib/chef/knife/ionoscloud_server_delete.rb +1 -1
  78. data/lib/chef/knife/ionoscloud_server_list.rb +16 -5
  79. data/lib/chef/knife/ionoscloud_server_reboot.rb +1 -1
  80. data/lib/chef/knife/ionoscloud_server_resume.rb +43 -0
  81. data/lib/chef/knife/ionoscloud_server_start.rb +1 -1
  82. data/lib/chef/knife/ionoscloud_server_stop.rb +1 -1
  83. data/lib/chef/knife/ionoscloud_server_suspend.rb +44 -0
  84. data/lib/chef/knife/ionoscloud_server_token.rb +42 -0
  85. data/lib/chef/knife/ionoscloud_server_upgrade.rb +44 -0
  86. data/lib/chef/knife/ionoscloud_snapshot_create.rb +2 -2
  87. data/lib/chef/knife/ionoscloud_snapshot_delete.rb +1 -1
  88. data/lib/chef/knife/ionoscloud_snapshot_list.rb +1 -1
  89. data/lib/chef/knife/ionoscloud_snapshot_restore.rb +2 -2
  90. data/lib/chef/knife/ionoscloud_template_list.rb +46 -0
  91. data/lib/chef/knife/ionoscloud_user_ssourl.rb +1 -1
  92. data/lib/chef/knife/ionoscloud_volume_attach.rb +1 -1
  93. data/lib/chef/knife/ionoscloud_volume_create.rb +33 -35
  94. data/lib/chef/knife/ionoscloud_volume_delete.rb +1 -1
  95. data/lib/chef/knife/ionoscloud_volume_detach.rb +1 -1
  96. data/lib/chef/knife/ionoscloud_volume_list.rb +2 -2
  97. data/lib/knife-ionoscloud/version.rb +1 -1
  98. data/spec/chef/knife/ionoscloud_backupunit_create_spec.rb +2 -2
  99. data/spec/chef/knife/ionoscloud_backupunit_delete_spec.rb +5 -5
  100. data/spec/chef/knife/ionoscloud_backupunit_list_spec.rb +1 -1
  101. data/spec/chef/knife/ionoscloud_backupunit_ssourl_spec.rb +3 -3
  102. data/spec/chef/knife/ionoscloud_base_spec.rb +4 -4
  103. data/spec/chef/knife/ionoscloud_composite_server_create_spec.rb +11 -8
  104. data/spec/chef/knife/ionoscloud_contract_list_spec.rb +32 -27
  105. data/spec/chef/knife/ionoscloud_cube_server_create_spec.rb +249 -0
  106. data/spec/chef/knife/ionoscloud_datacenter_create_spec.rb +3 -2
  107. data/spec/chef/knife/ionoscloud_datacenter_delete_spec.rb +5 -5
  108. data/spec/chef/knife/ionoscloud_datacenter_list_spec.rb +5 -3
  109. data/spec/chef/knife/ionoscloud_firewall_create_spec.rb +5 -3
  110. data/spec/chef/knife/ionoscloud_firewall_delete_spec.rb +6 -5
  111. data/spec/chef/knife/ionoscloud_firewall_list_spec.rb +5 -3
  112. data/spec/chef/knife/ionoscloud_flowlog_create_spec.rb +254 -0
  113. data/spec/chef/knife/ionoscloud_flowlog_delete_spec.rb +360 -0
  114. data/spec/chef/knife/ionoscloud_flowlog_list_spec.rb +264 -0
  115. data/spec/chef/knife/ionoscloud_group_create_spec.rb +6 -0
  116. data/spec/chef/knife/ionoscloud_group_delete_spec.rb +6 -0
  117. data/spec/chef/knife/ionoscloud_group_get_spec.rb +6 -0
  118. data/spec/chef/knife/ionoscloud_group_list_spec.rb +26 -8
  119. data/spec/chef/knife/ionoscloud_image_list_spec.rb +2 -2
  120. data/spec/chef/knife/ionoscloud_ipfailover_add_spec.rb +3 -3
  121. data/spec/chef/knife/ionoscloud_ipfailover_remove_spec.rb +4 -4
  122. data/spec/chef/knife/ionoscloud_k8s_delete_spec.rb +5 -2
  123. data/spec/chef/knife/ionoscloud_kubeconfig_get_spec.rb +2 -2
  124. data/spec/chef/knife/ionoscloud_label_add_spec.rb +10 -10
  125. data/spec/chef/knife/ionoscloud_label_list_spec.rb +14 -14
  126. data/spec/chef/knife/ionoscloud_label_remove_spec.rb +20 -20
  127. data/spec/chef/knife/ionoscloud_lan_create_spec.rb +3 -3
  128. data/spec/chef/knife/ionoscloud_lan_delete_spec.rb +5 -5
  129. data/spec/chef/knife/ionoscloud_lan_list_spec.rb +2 -2
  130. data/spec/chef/knife/ionoscloud_loadbalancer_create_spec.rb +3 -3
  131. data/spec/chef/knife/ionoscloud_loadbalancer_delete_spec.rb +5 -5
  132. data/spec/chef/knife/ionoscloud_loadbalancer_get_spec.rb +2 -2
  133. data/spec/chef/knife/ionoscloud_loadbalancer_list_spec.rb +2 -2
  134. data/spec/chef/knife/ionoscloud_loadbalancer_nic_add_spec.rb +6 -6
  135. data/spec/chef/knife/ionoscloud_loadbalancer_nic_remove_spec.rb +6 -6
  136. data/spec/chef/knife/ionoscloud_location_list_spec.rb +5 -3
  137. data/spec/chef/knife/ionoscloud_natgateway_create_spec.rb +77 -0
  138. data/spec/chef/knife/ionoscloud_natgateway_delete_spec.rb +118 -0
  139. data/spec/chef/knife/ionoscloud_natgateway_lan_add_spec.rb +143 -0
  140. data/spec/chef/knife/ionoscloud_natgateway_lan_remove_spec.rb +194 -0
  141. data/spec/chef/knife/ionoscloud_natgateway_list_spec.rb +79 -0
  142. data/spec/chef/knife/ionoscloud_natgateway_rule_add_spec.rb +98 -0
  143. data/spec/chef/knife/ionoscloud_natgateway_rule_list_spec.rb +92 -0
  144. data/spec/chef/knife/ionoscloud_natgateway_rule_remove_spec.rb +77 -0
  145. data/spec/chef/knife/ionoscloud_networkloadbalancer_create_spec.rb +80 -0
  146. data/spec/chef/knife/ionoscloud_networkloadbalancer_delete_spec.rb +119 -0
  147. data/spec/chef/knife/ionoscloud_networkloadbalancer_list_spec.rb +88 -0
  148. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_add_spec.rb +104 -0
  149. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_list_spec.rb +89 -0
  150. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_remove_spec.rb +124 -0
  151. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_add_spec.rb +109 -0
  152. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_list_spec.rb +85 -0
  153. data/spec/chef/knife/ionoscloud_networkloadbalancer_rule_target_remove_spec.rb +263 -0
  154. data/spec/chef/knife/ionoscloud_nic_create_spec.rb +9 -5
  155. data/spec/chef/knife/ionoscloud_nic_delete_spec.rb +8 -6
  156. data/spec/chef/knife/ionoscloud_nic_list_spec.rb +12 -6
  157. data/spec/chef/knife/ionoscloud_nodepool_create_spec.rb +15 -1
  158. data/spec/chef/knife/ionoscloud_nodepool_lan_add_spec.rb +226 -0
  159. data/spec/chef/knife/ionoscloud_nodepool_lan_remove.rb +199 -0
  160. data/spec/chef/knife/ionoscloud_nodepool_list_spec.rb +3 -1
  161. data/spec/chef/knife/ionoscloud_pcc_create_spec.rb +6 -6
  162. data/spec/chef/knife/ionoscloud_pcc_delete_spec.rb +5 -5
  163. data/spec/chef/knife/ionoscloud_pcc_list_spec.rb +2 -2
  164. data/spec/chef/knife/ionoscloud_request_list_spec.rb +16 -16
  165. data/spec/chef/knife/ionoscloud_request_status_spec.rb +3 -3
  166. data/spec/chef/knife/ionoscloud_s3key_create_spec.rb +2 -2
  167. data/spec/chef/knife/ionoscloud_s3key_delete_spec.rb +5 -5
  168. data/spec/chef/knife/ionoscloud_s3key_list_spec.rb +2 -2
  169. data/spec/chef/knife/ionoscloud_server_console_spec.rb +97 -0
  170. data/spec/chef/knife/ionoscloud_server_create_spec.rb +3 -3
  171. data/spec/chef/knife/ionoscloud_server_delete_spec.rb +5 -5
  172. data/spec/chef/knife/ionoscloud_server_list_spec.rb +63 -5
  173. data/spec/chef/knife/ionoscloud_server_reboot_spec.rb +3 -5
  174. data/spec/chef/knife/ionoscloud_server_resume_spec.rb +93 -0
  175. data/spec/chef/knife/ionoscloud_server_start_spec.rb +3 -5
  176. data/spec/chef/knife/ionoscloud_server_stop_spec.rb +3 -5
  177. data/spec/chef/knife/ionoscloud_server_suspend_spec.rb +93 -0
  178. data/spec/chef/knife/ionoscloud_server_token_spec.rb +97 -0
  179. data/spec/chef/knife/ionoscloud_server_upgrade_spec.rb +96 -0
  180. data/spec/chef/knife/ionoscloud_snapshot_create_spec.rb +3 -3
  181. data/spec/chef/knife/ionoscloud_snapshot_delete_spec.rb +5 -5
  182. data/spec/chef/knife/ionoscloud_snapshot_list_spec.rb +2 -2
  183. data/spec/chef/knife/ionoscloud_snapshot_restore_spec.rb +3 -3
  184. data/spec/chef/knife/ionoscloud_template_list_spec.rb +78 -0
  185. data/spec/chef/knife/ionoscloud_user_ssourl_spec.rb +3 -3
  186. data/spec/chef/knife/ionoscloud_volume_attach_spec.rb +4 -4
  187. data/spec/chef/knife/ionoscloud_volume_create_spec.rb +6 -58
  188. data/spec/chef/knife/ionoscloud_volume_delete_spec.rb +5 -5
  189. data/spec/chef/knife/ionoscloud_volume_detach_spec.rb +5 -5
  190. data/spec/chef/knife/ionoscloud_volume_list_spec.rb +4 -4
  191. data/spec/spec_helper.rb +223 -29
  192. metadata +93 -6
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudVolumeDelete do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call VolumeApi.datacenters_volumes_delete when the ID is valid' do
15
+ it 'should call VolumesApi.datacenters_volumes_delete when the ID is valid' do
16
16
  volume = volume_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -42,14 +42,14 @@ describe Chef::Knife::IonoscloudVolumeDelete do
42
42
  {
43
43
  method: 'GET',
44
44
  path: "/datacenters/#{subject_config[:datacenter_id]}/volumes/#{volume.id}",
45
- operation: :'VolumeApi.datacenters_volumes_find_by_id',
45
+ operation: :'VolumesApi.datacenters_volumes_find_by_id',
46
46
  return_type: 'Volume',
47
47
  result: volume,
48
48
  },
49
49
  {
50
50
  method: 'DELETE',
51
51
  path: "/datacenters/#{subject_config[:datacenter_id]}/volumes/#{volume.id}",
52
- operation: :'VolumeApi.datacenters_volumes_delete',
52
+ operation: :'VolumesApi.datacenters_volumes_delete',
53
53
  },
54
54
  ],
55
55
  )
@@ -57,7 +57,7 @@ describe Chef::Knife::IonoscloudVolumeDelete do
57
57
  expect { subject.run }.not_to raise_error(Exception)
58
58
  end
59
59
 
60
- it 'should not call VolumeApi.datacenters_volumes_delete when the ID is not valid' do
60
+ it 'should not call VolumesApi.datacenters_volumes_delete when the ID is not valid' do
61
61
  volume_id = 'invalid_id'
62
62
  subject_config = {
63
63
  ionoscloud_username: 'email',
@@ -77,7 +77,7 @@ describe Chef::Knife::IonoscloudVolumeDelete do
77
77
  {
78
78
  method: 'GET',
79
79
  path: "/datacenters/#{subject_config[:datacenter_id]}/volumes/#{volume_id}",
80
- operation: :'VolumeApi.datacenters_volumes_find_by_id',
80
+ operation: :'VolumesApi.datacenters_volumes_find_by_id',
81
81
  return_type: 'Volume',
82
82
  exception: Ionoscloud::ApiError.new(code: 404),
83
83
  },
@@ -12,7 +12,7 @@ describe Chef::Knife::IonoscloudVolumeDetach do
12
12
  end
13
13
 
14
14
  describe '#run' do
15
- it 'should call ServerApi.datacenters_servers_volumes_delete when the ID is valid' do
15
+ it 'should call ServersApi.datacenters_servers_volumes_delete when the ID is valid' do
16
16
  volume = volume_mock
17
17
  subject_config = {
18
18
  ionoscloud_username: 'email',
@@ -43,14 +43,14 @@ describe Chef::Knife::IonoscloudVolumeDetach do
43
43
  {
44
44
  method: 'GET',
45
45
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{subject_config[:server_id]}/volumes/#{volume.id}",
46
- operation: :'ServerApi.datacenters_servers_volumes_find_by_id',
46
+ operation: :'ServersApi.datacenters_servers_volumes_find_by_id',
47
47
  return_type: 'Volume',
48
48
  result: volume,
49
49
  },
50
50
  {
51
51
  method: 'DELETE',
52
52
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{subject_config[:server_id]}/volumes/#{volume.id}",
53
- operation: :'ServerApi.datacenters_servers_volumes_delete',
53
+ operation: :'ServersApi.datacenters_servers_volumes_delete',
54
54
  },
55
55
  ],
56
56
  )
@@ -58,7 +58,7 @@ describe Chef::Knife::IonoscloudVolumeDetach do
58
58
  expect { subject.run }.not_to raise_error(Exception)
59
59
  end
60
60
 
61
- it 'should not call ServerApi.datacenters_servers_volumes_delete when the ID is not valid' do
61
+ it 'should not call ServersApi.datacenters_servers_volumes_delete when the ID is not valid' do
62
62
  volume_id = 'invalid_id'
63
63
  subject_config = {
64
64
  ionoscloud_username: 'email',
@@ -79,7 +79,7 @@ describe Chef::Knife::IonoscloudVolumeDetach do
79
79
  {
80
80
  method: 'GET',
81
81
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{subject_config[:server_id]}/volumes/#{volume_id}",
82
- operation: :'ServerApi.datacenters_servers_volumes_find_by_id',
82
+ operation: :'ServersApi.datacenters_servers_volumes_find_by_id',
83
83
  return_type: 'Volume',
84
84
  exception: Ionoscloud::ApiError.new(code: 404),
85
85
  },
@@ -41,7 +41,7 @@ describe Chef::Knife::IonoscloudVolumeList do
41
41
  end
42
42
 
43
43
  describe '#run' do
44
- it 'should call VolumeApi.datacenters_volumes_get when no server_id is set' do
44
+ it 'should call VolumesApi.datacenters_volumes_get when no server_id is set' do
45
45
  subject_config = {
46
46
  ionoscloud_username: 'email',
47
47
  ionoscloud_password: 'password',
@@ -58,7 +58,7 @@ describe Chef::Knife::IonoscloudVolumeList do
58
58
  {
59
59
  method: 'GET',
60
60
  path: "/datacenters/#{subject_config[:datacenter_id]}/volumes",
61
- operation: :'VolumeApi.datacenters_volumes_get',
61
+ operation: :'VolumesApi.datacenters_volumes_get',
62
62
  return_type: 'Volumes',
63
63
  result: @volumes,
64
64
  },
@@ -68,7 +68,7 @@ describe Chef::Knife::IonoscloudVolumeList do
68
68
  expect { subject.run }.not_to raise_error(Exception)
69
69
  end
70
70
 
71
- it 'should call ServerApi.datacenters_servers_volumes_get when server_id is set' do
71
+ it 'should call ServersApi.datacenters_servers_volumes_get when server_id is set' do
72
72
  subject_config = {
73
73
  ionoscloud_username: 'email',
74
74
  ionoscloud_password: 'password',
@@ -87,7 +87,7 @@ describe Chef::Knife::IonoscloudVolumeList do
87
87
  {
88
88
  method: 'GET',
89
89
  path: "/datacenters/#{subject_config[:datacenter_id]}/servers/#{subject_config[:server_id]}/volumes",
90
- operation: :'ServerApi.datacenters_servers_volumes_get',
90
+ operation: :'ServersApi.datacenters_servers_volumes_get',
91
91
  return_type: 'AttachedVolumes',
92
92
  result: @volumes,
93
93
  },
data/spec/spec_helper.rb CHANGED
@@ -45,6 +45,14 @@ def contract_mock(opts = {})
45
45
  )
46
46
  end
47
47
 
48
+ def contracts_mock(opts = {})
49
+ Ionoscloud::IpBlocks.new(
50
+ id: 'contracts',
51
+ type: 'collection',
52
+ items: [contract_mock],
53
+ )
54
+ end
55
+
48
56
  def ipblock_mock(opts = {})
49
57
  Ionoscloud::IpBlock.new(
50
58
  id: opts[:id] || SecureRandom.uuid,
@@ -112,6 +120,18 @@ def servers_mock(opts = {})
112
120
  )
113
121
  end
114
122
 
123
+ def token_mock
124
+ Ionoscloud::Token.new(
125
+ token: 'test_token'
126
+ )
127
+ end
128
+
129
+ def console_mock
130
+ Ionoscloud::RemoteConsoleUrl.new(
131
+ url: 'test_url'
132
+ )
133
+ end
134
+
115
135
  def volume_mock(opts = {})
116
136
  Ionoscloud::Volume.new(
117
137
  id: opts[:id] || SecureRandom.uuid,
@@ -123,6 +143,8 @@ def volume_mock(opts = {})
123
143
  availability_zone: opts[:availability_zone] || 'AUTO',
124
144
  licence_type: opts[:licence_type] || 'LINUX',
125
145
  image: opts[:image] || SecureRandom.uuid,
146
+ backupunit_id: opts[:backupunit_id] || SecureRandom.uuid,
147
+ user_data: opts[:user_data] || 'user_data',
126
148
  ),
127
149
  )
128
150
  end
@@ -148,7 +170,6 @@ end
148
170
  def label_resources_mock(opts = {})
149
171
  Ionoscloud::LabelResources.new(
150
172
  id: 'labelresources',
151
- type: 'collection',
152
173
  items: [label_resource_mock, label_resource_mock],
153
174
  )
154
175
  end
@@ -168,7 +189,6 @@ end
168
189
  def labels_mock(opts = {})
169
190
  Ionoscloud::Labels.new(
170
191
  id: 'labels',
171
- type: 'collection',
172
192
  items: [label_mock, label_mock],
173
193
  )
174
194
  end
@@ -187,7 +207,6 @@ end
187
207
  def backupunits_mock(opts = {})
188
208
  Ionoscloud::BackupUnits.new(
189
209
  id: 'backupunits',
190
- type: 'collection',
191
210
  items: [backupunit_mock, backupunit_mock],
192
211
  )
193
212
  end
@@ -218,11 +237,13 @@ def nic_mock(opts = {})
218
237
  properties: Ionoscloud::NicProperties.new(
219
238
  name: opts[:name] || 'nic_name',
220
239
  ips: opts[:ips] || ['1.1.1.1', '1.1.1.2'],
221
- nat: opts[:nat] || true,
222
240
  dhcp: opts[:dhcp] || true,
223
241
  firewall_active: opts[:firewall_active] || true,
224
242
  mac: opts[:mac] || '00:0a:95:9d:68:16',
225
243
  lan: opts[:lan] || 1,
244
+ firewall_type: opts[:firewall_type] || 'INGRESS',
245
+ device_number: opts[:device_number] || 3,
246
+ pci_slot: opts[:pci_slot] || 6,
226
247
  ),
227
248
  entities: Ionoscloud::NicEntities.new(
228
249
  firewallrules: opts[:firewallrules] || [],
@@ -251,6 +272,7 @@ def firewall_mock(opts = {})
251
272
  port_range_end: opts[:port_range_end] || 22,
252
273
  icmp_type: opts[:icmp_type] || 4,
253
274
  icmp_code: opts[:icmp_code] || 7,
275
+ type: opts[:type] || 'INGRESS',
254
276
  ),
255
277
  )
256
278
  end
@@ -311,23 +333,7 @@ def location_mock(opts = {})
311
333
  id: opts[:id] || SecureRandom.uuid,
312
334
  properties: Ionoscloud::LocationProperties.new(
313
335
  name: opts[:name] || 'location_name',
314
- ),
315
- )
316
- end
317
-
318
- def locations_mock(opts = {})
319
- Ionoscloud::Locations.new(
320
- id: 'locations',
321
- type: 'collection',
322
- items: [location_mock],
323
- )
324
- end
325
-
326
- def location_mock(opts = {})
327
- Ionoscloud::Location.new(
328
- id: opts[:id] || SecureRandom.uuid,
329
- properties: Ionoscloud::LocationProperties.new(
330
- name: opts[:name] || 'location_name',
336
+ cpu_architecture: opts[:cpu_architecture] || [Ionoscloud::CpuArchitectureProperties.new(cpu_family: 'INTEL_SKYLAKE')],
331
337
  ),
332
338
  )
333
339
  end
@@ -355,12 +361,7 @@ def auto_scaling_mock(opts = {})
355
361
  end
356
362
 
357
363
  def kubeconfig_mock(opts = {})
358
- Ionoscloud::KubernetesConfig.new(
359
- id: opts[:id] || SecureRandom.uuid,
360
- properties: Ionoscloud::KubernetesConfigProperties.new(
361
- kubeconfig: opts[:kubeconfig] || 'kubeconfig_file_data',
362
- ),
363
- )
364
+ 'kubeconfig_file_data'
364
365
  end
365
366
 
366
367
  def k8s_cluster_mock(opts = {})
@@ -390,6 +391,20 @@ def k8s_clusters_mock(opts = {})
390
391
  )
391
392
  end
392
393
 
394
+
395
+ def nodepool_lan_mock(opts = {})
396
+ Ionoscloud::KubernetesNodePoolLan.new(
397
+ id: opts[:id] || 1,
398
+ dhcp: opts[:dhcp] || false,
399
+ routes: opts[:routes] || [
400
+ Ionoscloud::KubernetesNodePoolLanRoutes.new(
401
+ network: opts[:network] || '1.2.3.4/24',
402
+ gateway_ip: opts[:gateway_ip] || '10.1.5.16',
403
+ ),
404
+ ],
405
+ )
406
+ end
407
+
393
408
  def k8s_nodepool_mock(opts = {})
394
409
  Ionoscloud::KubernetesNodePool.new(
395
410
  id: opts[:id] || SecureRandom.uuid,
@@ -406,7 +421,7 @@ def k8s_nodepool_mock(opts = {})
406
421
  k8s_version: opts[:k8s_version] || '1.15.4',
407
422
  maintenance_window: opts[:maintenance_window] || maintenance_window_mock,
408
423
  auto_scaling: opts[:auto_scaling] || auto_scaling_mock,
409
- lans: opts[:lans] || [lan_mock, lan_mock],
424
+ lans: opts[:lans] || [nodepool_lan_mock(id: 12), nodepool_lan_mock(id: 15)],
410
425
  labels: opts[:labels] || nil,
411
426
  annotations: opts[:annotations] || nil,
412
427
  public_ips: opts[:public_ips] || ['81.173.1.2', '82.231.2.5', '92.221.2.4'],
@@ -448,6 +463,15 @@ def k8s_nodes_mock(opts = {})
448
463
  )
449
464
  end
450
465
 
466
+ def cpu_architecture_mock(opts = {})
467
+ Ionoscloud::CpuArchitectureProperties.new(
468
+ cpu_family: opts[:cpu_family] || 'INTEL_SKYLAKE',
469
+ max_cores: opts[:max_cores] || 4,
470
+ max_ram: opts[:max_ram] || 4096,
471
+ vendor: opts[:vendor] || 'AuthenticAMD',
472
+ )
473
+ end
474
+
451
475
  def datacenter_mock(opts = {})
452
476
  Ionoscloud::Datacenter.new(
453
477
  id: opts[:id] || SecureRandom.uuid,
@@ -455,6 +479,7 @@ def datacenter_mock(opts = {})
455
479
  name: opts[:name] || 'datacenter_name',
456
480
  description: opts[:description] || 'datacenter_description',
457
481
  location: opts[:location] || 'de/fra',
482
+ cpu_architecture: opts[:cpu_architecture] || [cpu_architecture_mock],
458
483
  ),
459
484
  )
460
485
  end
@@ -589,6 +614,9 @@ def group_mock(opts = {})
589
614
  create_k8s_cluster: opts[:create_k8s_cluster] || true,
590
615
  create_pcc: opts[:create_pcc] || true,
591
616
  create_internet_access: opts[:create_internet_access] || true,
617
+ create_flow_log: opts[:create_flow_log] || true,
618
+ access_and_manage_monitoring: opts[:access_and_manage_monitoring] || true,
619
+ access_and_manage_certificates: opts[:access_and_manage_certificates] || true,
592
620
  ),
593
621
  entities: Ionoscloud::GroupEntities.new(
594
622
  users: group_members_mock,
@@ -672,6 +700,172 @@ def requests_mock(opts = {})
672
700
  )
673
701
  end
674
702
 
703
+ def template_mock(opts = {})
704
+ Ionoscloud::Template.new(
705
+ id: opts[:id] || SecureRandom.uuid,
706
+ properties: Ionoscloud::TemplateProperties.new(
707
+ name: opts[:name] || 'template_name',
708
+ cores: opts[:cores] || 2.0,
709
+ ram: opts[:ram] || 2048.0,
710
+ storage_size: opts[:storage_size] || 100.0,
711
+ ),
712
+ )
713
+ end
714
+
715
+ def templates_mock(opts = {})
716
+ Ionoscloud::Templates.new(
717
+ id: 'templates',
718
+ type: 'collection',
719
+ items: [template_mock, template_mock],
720
+ )
721
+ end
722
+
723
+ def natgateway_rule_mock(opts = {})
724
+ Ionoscloud::NatGatewayRule.new(
725
+ id: opts[:id] || SecureRandom.uuid,
726
+ properties: Ionoscloud::NatGatewayRuleProperties.new(
727
+ name: opts[:name] || 'test',
728
+ type: opts[:type] || 'test',
729
+ protocol: opts[:protocol] || 'test',
730
+ public_ip: opts[:public_ip] || '1.1.1.1',
731
+ source_subnet: opts[:source_subnet] || '1.1.1.1/24',
732
+ target_subnet: opts[:target_subnet] || '1.1.1.1/24',
733
+ target_port_range: Ionoscloud::TargetPortRange.new(
734
+ start: opts[:target_port_range_start] || 10,
735
+ _end: opts[:target_port_range_end] || 20,
736
+ ),
737
+ ),
738
+ )
739
+ end
740
+
741
+ def natgateway_rules_mock(opts = {})
742
+ Ionoscloud::NatGatewayRules.new(
743
+ id: 'rules',
744
+ type: 'collection',
745
+ items: [natgateway_rule_mock, natgateway_rule_mock] || opts[:rules],
746
+ )
747
+ end
748
+
749
+ def natgateway_lan_mock(opts = {})
750
+ Ionoscloud::NatGatewayLanProperties.new(
751
+ id: opts[:lan_id] || 1,
752
+ gateway_ips: opts[:gateway_ips] || ['10.8.152.227/24', '10.8.152.227/24'],
753
+ )
754
+ end
755
+
756
+ def natgateway_mock(opts = {})
757
+ Ionoscloud::NatGateway.new(
758
+ id: opts[:id] || SecureRandom.uuid,
759
+ properties: Ionoscloud::NatGatewayProperties.new(
760
+ name: opts[:name] || 'test',
761
+ public_ips: opts[:ips] || ['1.1.1.1'],
762
+ lans: opts[:lans] || [natgateway_lan_mock],
763
+ ),
764
+ entities: Ionoscloud::NatGatewayEntities.new(
765
+ rules: natgateway_rules_mock || opts[:rules],
766
+ ),
767
+ )
768
+ end
769
+
770
+ def natgateways_mock(opts = {})
771
+ Ionoscloud::NatGateways.new(
772
+ id: 'natgateways',
773
+ type: 'collection',
774
+ items: [natgateway_mock, natgateway_mock],
775
+ )
776
+ end
777
+
778
+ def flowlog_mock(opts = {})
779
+ Ionoscloud::FlowLog.new(
780
+ id: opts[:id] || SecureRandom.uuid,
781
+ properties: Ionoscloud::FlowLogProperties.new({
782
+ name: opts[:name] || 'flowlog_name',
783
+ action: opts[:action] || 'ACCEPTED',
784
+ direction: opts[:direction] || 'INGRESS',
785
+ bucket: opts[:bucket] || 'bucket_name',
786
+ }),
787
+ )
788
+ end
789
+
790
+ def flowlogs_mock(opts = {})
791
+ Ionoscloud::FlowLogs.new(
792
+ id: 'flowlogs',
793
+ type: 'collection',
794
+ items: [flowlog_mock, flowlog_mock],
795
+ )
796
+ end
797
+
798
+ def network_loadbalancer_mock(opts = {})
799
+ Ionoscloud::NetworkLoadBalancer.new(
800
+ id: opts[:id] || SecureRandom.uuid,
801
+ properties: Ionoscloud::NetworkLoadBalancerProperties.new({
802
+ name: opts[:name] || 'network_loadbalancer_name',
803
+ ips: opts[:ips] || ['123.123.123.123'],
804
+ listener_lan: opts[:listener_lan] || 1,
805
+ target_lan: opts[:target_lan] || 2,
806
+ lb_private_ips: opts[:lb_private_ips] || ['12.12.12.12'],
807
+ }),
808
+ entities: Ionoscloud::NetworkLoadBalancerEntities.new({
809
+ forwardingrules: opts[:rules] || network_loadbalancer_rules_mock,
810
+ flowlogs: opts[:flowlogs] || Ionoscloud::FlowLogs.new(
811
+ id: 'flowlogs',
812
+ type: 'collection',
813
+ items: [],
814
+ ),
815
+ })
816
+ )
817
+ end
818
+
819
+ def network_loadbalancers_mock(opts = {})
820
+ Ionoscloud::Templates.new(
821
+ id: 'network_loadbalancers',
822
+ type: 'collection',
823
+ items: [network_loadbalancer_mock, network_loadbalancer_mock],
824
+ )
825
+ end
826
+
827
+ def network_loadbalancer_rule_mock(opts = {})
828
+ Ionoscloud::NetworkLoadBalancerForwardingRule.new(
829
+ id: opts[:id] || SecureRandom.uuid,
830
+ properties: Ionoscloud::NetworkLoadBalancerForwardingRuleProperties.new(
831
+ name: opts[:name] || 'network_loadbalancer_rule_name',
832
+ algorithm: opts[:algorithm] || 'ROUND_ROBIN',
833
+ protocol: opts[:protocol] || 'TCP',
834
+ listener_ip: opts[:listener_ip] || '123.123.123.123',
835
+ listener_port: opts[:listener_port] || 123,
836
+ health_check: Ionoscloud::NetworkLoadBalancerForwardingRuleHealthCheck.new(
837
+ client_timeout: opts[:client_timeout] || 100,
838
+ check_timeout: opts[:check_timeout] || 200,
839
+ connect_timeout: opts[:connect_timeout] || 300,
840
+ target_timeout: opts[:target_timeout] || 400,
841
+ retries: opts[:retries] || 3,
842
+ ),
843
+ targets: opts[:targets] || [network_loadbalancer_rule_target_mock, network_loadbalancer_rule_target_mock],
844
+ ),
845
+ )
846
+ end
847
+
848
+ def network_loadbalancer_rules_mock(opts = {})
849
+ Ionoscloud::NetworkLoadBalancerForwardingRules.new(
850
+ id: 'network_loadbalancers_forwarding_rules',
851
+ type: 'collection',
852
+ items: [network_loadbalancer_rule_mock, network_loadbalancer_rule_mock],
853
+ )
854
+ end
855
+
856
+ def network_loadbalancer_rule_target_mock(opts = {})
857
+ Ionoscloud::NetworkLoadBalancerForwardingRuleTarget.new(
858
+ ip: opts[:ip] || '123.123.123.123',
859
+ port: opts[:port] || 3,
860
+ weight: opts[:weight] || 10,
861
+ health_check: Ionoscloud::NetworkLoadBalancerForwardingRuleTargetHealthCheck.new(
862
+ check: opts[:check] || true,
863
+ check_interval: opts[:check_interval] || 100,
864
+ maintenance: opts[:maintenance] || false,
865
+ ),
866
+ )
867
+ end
868
+
675
869
  def arrays_without_one_element(arr)
676
870
  result = [{ array: arr[1..], removed: [arr[0]] }]
677
871
  (1..arr.length - 1).each { |i| result.append({ array: arr[0..i - 1] + arr[i + 1..], removed: [arr[i]] }) }
@@ -692,7 +886,7 @@ def mock_call_api(subject, rules)
692
886
  expect(path).to eq(rule[:path])
693
887
  expect(opts[:operation]).to eq(rule[:operation])
694
888
  expect(opts[:form_params]).to eq(rule[:form_params] || {})
695
- expect(opts[:return_type]).to eq(rule[:return_type] || 'Object')
889
+ expect(opts[:return_type]).to eq(rule[:return_type] || nil)
696
890
  expect(received_body).to eq(rule[:body] || nil)
697
891
  expect(opts.slice(*(rule[:options] || {}).keys)).to eql((rule[:options] || {}))
698
892