fog-kubevirt 1.0.1 → 1.0.2

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 (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,16 @@
1
+ module Fog
2
+ module Kubevirt
3
+ class Compute
4
+ class Real
5
+ def get_pvc(name)
6
+ Pvc.parse object_to_hash(kube_client.get_persistent_volume_claim(name, @namespace))
7
+ end
8
+ end
9
+
10
+ class Mock
11
+ def get_pvc(name)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,32 @@
1
+ module Fog
2
+ module Kubevirt
3
+ class Compute
4
+ class Real
5
+ def get_server(name)
6
+ vm = get_raw_vm(name)
7
+ populate_runtime_info(vm)
8
+ Server.parse vm
9
+ end
10
+
11
+ # Updates a given VM raw entity with vm instance info if exists
12
+ #
13
+ # @param vm [Hash] A hash with vm raw data.
14
+ def populate_runtime_info(vm)
15
+ vmi = get_vminstance(vm[:metadata][:name])
16
+ vm[:ip_address] = vmi[:ip_address]
17
+ vm[:node_name] = vmi[:node_name]
18
+ vm[:phase] = vmi[:status]
19
+ vm
20
+ rescue
21
+ # do nothing if vmi doesn't exist
22
+ end
23
+ end
24
+
25
+ class Mock
26
+ # TODO provide implementation
27
+ def get_server(name)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,16 @@
1
+ module Fog
2
+ module Kubevirt
3
+ class Compute
4
+ class Real
5
+ def get_service(name)
6
+ Service.parse object_to_hash(kube_client.get_service(name, @namespace))
7
+ end
8
+ end
9
+
10
+ class Mock
11
+ def get_service(name)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -7,7 +7,7 @@ module Fog
7
7
  end
8
8
 
9
9
  def get_raw_vm(name)
10
- object_to_hash( kubevirt_client.get_virtual_machine(name, @namespace) )
10
+ object_to_hash(kubevirt_client.get_virtual_machine(name, @namespace))
11
11
  end
12
12
  end
13
13
 
@@ -30,8 +30,8 @@ module Fog
30
30
  },
31
31
  :spec => { :domain => { :cpu => { :cores => "4" },
32
32
  :devices => { :disks => [{ :disk => { :dev => "vda" },
33
- :name => "registrydisk",
34
- :volumeName => "registryvolume"
33
+ :name => "containerDisk",
34
+ :volumeName => "containervolume"
35
35
  },
36
36
  { :disk => { :dev => "vdb" },
37
37
  :name => "cloudinitdisk",
@@ -42,8 +42,8 @@ module Fog
42
42
  :machine => { :type => "q35" },
43
43
  :resources => { :requests => { :memory => "512Mi" }}
44
44
  },
45
- :volumes => [ { :name => "registryvolume",
46
- :registryDisk => { :image => "kubevirt/fedora-cloud-registry-disk-demo:latest" }
45
+ :volumes => [ { :name => "containervolume",
46
+ :containerDisk => { :image => "kubevirt/fedora-cloud-registry-disk-demo:latest" }
47
47
  },
48
48
  { :cloudInitNoCloud => { :userDataBase64 => "I2Nsb3VkLWNvbmZpZwpwYXNzd29yZDogYXRvbWljCnNzaF9wd2F1dGg6IFRydWUKY2hwYXNzd2Q6IHsgZXhwaXJlOiBGYWxzZSB9Cg==" },
49
49
  :name => "cloudinitvolume"
@@ -0,0 +1,16 @@
1
+ module Fog
2
+ module Kubevirt
3
+ class Compute
4
+ class Real
5
+ def get_volume(name)
6
+ Volume.parse object_to_hash(kube_client.get_persistent_volume(name))
7
+ end
8
+ end
9
+
10
+ class Mock
11
+ def get_volume(name)
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,21 @@
1
+ module Fog
2
+ module Kubevirt
3
+ class Compute
4
+ class Real
5
+ def list_networkattachmentdefs(_filters = {})
6
+ netdefs = kube_net_client.get_network_attachment_definitions
7
+ entities = netdefs.map do |kubevirt_obj|
8
+ Networkattachmentdef.parse object_to_hash(kubevirt_obj)
9
+ end
10
+ EntityCollection.new(netdefs.kind, netdefs.resourceVersion, entities)
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ # TODO provide implementation
16
+ def list_networkattachmentdefs(_filters = {})
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ require 'recursive_open_struct'
2
+
3
+ module Fog
4
+ module Kubevirt
5
+ class Compute
6
+ class Real
7
+ def list_pvcs(_filters = {})
8
+ pvcs = kube_client.get_persistent_volume_claims(namespace: @namespace)
9
+ entities = pvcs.map do |kubevirt_obj|
10
+ Pvc.parse object_to_hash(kubevirt_obj)
11
+ end
12
+ EntityCollection.new(pvcs.kind, pvcs.resourceVersion, entities)
13
+ end
14
+ end
15
+
16
+ class Mock
17
+ def list_pvcs(_filters = {})
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,25 @@
1
+ require 'recursive_open_struct'
2
+ require 'fog/kubevirt/compute/requests/get_server'
3
+
4
+ module Fog
5
+ module Kubevirt
6
+ class Compute
7
+ class Real
8
+ def list_servers(_filters = {})
9
+ vms = kubevirt_client.get_virtual_machines(namespace: @namespace)
10
+ entities = vms.map do |kubevirt_obj|
11
+ vm_obj = object_to_hash(kubevirt_obj)
12
+ populate_runtime_info(vm_obj)
13
+ Server.parse vm_obj
14
+ end
15
+ EntityCollection.new(vms.kind, vms.resourceVersion, entities)
16
+ end
17
+ end
18
+
19
+ class Mock
20
+ def list_servers(_filters = {})
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,22 @@
1
+ require 'recursive_open_struct'
2
+
3
+ module Fog
4
+ module Kubevirt
5
+ class Compute
6
+ class Real
7
+ def list_services(_filters = {})
8
+ services = kube_client.get_services(namespace: @namespace)
9
+ entities = services.map do |kubevirt_obj|
10
+ Service.parse object_to_hash(kubevirt_obj)
11
+ end
12
+ EntityCollection.new(services.kind, services.resourceVersion, entities)
13
+ end
14
+ end
15
+
16
+ class Mock
17
+ def list_services(_filters = {})
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -30,16 +30,16 @@ module Fog
30
30
  template: {
31
31
  spec: { domain: { cpu: { cores: 4 },
32
32
  devices: { disks: [{ disk: { dev: 'vda' },
33
- name: 'registrydisk',
34
- volumeName: 'registryvolume' },
33
+ name: 'containerDisk',
34
+ volumeName: 'containervolume' },
35
35
  { disk: { dev: 'vdb' },
36
36
  name: 'cloudinitdisk',
37
37
  volumeName: 'cloudinitvolume' }] },
38
38
  machine: { type: 'q35' },
39
39
  resources: { requests: { memory: '512Mi' } } },
40
40
  volumes: [
41
- { name: 'registryvolume',
42
- registryDisk: { image: 'kubevirt/fedora-cloud-registry-disk-demo:latest' }
41
+ { name: 'containervolume',
42
+ containerDisk: { image: 'kubevirt/fedora-cloud-registry-disk-demo:latest' }
43
43
  },
44
44
  { cloudInitNoCloud: { userDataBase64: 'I2Nsb3VkLWNvbmZpZwpwYXNzd29yZDogYXRvbWljCnNzaF9wd2F1dGg6IFRydWUKY2hwYXNzd2Q6IHsgZXhwaXJlOiBGYWxzZSB9Cg==' },
45
45
  name: 'cloudinitvolume' }]
@@ -0,0 +1,22 @@
1
+ require 'recursive_open_struct'
2
+
3
+ module Fog
4
+ module Kubevirt
5
+ class Compute
6
+ class Real
7
+ def list_volumes(_filters = {})
8
+ volumes = kube_client.get_persistent_volumes()
9
+ entities = volumes.map do |kubevirt_obj|
10
+ Volume.parse object_to_hash(kubevirt_obj)
11
+ end
12
+ EntityCollection.new(volumes.kind, volumes.resourceVersion, entities)
13
+ end
14
+ end
15
+
16
+ class Mock
17
+ def list_volumes(_filters = {})
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Kubevirt
3
- VERSION = '1.0.1'
3
+ VERSION = '1.0.2'
4
4
  end
5
5
  end
@@ -0,0 +1,30 @@
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/service',
10
+ :service_class => Fog::Kubevirt::Compute
11
+ )
12
+ @service = vcr.service
13
+ end
14
+
15
+ it 'CRUD services' do
16
+ VCR.use_cassette('services_crud') do
17
+ begin
18
+ port = 30000
19
+ vmi_name = "vmi-fedora"
20
+ srv_name = "#{vmi_name}-ssh"
21
+ srv_type = "NodePort"
22
+ @service.services.create(port: port, name: srv_name, target_port: 22, vmi_name: vmi_name, service_type: srv_type)
23
+
24
+ srv = @service.services.get(srv_name)
25
+ ensure
26
+ @service.services.delete(srv_name) if srv
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,320 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://10.8.254.82:8443/apis/k8s.cni.cncf.io
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:25 GMT
27
+ Content-Length:
28
+ - '201'
29
+ body:
30
+ encoding: UTF-8
31
+ string: '{"kind":"APIGroup","apiVersion":"v1","name":"k8s.cni.cncf.io","versions":[{"groupVersion":"k8s.cni.cncf.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"k8s.cni.cncf.io/v1","version":"v1"}}
32
+
33
+ '
34
+ http_version:
35
+ recorded_at: Tue, 22 Jan 2019 16:40:26 GMT
36
+ - request:
37
+ method: get
38
+ uri: https://10.8.254.82:8443/apis/k8s.cni.cncf.io/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:26 GMT
62
+ Content-Length:
63
+ - '356'
64
+ body:
65
+ encoding: UTF-8
66
+ string: '{"kind":"APIResourceList","apiVersion":"v1","groupVersion":"k8s.cni.cncf.io/v1","resources":[{"name":"network-attachment-definitions","singularName":"network-attachment-definition","namespaced":true,"kind":"NetworkAttachmentDefinition","verbs":["delete","deletecollection","get","list","patch","create","update","watch"],"shortNames":["net-attach-def"]}]}
67
+
68
+ '
69
+ http_version:
70
+ recorded_at: Tue, 22 Jan 2019 16:40:27 GMT
71
+ - request:
72
+ method: post
73
+ uri: https://10.8.254.82:8443/apis/k8s.cni.cncf.io/v1/namespaces/default/network-attachment-definitions
74
+ body:
75
+ encoding: UTF-8
76
+ string: '{"metadata":{"name":"ovs-red","namespace":"default"},"spec":{"config":"{
77
+ cni_version: \"0.3.1\", type: \"ovs\", bridge: \"red\" }"},"kind":"NetworkAttachmentDefinition","apiVersion":"k8s.cni.cncf.io/v1"}'
78
+ headers:
79
+ Accept:
80
+ - "*/*"
81
+ Accept-Encoding:
82
+ - gzip, deflate
83
+ User-Agent:
84
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
85
+ Content-Type:
86
+ - application/json
87
+ Authorization:
88
+ - Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Im15LWFjY291bnQtdG9rZW4ta3FsZDYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoibXktYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjJlYjVjZjU1LTFlNDUtMTFlOS1iYmZmLWZhMTYzZTM4OTEyYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0Om15LWFjY291bnQifQ.aAigSXFZapxJdFy3FwgSNc77jZYFiSTlG7D_AnHzBT1ZP69xLmrqI_oXt73NDLpecNWezjIvsCU6sLf45tfPY2RQX_aEAOXKWjFs2SxWI7GeQ-sWRt0yd1sOB9R48ipTdpNpNs5pypnTRg6dYLvtePmBWyOSN2412F9XKeM79tuO9a_ynPDjkCwsWJXGj-gX9DwpHdGK-cup0YosJ-9OpvXoWOiUNeBi1KrvJxgQwgLytJk3PHFnJHv4mCNALvvo1cu89_ENwUQrvok267ACeq53YsivYn7B0QWuZoX3ca4Bx14kEdXbd-9BvIEBZzVovH2ZvPTYMmyXgnpO7c1eOw
89
+ Content-Length:
90
+ - '203'
91
+ response:
92
+ status:
93
+ code: 201
94
+ message: Created
95
+ headers:
96
+ Cache-Control:
97
+ - no-store
98
+ Content-Type:
99
+ - application/json
100
+ Date:
101
+ - Tue, 22 Jan 2019 16:40:27 GMT
102
+ Content-Length:
103
+ - '429'
104
+ body:
105
+ encoding: UTF-8
106
+ string: '{"apiVersion":"k8s.cni.cncf.io/v1","kind":"NetworkAttachmentDefinition","metadata":{"creationTimestamp":"2019-01-22T16:40:27Z","generation":1,"name":"ovs-red","namespace":"default","resourceVersion":"56968","selfLink":"/apis/k8s.cni.cncf.io/v1/namespaces/default/network-attachment-definitions/ovs-red","uid":"6c41a2d7-1e64-11e9-bbff-fa163e38912a"},"spec":{"config":"{
107
+ cni_version: \"0.3.1\", type: \"ovs\", bridge: \"red\" }"}}
108
+
109
+ '
110
+ http_version:
111
+ recorded_at: Tue, 22 Jan 2019 16:40:28 GMT
112
+ - request:
113
+ method: get
114
+ uri: https://10.8.254.82:8443/apis/k8s.cni.cncf.io
115
+ body:
116
+ encoding: US-ASCII
117
+ string: ''
118
+ headers:
119
+ Accept:
120
+ - "*/*"
121
+ Accept-Encoding:
122
+ - gzip, deflate
123
+ User-Agent:
124
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
125
+ response:
126
+ status:
127
+ code: 200
128
+ message: OK
129
+ headers:
130
+ Cache-Control:
131
+ - no-store
132
+ Content-Type:
133
+ - application/json
134
+ Date:
135
+ - Tue, 22 Jan 2019 16:40:27 GMT
136
+ Content-Length:
137
+ - '201'
138
+ body:
139
+ encoding: UTF-8
140
+ string: '{"kind":"APIGroup","apiVersion":"v1","name":"k8s.cni.cncf.io","versions":[{"groupVersion":"k8s.cni.cncf.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"k8s.cni.cncf.io/v1","version":"v1"}}
141
+
142
+ '
143
+ http_version:
144
+ recorded_at: Tue, 22 Jan 2019 16:40:28 GMT
145
+ - request:
146
+ method: get
147
+ uri: https://10.8.254.82:8443/apis/k8s.cni.cncf.io/v1/namespaces/default/network-attachment-definitions/ovs-red
148
+ body:
149
+ encoding: US-ASCII
150
+ string: ''
151
+ headers:
152
+ Accept:
153
+ - "*/*"
154
+ Accept-Encoding:
155
+ - gzip, deflate
156
+ User-Agent:
157
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
158
+ Authorization:
159
+ - Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Im15LWFjY291bnQtdG9rZW4ta3FsZDYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoibXktYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjJlYjVjZjU1LTFlNDUtMTFlOS1iYmZmLWZhMTYzZTM4OTEyYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0Om15LWFjY291bnQifQ.aAigSXFZapxJdFy3FwgSNc77jZYFiSTlG7D_AnHzBT1ZP69xLmrqI_oXt73NDLpecNWezjIvsCU6sLf45tfPY2RQX_aEAOXKWjFs2SxWI7GeQ-sWRt0yd1sOB9R48ipTdpNpNs5pypnTRg6dYLvtePmBWyOSN2412F9XKeM79tuO9a_ynPDjkCwsWJXGj-gX9DwpHdGK-cup0YosJ-9OpvXoWOiUNeBi1KrvJxgQwgLytJk3PHFnJHv4mCNALvvo1cu89_ENwUQrvok267ACeq53YsivYn7B0QWuZoX3ca4Bx14kEdXbd-9BvIEBZzVovH2ZvPTYMmyXgnpO7c1eOw
160
+ response:
161
+ status:
162
+ code: 200
163
+ message: OK
164
+ headers:
165
+ Cache-Control:
166
+ - no-store
167
+ Content-Type:
168
+ - application/json
169
+ Date:
170
+ - Tue, 22 Jan 2019 16:40:28 GMT
171
+ Content-Length:
172
+ - '429'
173
+ body:
174
+ encoding: UTF-8
175
+ string: '{"apiVersion":"k8s.cni.cncf.io/v1","kind":"NetworkAttachmentDefinition","metadata":{"creationTimestamp":"2019-01-22T16:40:27Z","generation":1,"name":"ovs-red","namespace":"default","resourceVersion":"56968","selfLink":"/apis/k8s.cni.cncf.io/v1/namespaces/default/network-attachment-definitions/ovs-red","uid":"6c41a2d7-1e64-11e9-bbff-fa163e38912a"},"spec":{"config":"{
176
+ cni_version: \"0.3.1\", type: \"ovs\", bridge: \"red\" }"}}
177
+
178
+ '
179
+ http_version:
180
+ recorded_at: Tue, 22 Jan 2019 16:40:29 GMT
181
+ - request:
182
+ method: get
183
+ uri: https://10.8.254.82:8443/apis/k8s.cni.cncf.io
184
+ body:
185
+ encoding: US-ASCII
186
+ string: ''
187
+ headers:
188
+ Accept:
189
+ - "*/*"
190
+ Accept-Encoding:
191
+ - gzip, deflate
192
+ User-Agent:
193
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
194
+ response:
195
+ status:
196
+ code: 200
197
+ message: OK
198
+ headers:
199
+ Cache-Control:
200
+ - no-store
201
+ Content-Type:
202
+ - application/json
203
+ Date:
204
+ - Tue, 22 Jan 2019 16:40:29 GMT
205
+ Content-Length:
206
+ - '201'
207
+ body:
208
+ encoding: UTF-8
209
+ string: '{"kind":"APIGroup","apiVersion":"v1","name":"k8s.cni.cncf.io","versions":[{"groupVersion":"k8s.cni.cncf.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"k8s.cni.cncf.io/v1","version":"v1"}}
210
+
211
+ '
212
+ http_version:
213
+ recorded_at: Tue, 22 Jan 2019 16:40:30 GMT
214
+ - request:
215
+ method: get
216
+ uri: https://10.8.254.82:8443/apis/k8s.cni.cncf.io/v1/namespaces/default/network-attachment-definitions/ovs-red
217
+ body:
218
+ encoding: US-ASCII
219
+ string: ''
220
+ headers:
221
+ Accept:
222
+ - "*/*"
223
+ Accept-Encoding:
224
+ - gzip, deflate
225
+ User-Agent:
226
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
227
+ Authorization:
228
+ - Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Im15LWFjY291bnQtdG9rZW4ta3FsZDYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoibXktYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjJlYjVjZjU1LTFlNDUtMTFlOS1iYmZmLWZhMTYzZTM4OTEyYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0Om15LWFjY291bnQifQ.aAigSXFZapxJdFy3FwgSNc77jZYFiSTlG7D_AnHzBT1ZP69xLmrqI_oXt73NDLpecNWezjIvsCU6sLf45tfPY2RQX_aEAOXKWjFs2SxWI7GeQ-sWRt0yd1sOB9R48ipTdpNpNs5pypnTRg6dYLvtePmBWyOSN2412F9XKeM79tuO9a_ynPDjkCwsWJXGj-gX9DwpHdGK-cup0YosJ-9OpvXoWOiUNeBi1KrvJxgQwgLytJk3PHFnJHv4mCNALvvo1cu89_ENwUQrvok267ACeq53YsivYn7B0QWuZoX3ca4Bx14kEdXbd-9BvIEBZzVovH2ZvPTYMmyXgnpO7c1eOw
229
+ response:
230
+ status:
231
+ code: 200
232
+ message: OK
233
+ headers:
234
+ Cache-Control:
235
+ - no-store
236
+ Content-Type:
237
+ - application/json
238
+ Date:
239
+ - Tue, 22 Jan 2019 16:40:29 GMT
240
+ Content-Length:
241
+ - '429'
242
+ body:
243
+ encoding: UTF-8
244
+ string: '{"apiVersion":"k8s.cni.cncf.io/v1","kind":"NetworkAttachmentDefinition","metadata":{"creationTimestamp":"2019-01-22T16:40:27Z","generation":1,"name":"ovs-red","namespace":"default","resourceVersion":"56968","selfLink":"/apis/k8s.cni.cncf.io/v1/namespaces/default/network-attachment-definitions/ovs-red","uid":"6c41a2d7-1e64-11e9-bbff-fa163e38912a"},"spec":{"config":"{
245
+ cni_version: \"0.3.1\", type: \"ovs\", bridge: \"red\" }"}}
246
+
247
+ '
248
+ http_version:
249
+ recorded_at: Tue, 22 Jan 2019 16:40:30 GMT
250
+ - request:
251
+ method: get
252
+ uri: https://10.8.254.82:8443/apis/k8s.cni.cncf.io
253
+ body:
254
+ encoding: US-ASCII
255
+ string: ''
256
+ headers:
257
+ Accept:
258
+ - "*/*"
259
+ Accept-Encoding:
260
+ - gzip, deflate
261
+ User-Agent:
262
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
263
+ response:
264
+ status:
265
+ code: 200
266
+ message: OK
267
+ headers:
268
+ Cache-Control:
269
+ - no-store
270
+ Content-Type:
271
+ - application/json
272
+ Date:
273
+ - Tue, 22 Jan 2019 16:40:30 GMT
274
+ Content-Length:
275
+ - '201'
276
+ body:
277
+ encoding: UTF-8
278
+ string: '{"kind":"APIGroup","apiVersion":"v1","name":"k8s.cni.cncf.io","versions":[{"groupVersion":"k8s.cni.cncf.io/v1","version":"v1"}],"preferredVersion":{"groupVersion":"k8s.cni.cncf.io/v1","version":"v1"}}
279
+
280
+ '
281
+ http_version:
282
+ recorded_at: Tue, 22 Jan 2019 16:40:31 GMT
283
+ - request:
284
+ method: delete
285
+ uri: https://10.8.254.82:8443/apis/k8s.cni.cncf.io/v1/namespaces/default/network-attachment-definitions/ovs-red
286
+ body:
287
+ encoding: US-ASCII
288
+ string: ''
289
+ headers:
290
+ Accept:
291
+ - "*/*"
292
+ Accept-Encoding:
293
+ - gzip, deflate
294
+ User-Agent:
295
+ - rest-client/2.0.2 (linux-gnu x86_64) ruby/2.5.3p105
296
+ Content-Type:
297
+ - application/json
298
+ Authorization:
299
+ - Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Im15LWFjY291bnQtdG9rZW4ta3FsZDYiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoibXktYWNjb3VudCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjJlYjVjZjU1LTFlNDUtMTFlOS1iYmZmLWZhMTYzZTM4OTEyYSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0Om15LWFjY291bnQifQ.aAigSXFZapxJdFy3FwgSNc77jZYFiSTlG7D_AnHzBT1ZP69xLmrqI_oXt73NDLpecNWezjIvsCU6sLf45tfPY2RQX_aEAOXKWjFs2SxWI7GeQ-sWRt0yd1sOB9R48ipTdpNpNs5pypnTRg6dYLvtePmBWyOSN2412F9XKeM79tuO9a_ynPDjkCwsWJXGj-gX9DwpHdGK-cup0YosJ-9OpvXoWOiUNeBi1KrvJxgQwgLytJk3PHFnJHv4mCNALvvo1cu89_ENwUQrvok267ACeq53YsivYn7B0QWuZoX3ca4Bx14kEdXbd-9BvIEBZzVovH2ZvPTYMmyXgnpO7c1eOw
300
+ response:
301
+ status:
302
+ code: 200
303
+ message: OK
304
+ headers:
305
+ Cache-Control:
306
+ - no-store
307
+ Content-Type:
308
+ - application/json
309
+ Date:
310
+ - Tue, 22 Jan 2019 16:40:30 GMT
311
+ Content-Length:
312
+ - '209'
313
+ body:
314
+ encoding: UTF-8
315
+ string: '{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Success","details":{"name":"ovs-red","group":"k8s.cni.cncf.io","kind":"network-attachment-definitions","uid":"6c41a2d7-1e64-11e9-bbff-fa163e38912a"}}
316
+
317
+ '
318
+ http_version:
319
+ recorded_at: Tue, 22 Jan 2019 16:40:31 GMT
320
+ recorded_with: VCR 4.0.0