fog-kubevirt 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/lib/fog/kubevirt/compute/compute.rb +125 -37
  3. data/lib/fog/kubevirt/compute/models/networkattachmentdef.rb +25 -0
  4. data/lib/fog/kubevirt/compute/models/networkattachmentdefs.rb +59 -0
  5. data/lib/fog/kubevirt/compute/models/pvc.rb +59 -0
  6. data/lib/fog/kubevirt/compute/models/pvcs.rb +76 -0
  7. data/lib/fog/kubevirt/compute/models/server.rb +42 -0
  8. data/lib/fog/kubevirt/compute/models/servers.rb +32 -0
  9. data/lib/fog/kubevirt/compute/models/service.rb +36 -0
  10. data/lib/fog/kubevirt/compute/models/services.rb +83 -0
  11. data/lib/fog/kubevirt/compute/models/vm.rb +6 -60
  12. data/lib/fog/kubevirt/compute/models/vm_base.rb +75 -0
  13. data/lib/fog/kubevirt/compute/models/vm_data.rb +164 -0
  14. data/lib/fog/kubevirt/compute/models/vms.rb +59 -19
  15. data/lib/fog/kubevirt/compute/models/volume.rb +73 -0
  16. data/lib/fog/kubevirt/compute/models/volumes.rb +61 -0
  17. data/lib/fog/kubevirt/compute/requests/create_networkattachmentdef.rb +37 -0
  18. data/lib/fog/kubevirt/compute/requests/create_service.rb +18 -0
  19. data/lib/fog/kubevirt/compute/requests/create_vm.rb +2 -0
  20. data/lib/fog/kubevirt/compute/requests/create_volume.rb +19 -0
  21. data/lib/fog/kubevirt/compute/requests/delete_networkattachmentdef.rb +16 -0
  22. data/lib/fog/kubevirt/compute/requests/delete_pvc.rb +16 -0
  23. data/lib/fog/kubevirt/compute/requests/delete_service.rb +16 -0
  24. data/lib/fog/kubevirt/compute/requests/delete_volume.rb +16 -0
  25. data/lib/fog/kubevirt/compute/requests/get_networkattachmentdef.rb +19 -0
  26. data/lib/fog/kubevirt/compute/requests/get_pvc.rb +16 -0
  27. data/lib/fog/kubevirt/compute/requests/get_server.rb +32 -0
  28. data/lib/fog/kubevirt/compute/requests/get_service.rb +16 -0
  29. data/lib/fog/kubevirt/compute/requests/get_vm.rb +1 -1
  30. data/lib/fog/kubevirt/compute/requests/get_vminstance.rb +4 -4
  31. data/lib/fog/kubevirt/compute/requests/get_volume.rb +16 -0
  32. data/lib/fog/kubevirt/compute/requests/list_networkattachmentdefs.rb +21 -0
  33. data/lib/fog/kubevirt/compute/requests/list_pvcs.rb +22 -0
  34. data/lib/fog/kubevirt/compute/requests/list_servers.rb +25 -0
  35. data/lib/fog/kubevirt/compute/requests/list_services.rb +22 -0
  36. data/lib/fog/kubevirt/compute/requests/list_vms.rb +4 -4
  37. data/lib/fog/kubevirt/compute/requests/list_volumes.rb +22 -0
  38. data/lib/fog/kubevirt/version.rb +1 -1
  39. data/spec/compute_v1alpha2_spec.rb +30 -0
  40. data/spec/fixtures/kubevirt/networkattachmentdefinition/networkattachmentdefinitions_crud.yml +320 -0
  41. data/spec/fixtures/kubevirt/pvc/pvcs_crud.yml +316 -0
  42. data/spec/fixtures/kubevirt/service/services_crud.yml +316 -0
  43. data/spec/fixtures/kubevirt/volume/volumes_crud.yml +316 -0
  44. data/spec/network_attachment_definition_v1alpha2_spec.rb +28 -0
  45. data/spec/pvcs_v1alpha2_spec.rb +52 -0
  46. data/spec/shared_context.rb +53 -0
  47. data/spec/spec_helper.rb +10 -0
  48. data/spec/volumes_v1alpha2_spec.rb +45 -0
  49. metadata +87 -10
@@ -0,0 +1,316 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://10.8.254.82:8443/api
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ Accept:
11
+ - "*/*"
12
+ Accept-Encoding:
13
+ - gzip, deflate
14
+ User-Agent:
15
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Cache-Control:
22
+ - no-store
23
+ Content-Type:
24
+ - application/json
25
+ Date:
26
+ - Tue, 22 Jan 2019 16:40:20 GMT
27
+ Content-Length:
28
+ - '162'
29
+ body:
30
+ encoding: UTF-8
31
+ string: '{"kind":"APIVersions","versions":["v1"],"serverAddressByClientCIDRs":[{"clientCIDR":"0.0.0.0/0","serverAddress":"cnv-executor-vatsal-master1.example.com:8443"}]}
32
+
33
+ '
34
+ http_version:
35
+ recorded_at: Tue, 22 Jan 2019 16:40:21 GMT
36
+ - request:
37
+ method: get
38
+ uri: https://10.8.254.82:8443/api/v1
39
+ body:
40
+ encoding: US-ASCII
41
+ string: ''
42
+ headers:
43
+ Accept:
44
+ - "*/*"
45
+ Accept-Encoding:
46
+ - gzip, deflate
47
+ User-Agent:
48
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
49
+ Authorization:
50
+ - Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Im15LWFjY291bnQtdG9rZW4ta3FsZDYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoibXktYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjJlYjVjZjU1LTFlNDUtMTFlOS1iYmZmLWZhMTYzZTM4OTEyYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0Om15LWFjY291bnQifQ.aAigSXFZapxJdFy3FwgSNc77jZYFiSTlG7D_AnHzBT1ZP69xLmrqI_oXt73NDLpecNWezjIvsCU6sLf45tfPY2RQX_aEAOXKWjFs2SxWI7GeQ-sWRt0yd1sOB9R48ipTdpNpNs5pypnTRg6dYLvtePmBWyOSN2412F9XKeM79tuO9a_ynPDjkCwsWJXGj-gX9DwpHdGK-cup0YosJ-9OpvXoWOiUNeBi1KrvJxgQwgLytJk3PHFnJHv4mCNALvvo1cu89_ENwUQrvok267ACeq53YsivYn7B0QWuZoX3ca4Bx14kEdXbd-9BvIEBZzVovH2ZvPTYMmyXgnpO7c1eOw
51
+ response:
52
+ status:
53
+ code: 200
54
+ message: OK
55
+ headers:
56
+ Cache-Control:
57
+ - no-store
58
+ Content-Type:
59
+ - application/json
60
+ Date:
61
+ - Tue, 22 Jan 2019 16:40:20 GMT
62
+ Transfer-Encoding:
63
+ - chunked
64
+ body:
65
+ encoding: UTF-8
66
+ string: '{"kind":"APIResourceList","groupVersion":"v1","resources":[{"name":"bindings","singularName":"","namespaced":true,"kind":"Binding","verbs":["create"]},{"name":"componentstatuses","singularName":"","namespaced":false,"kind":"ComponentStatus","verbs":["get","list"],"shortNames":["cs"]},{"name":"configmaps","singularName":"","namespaced":true,"kind":"ConfigMap","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["cm"]},{"name":"endpoints","singularName":"","namespaced":true,"kind":"Endpoints","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ep"]},{"name":"events","singularName":"","namespaced":true,"kind":"Event","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["ev"]},{"name":"limitranges","singularName":"","namespaced":true,"kind":"LimitRange","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["limits"]},{"name":"namespaces","singularName":"","namespaced":false,"kind":"Namespace","verbs":["create","delete","get","list","patch","update","watch"],"shortNames":["ns"]},{"name":"namespaces/finalize","singularName":"","namespaced":false,"kind":"Namespace","verbs":["update"]},{"name":"namespaces/status","singularName":"","namespaced":false,"kind":"Namespace","verbs":["get","patch","update"]},{"name":"nodes","singularName":"","namespaced":false,"kind":"Node","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["no"]},{"name":"nodes/proxy","singularName":"","namespaced":false,"kind":"Node","verbs":[]},{"name":"nodes/status","singularName":"","namespaced":false,"kind":"Node","verbs":["get","patch","update"]},{"name":"persistentvolumeclaims","singularName":"","namespaced":true,"kind":"PersistentVolumeClaim","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["pvc"]},{"name":"persistentvolumeclaims/status","singularName":"","namespaced":true,"kind":"PersistentVolumeClaim","verbs":["get","patch","update"]},{"name":"persistentvolumes","singularName":"","namespaced":false,"kind":"PersistentVolume","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["pv"]},{"name":"persistentvolumes/status","singularName":"","namespaced":false,"kind":"PersistentVolume","verbs":["get","patch","update"]},{"name":"pods","singularName":"","namespaced":true,"kind":"Pod","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["po"],"categories":["all"]},{"name":"pods/attach","singularName":"","namespaced":true,"kind":"Pod","verbs":[]},{"name":"pods/binding","singularName":"","namespaced":true,"kind":"Binding","verbs":["create"]},{"name":"pods/eviction","singularName":"","namespaced":true,"group":"policy","version":"v1beta1","kind":"Eviction","verbs":["create"]},{"name":"pods/exec","singularName":"","namespaced":true,"kind":"Pod","verbs":[]},{"name":"pods/log","singularName":"","namespaced":true,"kind":"Pod","verbs":["get"]},{"name":"pods/portforward","singularName":"","namespaced":true,"kind":"Pod","verbs":[]},{"name":"pods/proxy","singularName":"","namespaced":true,"kind":"Pod","verbs":[]},{"name":"pods/status","singularName":"","namespaced":true,"kind":"Pod","verbs":["get","patch","update"]},{"name":"podtemplates","singularName":"","namespaced":true,"kind":"PodTemplate","verbs":["create","delete","deletecollection","get","list","patch","update","watch"]},{"name":"replicationcontrollers","singularName":"","namespaced":true,"kind":"ReplicationController","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["rc"],"categories":["all"]},{"name":"replicationcontrollers/scale","singularName":"","namespaced":true,"group":"autoscaling","version":"v1","kind":"Scale","verbs":["get","patch","update"]},{"name":"replicationcontrollers/status","singularName":"","namespaced":true,"kind":"ReplicationController","verbs":["get","patch","update"]},{"name":"resourcequotas","singularName":"","namespaced":true,"kind":"ResourceQuota","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["quota"]},{"name":"resourcequotas/status","singularName":"","namespaced":true,"kind":"ResourceQuota","verbs":["get","patch","update"]},{"name":"secrets","singularName":"","namespaced":true,"kind":"Secret","verbs":["create","delete","deletecollection","get","list","patch","update","watch"]},{"name":"securitycontextconstraints","singularName":"","namespaced":false,"kind":"SecurityContextConstraints","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["scc"]},{"name":"serviceaccounts","singularName":"","namespaced":true,"kind":"ServiceAccount","verbs":["create","delete","deletecollection","get","list","patch","update","watch"],"shortNames":["sa"]},{"name":"services","singularName":"","namespaced":true,"kind":"Service","verbs":["create","delete","get","list","patch","update","watch"],"shortNames":["svc"],"categories":["all"]},{"name":"services/proxy","singularName":"","namespaced":true,"kind":"Service","verbs":[]},{"name":"services/status","singularName":"","namespaced":true,"kind":"Service","verbs":["get","patch","update"]}]}
67
+
68
+ '
69
+ http_version:
70
+ recorded_at: Tue, 22 Jan 2019 16:40:21 GMT
71
+ - request:
72
+ method: post
73
+ uri: https://10.8.254.82:8443/api/v1/persistentvolumes
74
+ body:
75
+ encoding: UTF-8
76
+ string: '{"apiVersion":"v1","kind":"PersistentVolume","metadata":{"name":"my-local-storage","labels":{"type":"local"}},"spec":{"storageClassName":"manual","capacity":{"storage":"1Gi"},"accessModes":["ReadWriteOnce"],"hostPath":{"path":"/mnt/data/datax","type":"Directory"}}}'
77
+ headers:
78
+ Accept:
79
+ - "*/*"
80
+ Accept-Encoding:
81
+ - gzip, deflate
82
+ User-Agent:
83
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
84
+ Content-Type:
85
+ - application/json
86
+ Authorization:
87
+ - Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Im15LWFjY291bnQtdG9rZW4ta3FsZDYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoibXktYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjJlYjVjZjU1LTFlNDUtMTFlOS1iYmZmLWZhMTYzZTM4OTEyYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0Om15LWFjY291bnQifQ.aAigSXFZapxJdFy3FwgSNc77jZYFiSTlG7D_AnHzBT1ZP69xLmrqI_oXt73NDLpecNWezjIvsCU6sLf45tfPY2RQX_aEAOXKWjFs2SxWI7GeQ-sWRt0yd1sOB9R48ipTdpNpNs5pypnTRg6dYLvtePmBWyOSN2412F9XKeM79tuO9a_ynPDjkCwsWJXGj-gX9DwpHdGK-cup0YosJ-9OpvXoWOiUNeBi1KrvJxgQwgLytJk3PHFnJHv4mCNALvvo1cu89_ENwUQrvok267ACeq53YsivYn7B0QWuZoX3ca4Bx14kEdXbd-9BvIEBZzVovH2ZvPTYMmyXgnpO7c1eOw
88
+ Content-Length:
89
+ - '265'
90
+ response:
91
+ status:
92
+ code: 201
93
+ message: Created
94
+ headers:
95
+ Cache-Control:
96
+ - no-store
97
+ Content-Type:
98
+ - application/json
99
+ Date:
100
+ - Tue, 22 Jan 2019 16:40:21 GMT
101
+ Content-Length:
102
+ - '577'
103
+ body:
104
+ encoding: UTF-8
105
+ string: '{"kind":"PersistentVolume","apiVersion":"v1","metadata":{"name":"my-local-storage","selfLink":"/api/v1/persistentvolumes/my-local-storage","uid":"68bc328f-1e64-11e9-bbff-fa163e38912a","resourceVersion":"56945","creationTimestamp":"2019-01-22T16:40:21Z","labels":{"type":"local"},"finalizers":["kubernetes.io/pv-protection"]},"spec":{"capacity":{"storage":"1Gi"},"hostPath":{"path":"/mnt/data/datax","type":"Directory"},"accessModes":["ReadWriteOnce"],"persistentVolumeReclaimPolicy":"Retain","storageClassName":"manual","volumeMode":"Filesystem"},"status":{"phase":"Pending"}}
106
+
107
+ '
108
+ http_version:
109
+ recorded_at: Tue, 22 Jan 2019 16:40:22 GMT
110
+ - request:
111
+ method: get
112
+ uri: https://10.8.254.82:8443/api
113
+ body:
114
+ encoding: US-ASCII
115
+ string: ''
116
+ headers:
117
+ Accept:
118
+ - "*/*"
119
+ Accept-Encoding:
120
+ - gzip, deflate
121
+ User-Agent:
122
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
123
+ response:
124
+ status:
125
+ code: 200
126
+ message: OK
127
+ headers:
128
+ Cache-Control:
129
+ - no-store
130
+ Content-Type:
131
+ - application/json
132
+ Date:
133
+ - Tue, 22 Jan 2019 16:40:21 GMT
134
+ Content-Length:
135
+ - '162'
136
+ body:
137
+ encoding: UTF-8
138
+ string: '{"kind":"APIVersions","versions":["v1"],"serverAddressByClientCIDRs":[{"clientCIDR":"0.0.0.0/0","serverAddress":"cnv-executor-vatsal-master1.example.com:8443"}]}
139
+
140
+ '
141
+ http_version:
142
+ recorded_at: Tue, 22 Jan 2019 16:40:22 GMT
143
+ - request:
144
+ method: get
145
+ uri: https://10.8.254.82:8443/api/v1/persistentvolumes/my-local-storage
146
+ body:
147
+ encoding: US-ASCII
148
+ string: ''
149
+ headers:
150
+ Accept:
151
+ - "*/*"
152
+ Accept-Encoding:
153
+ - gzip, deflate
154
+ User-Agent:
155
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
156
+ Authorization:
157
+ - Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Im15LWFjY291bnQtdG9rZW4ta3FsZDYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoibXktYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjJlYjVjZjU1LTFlNDUtMTFlOS1iYmZmLWZhMTYzZTM4OTEyYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0Om15LWFjY291bnQifQ.aAigSXFZapxJdFy3FwgSNc77jZYFiSTlG7D_AnHzBT1ZP69xLmrqI_oXt73NDLpecNWezjIvsCU6sLf45tfPY2RQX_aEAOXKWjFs2SxWI7GeQ-sWRt0yd1sOB9R48ipTdpNpNs5pypnTRg6dYLvtePmBWyOSN2412F9XKeM79tuO9a_ynPDjkCwsWJXGj-gX9DwpHdGK-cup0YosJ-9OpvXoWOiUNeBi1KrvJxgQwgLytJk3PHFnJHv4mCNALvvo1cu89_ENwUQrvok267ACeq53YsivYn7B0QWuZoX3ca4Bx14kEdXbd-9BvIEBZzVovH2ZvPTYMmyXgnpO7c1eOw
158
+ response:
159
+ status:
160
+ code: 200
161
+ message: OK
162
+ headers:
163
+ Cache-Control:
164
+ - no-store
165
+ Content-Type:
166
+ - application/json
167
+ Date:
168
+ - Tue, 22 Jan 2019 16:40:22 GMT
169
+ Content-Length:
170
+ - '579'
171
+ body:
172
+ encoding: UTF-8
173
+ string: '{"kind":"PersistentVolume","apiVersion":"v1","metadata":{"name":"my-local-storage","selfLink":"/api/v1/persistentvolumes/my-local-storage","uid":"68bc328f-1e64-11e9-bbff-fa163e38912a","resourceVersion":"56946","creationTimestamp":"2019-01-22T16:40:21Z","labels":{"type":"local"},"finalizers":["kubernetes.io/pv-protection"]},"spec":{"capacity":{"storage":"1Gi"},"hostPath":{"path":"/mnt/data/datax","type":"Directory"},"accessModes":["ReadWriteOnce"],"persistentVolumeReclaimPolicy":"Retain","storageClassName":"manual","volumeMode":"Filesystem"},"status":{"phase":"Available"}}
174
+
175
+ '
176
+ http_version:
177
+ recorded_at: Tue, 22 Jan 2019 16:40:23 GMT
178
+ - request:
179
+ method: get
180
+ uri: https://10.8.254.82:8443/api
181
+ body:
182
+ encoding: US-ASCII
183
+ string: ''
184
+ headers:
185
+ Accept:
186
+ - "*/*"
187
+ Accept-Encoding:
188
+ - gzip, deflate
189
+ User-Agent:
190
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
191
+ response:
192
+ status:
193
+ code: 200
194
+ message: OK
195
+ headers:
196
+ Cache-Control:
197
+ - no-store
198
+ Content-Type:
199
+ - application/json
200
+ Date:
201
+ - Tue, 22 Jan 2019 16:40:23 GMT
202
+ Content-Length:
203
+ - '162'
204
+ body:
205
+ encoding: UTF-8
206
+ string: '{"kind":"APIVersions","versions":["v1"],"serverAddressByClientCIDRs":[{"clientCIDR":"0.0.0.0/0","serverAddress":"cnv-executor-vatsal-master1.example.com:8443"}]}
207
+
208
+ '
209
+ http_version:
210
+ recorded_at: Tue, 22 Jan 2019 16:40:24 GMT
211
+ - request:
212
+ method: get
213
+ uri: https://10.8.254.82:8443/api/v1/persistentvolumes/my-local-storage
214
+ body:
215
+ encoding: US-ASCII
216
+ string: ''
217
+ headers:
218
+ Accept:
219
+ - "*/*"
220
+ Accept-Encoding:
221
+ - gzip, deflate
222
+ User-Agent:
223
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
224
+ Authorization:
225
+ - Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Im15LWFjY291bnQtdG9rZW4ta3FsZDYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoibXktYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjJlYjVjZjU1LTFlNDUtMTFlOS1iYmZmLWZhMTYzZTM4OTEyYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0Om15LWFjY291bnQifQ.aAigSXFZapxJdFy3FwgSNc77jZYFiSTlG7D_AnHzBT1ZP69xLmrqI_oXt73NDLpecNWezjIvsCU6sLf45tfPY2RQX_aEAOXKWjFs2SxWI7GeQ-sWRt0yd1sOB9R48ipTdpNpNs5pypnTRg6dYLvtePmBWyOSN2412F9XKeM79tuO9a_ynPDjkCwsWJXGj-gX9DwpHdGK-cup0YosJ-9OpvXoWOiUNeBi1KrvJxgQwgLytJk3PHFnJHv4mCNALvvo1cu89_ENwUQrvok267ACeq53YsivYn7B0QWuZoX3ca4Bx14kEdXbd-9BvIEBZzVovH2ZvPTYMmyXgnpO7c1eOw
226
+ response:
227
+ status:
228
+ code: 200
229
+ message: OK
230
+ headers:
231
+ Cache-Control:
232
+ - no-store
233
+ Content-Type:
234
+ - application/json
235
+ Date:
236
+ - Tue, 22 Jan 2019 16:40:23 GMT
237
+ Content-Length:
238
+ - '579'
239
+ body:
240
+ encoding: UTF-8
241
+ string: '{"kind":"PersistentVolume","apiVersion":"v1","metadata":{"name":"my-local-storage","selfLink":"/api/v1/persistentvolumes/my-local-storage","uid":"68bc328f-1e64-11e9-bbff-fa163e38912a","resourceVersion":"56946","creationTimestamp":"2019-01-22T16:40:21Z","labels":{"type":"local"},"finalizers":["kubernetes.io/pv-protection"]},"spec":{"capacity":{"storage":"1Gi"},"hostPath":{"path":"/mnt/data/datax","type":"Directory"},"accessModes":["ReadWriteOnce"],"persistentVolumeReclaimPolicy":"Retain","storageClassName":"manual","volumeMode":"Filesystem"},"status":{"phase":"Available"}}
242
+
243
+ '
244
+ http_version:
245
+ recorded_at: Tue, 22 Jan 2019 16:40:24 GMT
246
+ - request:
247
+ method: get
248
+ uri: https://10.8.254.82:8443/api
249
+ body:
250
+ encoding: US-ASCII
251
+ string: ''
252
+ headers:
253
+ Accept:
254
+ - "*/*"
255
+ Accept-Encoding:
256
+ - gzip, deflate
257
+ User-Agent:
258
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
259
+ response:
260
+ status:
261
+ code: 200
262
+ message: OK
263
+ headers:
264
+ Cache-Control:
265
+ - no-store
266
+ Content-Type:
267
+ - application/json
268
+ Date:
269
+ - Tue, 22 Jan 2019 16:40:24 GMT
270
+ Content-Length:
271
+ - '162'
272
+ body:
273
+ encoding: UTF-8
274
+ string: '{"kind":"APIVersions","versions":["v1"],"serverAddressByClientCIDRs":[{"clientCIDR":"0.0.0.0/0","serverAddress":"cnv-executor-vatsal-master1.example.com:8443"}]}
275
+
276
+ '
277
+ http_version:
278
+ recorded_at: Tue, 22 Jan 2019 16:40:25 GMT
279
+ - request:
280
+ method: delete
281
+ uri: https://10.8.254.82:8443/api/v1/persistentvolumes/my-local-storage
282
+ body:
283
+ encoding: US-ASCII
284
+ string: ''
285
+ headers:
286
+ Accept:
287
+ - "*/*"
288
+ Accept-Encoding:
289
+ - gzip, deflate
290
+ User-Agent:
291
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
292
+ Content-Type:
293
+ - application/json
294
+ Authorization:
295
+ - Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Im15LWFjY291bnQtdG9rZW4ta3FsZDYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoibXktYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjJlYjVjZjU1LTFlNDUtMTFlOS1iYmZmLWZhMTYzZTM4OTEyYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0Om15LWFjY291bnQifQ.aAigSXFZapxJdFy3FwgSNc77jZYFiSTlG7D_AnHzBT1ZP69xLmrqI_oXt73NDLpecNWezjIvsCU6sLf45tfPY2RQX_aEAOXKWjFs2SxWI7GeQ-sWRt0yd1sOB9R48ipTdpNpNs5pypnTRg6dYLvtePmBWyOSN2412F9XKeM79tuO9a_ynPDjkCwsWJXGj-gX9DwpHdGK-cup0YosJ-9OpvXoWOiUNeBi1KrvJxgQwgLytJk3PHFnJHv4mCNALvvo1cu89_ENwUQrvok267ACeq53YsivYn7B0QWuZoX3ca4Bx14kEdXbd-9BvIEBZzVovH2ZvPTYMmyXgnpO7c1eOw
296
+ response:
297
+ status:
298
+ code: 200
299
+ message: OK
300
+ headers:
301
+ Cache-Control:
302
+ - no-store
303
+ Content-Type:
304
+ - application/json
305
+ Date:
306
+ - Tue, 22 Jan 2019 16:40:25 GMT
307
+ Content-Length:
308
+ - '653'
309
+ body:
310
+ encoding: UTF-8
311
+ string: '{"kind":"PersistentVolume","apiVersion":"v1","metadata":{"name":"my-local-storage","selfLink":"/api/v1/persistentvolumes/my-local-storage","uid":"68bc328f-1e64-11e9-bbff-fa163e38912a","resourceVersion":"56956","creationTimestamp":"2019-01-22T16:40:21Z","deletionTimestamp":"2019-01-22T16:40:25Z","deletionGracePeriodSeconds":0,"labels":{"type":"local"},"finalizers":["kubernetes.io/pv-protection"]},"spec":{"capacity":{"storage":"1Gi"},"hostPath":{"path":"/mnt/data/datax","type":"Directory"},"accessModes":["ReadWriteOnce"],"persistentVolumeReclaimPolicy":"Retain","storageClassName":"manual","volumeMode":"Filesystem"},"status":{"phase":"Available"}}
312
+
313
+ '
314
+ http_version:
315
+ recorded_at: Tue, 22 Jan 2019 16:40:26 GMT
316
+ recorded_with: VCR 4.0.0
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+ require_relative './shared_context'
3
+
4
+ require 'fog/kubevirt/compute/compute'
5
+
6
+ describe Fog::Kubevirt::Compute do
7
+ before :all do
8
+ vcr = KubevirtVCR.new(
9
+ vcr_directory: 'spec/fixtures/kubevirt/networkattachmentdefinition',
10
+ service_class: Fog::Kubevirt::Compute
11
+ )
12
+ @service = vcr.service
13
+ end
14
+
15
+ it 'CRUD services' do
16
+ VCR.use_cassette('networkattachmentdefinitions_crud') do
17
+ begin
18
+ name = 'ovs-red'
19
+ config = '{ cni_version: "0.3.1", type: "ovs", bridge: "red" }'
20
+ @service.networkattachmentdefs.create(name: name, config: config)
21
+
22
+ net_att_def = @service.networkattachmentdefs.get(name)
23
+ ensure
24
+ @service.networkattachmentdefs.delete(name) if net_att_def
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+ require_relative './shared_context'
3
+
4
+ require 'fog/kubevirt/compute/compute'
5
+
6
+ describe Fog::Kubevirt::Compute do
7
+ before :all do
8
+ vcr = KubevirtVCR.new(
9
+ vcr_directory: 'spec/fixtures/kubevirt/pvc',
10
+ service_class: Fog::Kubevirt::Compute
11
+ )
12
+ @service = vcr.service
13
+ end
14
+
15
+ it 'CRUD services' do
16
+ VCR.use_cassette('pvcs_crud') do
17
+ begin
18
+ name = 'my-local-storage-pvc'
19
+ namespace = 'default'
20
+ access_modes = [ 'ReadWriteOnce' ]
21
+ volume_name = 'my-local-storage'
22
+ volume_mode = 'Filesystem'
23
+ match_labels = {}
24
+ match_expressions = []
25
+ storage_class = 'manual'
26
+ requests = { storage: "2Gi" }
27
+ limits = { storage: "3Gi" }
28
+
29
+ @service.pvcs.create(name: name,
30
+ namespace: namespace,
31
+ access_modes: access_modes,
32
+ volume_name: volume_name,
33
+ volume_mode: volume_mode,
34
+ match_labels: match_labels,
35
+ match_expressions: match_expressions,
36
+ storage_class: storage_class,
37
+ limits: limits,
38
+ requests: requests)
39
+
40
+ pvc = @service.pvcs.get(name)
41
+ assert_equal(pvc.name, 'my-local-storage-pvc')
42
+ assert_equal(pvc.access_modes, [ 'ReadWriteOnce' ])
43
+ assert_equal(pvc.storage_class, 'manual')
44
+ assert_equal(pvc.volume_name, 'my-local-storage')
45
+ assert_equal(pvc.requests[:storage], '2Gi')
46
+ assert_equal(pvc.limits[:storage], '3Gi')
47
+ ensure
48
+ @service.pvcs.delete(name) if pvc
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,53 @@
1
+ require 'vcr'
2
+
3
+ class KubevirtVCR
4
+ attr_reader :service,
5
+ :host,
6
+ :port,
7
+ :token
8
+
9
+ def initialize(options)
10
+ @vcr_directory = options[:vcr_directory]
11
+ @service_class = options[:service_class]
12
+
13
+ use_recorded = !ENV.key?('KUBE_HOST') || ENV['USE_VCR'] == 'true'
14
+ if use_recorded
15
+ Fog.interval = 0
16
+ @host = "10.8.254.82"
17
+ @port = "8443"
18
+ else
19
+ @host = ENV['KUBE_HOST']
20
+ @port = ENV['KUBE_PORT']
21
+ end
22
+
23
+ VCR.configure do |config|
24
+ config.allow_http_connections_when_no_cassette = true
25
+ config.hook_into :webmock
26
+
27
+ if use_recorded
28
+ config.cassette_library_dir = ENV['SPEC_PATH'] || @vcr_directory
29
+ config.default_cassette_options = {:record => :none}
30
+ config.default_cassette_options.merge! :match_requests_on => %i[method uri body]
31
+ else
32
+ config.cassette_library_dir = "spec/debug"
33
+ config.default_cassette_options = {:record => :all}
34
+ end
35
+ end
36
+
37
+ VCR.use_cassette('common_setup') do
38
+ @token = "eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Im15LWFjY291bnQtdG9rZW4ta3FsZDYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoibXktYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjJlYjVjZjU1LTFlNDUtMTFlOS1iYmZmLWZhMTYzZTM4OTEyYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0Om15LWFjY291bnQifQ.aAigSXFZapxJdFy3FwgSNc77jZYFiSTlG7D_AnHzBT1ZP69xLmrqI_oXt73NDLpecNWezjIvsCU6sLf45tfPY2RQX_aEAOXKWjFs2SxWI7GeQ-sWRt0yd1sOB9R48ipTdpNpNs5pypnTRg6dYLvtePmBWyOSN2412F9XKeM79tuO9a_ynPDjkCwsWJXGj-gX9DwpHdGK-cup0YosJ-9OpvXoWOiUNeBi1KrvJxgQwgLytJk3PHFnJHv4mCNALvvo1cu89_ENwUQrvok267ACeq53YsivYn7B0QWuZoX3ca4Bx14kEdXbd-9BvIEBZzVovH2ZvPTYMmyXgnpO7c1eOw"
39
+
40
+ unless use_recorded
41
+ @token = ENV['KUBE_TOKEN'] || options[:token] || @token
42
+ end
43
+
44
+ connection_params = {
45
+ kubevirt_hostname: @host,
46
+ kubevirt_port: @port,
47
+ kubevirt_token: @token
48
+ }
49
+
50
+ @service = @service_class.new(connection_params)
51
+ end
52
+ end
53
+ end