kubeclient 0.3.0 → 4.9.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of kubeclient might be problematic. Click here for more details.

Files changed (63) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/actions.yml +35 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +29 -0
  5. data/CHANGELOG.md +208 -0
  6. data/Gemfile +3 -0
  7. data/README.md +706 -57
  8. data/RELEASING.md +69 -0
  9. data/Rakefile +3 -5
  10. data/kubeclient.gemspec +19 -11
  11. data/lib/kubeclient/aws_eks_credentials.rb +46 -0
  12. data/lib/kubeclient/common.rb +597 -161
  13. data/lib/kubeclient/config.rb +195 -0
  14. data/lib/kubeclient/entity_list.rb +7 -2
  15. data/lib/kubeclient/exec_credentials.rb +89 -0
  16. data/lib/kubeclient/gcp_auth_provider.rb +19 -0
  17. data/lib/kubeclient/gcp_command_credentials.rb +31 -0
  18. data/lib/kubeclient/google_application_default_credentials.rb +31 -0
  19. data/lib/kubeclient/http_error.rb +25 -0
  20. data/lib/kubeclient/missing_kind_compatibility.rb +68 -0
  21. data/lib/kubeclient/oidc_auth_provider.rb +52 -0
  22. data/lib/kubeclient/resource.rb +11 -0
  23. data/lib/kubeclient/resource_not_found_error.rb +4 -0
  24. data/lib/kubeclient/version.rb +1 -1
  25. data/lib/kubeclient/watch_stream.rb +71 -28
  26. data/lib/kubeclient.rb +25 -82
  27. metadata +140 -114
  28. data/.travis.yml +0 -6
  29. data/lib/kubeclient/kube_exception.rb +0 -13
  30. data/lib/kubeclient/watch_notice.rb +0 -7
  31. data/test/json/created_namespace_b3.json +0 -20
  32. data/test/json/created_secret.json +0 -16
  33. data/test/json/created_service_b3.json +0 -31
  34. data/test/json/empty_pod_list_b3.json +0 -9
  35. data/test/json/endpoint_list_b3.json +0 -48
  36. data/test/json/entity_list_b3.json +0 -56
  37. data/test/json/event_list_b3.json +0 -35
  38. data/test/json/namespace_b3.json +0 -13
  39. data/test/json/namespace_exception_b3.json +0 -8
  40. data/test/json/namespace_list_b3.json +0 -32
  41. data/test/json/node_b3.json +0 -29
  42. data/test/json/node_list_b3.json +0 -37
  43. data/test/json/pod_b3.json +0 -92
  44. data/test/json/pod_list_b3.json +0 -75
  45. data/test/json/replication_controller_b3.json +0 -57
  46. data/test/json/replication_controller_list_b3.json +0 -64
  47. data/test/json/secret_list_b3.json +0 -44
  48. data/test/json/service_b3.json +0 -33
  49. data/test/json/service_illegal_json_404.json +0 -1
  50. data/test/json/service_list_b3.json +0 -97
  51. data/test/json/service_update_b3.json +0 -22
  52. data/test/json/versions_list.json +0 -6
  53. data/test/json/watch_stream_b3.json +0 -3
  54. data/test/test_helper.rb +0 -4
  55. data/test/test_kubeclient.rb +0 -407
  56. data/test/test_namespace.rb +0 -53
  57. data/test/test_node.rb +0 -25
  58. data/test/test_pod.rb +0 -21
  59. data/test/test_replication_controller.rb +0 -24
  60. data/test/test_secret.rb +0 -58
  61. data/test/test_service.rb +0 -136
  62. data/test/test_watch.rb +0 -37
  63. data/test/valid_token_file +0 -1
@@ -1,16 +0,0 @@
1
- {
2
- "kind": "Secret",
3
- "apiVersion": "v1",
4
- "metadata": {
5
- "name": "test-secret",
6
- "namespace": "dev",
7
- "selfLink": "/api/v1/namespaces/dev/secrets/test-secret",
8
- "uid": "4e38a198-2bcb-11e5-a483-0e840567604d",
9
- "resourceVersion": "245569",
10
- "creationTimestamp": "2015-07-16T14:59:49Z"
11
- },
12
- "data": {
13
- "super-secret": "Y2F0J3MgYXJlIGF3ZXNvbWUK"
14
- },
15
- "type": "Opaque"
16
- }
@@ -1,31 +0,0 @@
1
- {
2
- "kind": "Service",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "name": "guestbook",
6
- "namespace": "staging",
7
- "selfLink": "/api/v1beta3/namespaces/staging/services/guestbook",
8
- "uid": "29885239-df58-11e4-bd42-f8b156af4ae1",
9
- "resourceVersion": "1908",
10
- "creationTimestamp": "2015-04-10T08:04:07Z",
11
- "labels": {
12
- "name": "guestbook"
13
- }
14
- },
15
- "spec": {
16
- "ports": [
17
- {
18
- "name": "",
19
- "protocol": "TCP",
20
- "port": 3000,
21
- "targetPort": "http-server"
22
- }
23
- ],
24
- "selector": {
25
- "name": "guestbook"
26
- },
27
- "portalIP": "10.0.0.99",
28
- "sessionAffinity": "None"
29
- },
30
- "status": {}
31
- }
@@ -1,9 +0,0 @@
1
- {
2
- "kind": "PodList",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "selfLink": "/api/v1beta3/pods",
6
- "resourceVersion": "565"
7
- },
8
- "items": []
9
- }
@@ -1,48 +0,0 @@
1
- {
2
- "kind": "EndpointsList",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "selfLink": "/api/v1beta3/namespaces/endpoints",
6
- "resourceVersion": "39"
7
- },
8
- "items": [
9
- {
10
- "metadata": {
11
- "name": "example",
12
- "namespace": "default",
13
- "selfLink": "/api/v1beta3/namespaces/default/endpoints/example",
14
- "uid": "db467530-b6aa-11e4-974a-525400c903c1",
15
- "resourceVersion": "38",
16
- "creationTimestamp": "2015-02-17T08:42:46-05:00"
17
- },
18
- "endpoints": [
19
- "172.17.0.63:80",
20
- "172.17.0.64:80"
21
- ]
22
- },
23
- {
24
- "metadata": {
25
- "name": "kubernetes",
26
- "namespace": "default",
27
- "selfLink": "/api/v1beta3/namespaces/default/endpoints/kubernetes",
28
- "resourceVersion": "8",
29
- "creationTimestamp": null
30
- },
31
- "endpoints": [
32
- "192.168.122.4:6443"
33
- ]
34
- },
35
- {
36
- "metadata": {
37
- "name": "kubernetes-ro",
38
- "namespace": "default",
39
- "selfLink": "/api/v1beta3/namespaces/default/endpoints/kubernetes-ro",
40
- "resourceVersion": "7",
41
- "creationTimestamp": null
42
- },
43
- "endpoints": [
44
- "192.168.122.4:7080"
45
- ]
46
- }
47
- ]
48
- }
@@ -1,56 +0,0 @@
1
- {
2
- "kind": "ServiceList",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "selfLink": "/api/v1beta3/services",
6
- "resourceVersion": "59"
7
- },
8
- "items": [
9
- {
10
- "metadata": {
11
- "name": "kubernetes",
12
- "namespace": "default",
13
- "selfLink": "/api/v1beta3/services/kubernetes?namespace=default",
14
- "uid": "016e9dcd-ce39-11e4-ac24-3c970e4a436a",
15
- "resourceVersion": "6",
16
- "creationTimestamp": "2015-03-19T15:08:16+02:00",
17
- "labels": {
18
- "component": "apiserver",
19
- "provider": "kubernetes"
20
- }
21
- },
22
- "spec": {
23
- "port": 443,
24
- "protocol": "TCP",
25
- "selector": null,
26
- "portalIP": "10.0.0.2",
27
- "containerPort": 0,
28
- "sessionAffinity": "None"
29
- },
30
- "status": {}
31
- },
32
- {
33
- "metadata": {
34
- "name": "kubernetes-ro",
35
- "namespace": "default",
36
- "selfLink": "/api/v1beta3/services/kubernetes-ro?namespace=default",
37
- "uid": "015b78bf-ce39-11e4-ac24-3c970e4a436a",
38
- "resourceVersion": "5",
39
- "creationTimestamp": "2015-03-19T15:08:15+02:00",
40
- "labels": {
41
- "component": "apiserver",
42
- "provider": "kubernetes"
43
- }
44
- },
45
- "spec": {
46
- "port": 80,
47
- "protocol": "TCP",
48
- "selector": null,
49
- "portalIP": "10.0.0.1",
50
- "containerPort": 0,
51
- "sessionAffinity": "None"
52
- },
53
- "status": {}
54
- }
55
- ]
56
- }
@@ -1,35 +0,0 @@
1
- {
2
- "kind": "EventList",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "selfLink": "/api/v1beta3/events",
6
- "resourceVersion": "152"
7
- },
8
- "items": [
9
- {
10
- "metadata": {
11
- "name": "php.13c130f78da4641e",
12
- "namespace": "default",
13
- "selfLink": "/api/v1beta3/events/php.13c130f78da4641e?namespace=default",
14
- "uid": "f3a454d2-b03a-11e4-89e4-525400c903c1",
15
- "resourceVersion": "178",
16
- "creationTimestamp": "2015-02-09T04:06:37-05:00"
17
- },
18
- "involvedObject": {
19
- "kind": "BoundPod",
20
- "namespace": "default",
21
- "name": "php",
22
- "uid": "64273d20-b03a-11e4-89e4-525400c903c1",
23
- "apiVersion": "v1beta1",
24
- "fieldPath": "spec.containers{nginx}"
25
- },
26
- "reason": "created",
27
- "message": "Created with docker id 9ba2a714411d2d0dd1e826b2fe5c3222b5cbfd9dd9133c841585cbb96b8c2c0f",
28
- "source": {
29
- "component": "kubelet",
30
- "host": "127.0.0.1"
31
- },
32
- "timestamp": "2015-02-09T04:06:37-05:00"
33
- }
34
- ]
35
- }
@@ -1,13 +0,0 @@
1
- {
2
- "kind": "Namespace",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "name": "staging",
6
- "selfLink": "/api/v1beta3/namespaces/staging",
7
- "uid": "e388bc10-c021-11e4-a514-3c970e4a436a",
8
- "resourceVersion": "1168",
9
- "creationTimestamp": "2015-03-01T16:47:31+02:00"
10
- },
11
- "spec": {},
12
- "status": {}
13
- }
@@ -1,8 +0,0 @@
1
- {
2
- "kind": "Status",
3
- "apiVersion": "v1beta3",
4
- "metadata": {},
5
- "status": "Failure",
6
- "message": "converting to : type names don't match (Pod, Namespace)",
7
- "code": 500
8
- }
@@ -1,32 +0,0 @@
1
- {
2
- "kind": "NamespaceList",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "selfLink": "/api/v1beta3/namespaces",
6
- "resourceVersion": "1707"
7
- },
8
- "items": [
9
- {
10
- "metadata": {
11
- "name": "default",
12
- "selfLink": "/api/v1beta3/namespaces/default",
13
- "uid": "56c3eb7c-c009-11e4-a514-3c970e4a436a",
14
- "resourceVersion": "4",
15
- "creationTimestamp": "2015-03-01T13:51:47+02:00"
16
- },
17
- "spec": {},
18
- "status": {}
19
- },
20
- {
21
- "metadata": {
22
- "name": "staging",
23
- "selfLink": "/api/v1beta3/namespaces/staging",
24
- "uid": "e388bc10-c021-11e4-a514-3c970e4a436a",
25
- "resourceVersion": "1168",
26
- "creationTimestamp": "2015-03-01T16:47:31+02:00"
27
- },
28
- "spec": {},
29
- "status": {}
30
- }
31
- ]
32
- }
@@ -1,29 +0,0 @@
1
- {
2
- "kind": "Node",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "name": "127.0.0.1",
6
- "selfLink": "/api/v1beta3/nodes/127.0.0.1",
7
- "uid": "041143c5-ce39-11e4-ac24-3c970e4a436a",
8
- "resourceVersion": "1724",
9
- "creationTimestamp": "2015-03-19T15:08:20+02:00"
10
- },
11
- "spec": {
12
- "capacity": {
13
- "cpu": "1",
14
- "memory": "3Gi"
15
- }
16
- },
17
- "status": {
18
- "hostIP": "127.0.0.1",
19
- "conditions": [
20
- {
21
- "kind": "Ready",
22
- "status": "None",
23
- "lastProbeTime": "2015-03-20T14:16:52+02:00",
24
- "lastTransitionTime": "2015-03-19T15:08:20+02:00",
25
- "reason": "Node health check failed: kubelet /healthz endpoint returns not ok"
26
- }
27
- ]
28
- }
29
- }
@@ -1,37 +0,0 @@
1
- {
2
- "kind": "NodeList",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "selfLink": "/api/v1beta3/nodes",
6
- "resourceVersion": "137"
7
- },
8
- "items": [
9
- {
10
- "metadata": {
11
- "name": "127.0.0.1",
12
- "selfLink": "/api/v1beta3/nodes/127.0.0.1",
13
- "uid": "041143c5-ce39-11e4-ac24-3c970e4a436a",
14
- "resourceVersion": "137",
15
- "creationTimestamp": "2015-03-19T15:08:20+02:00"
16
- },
17
- "spec": {
18
- "capacity": {
19
- "cpu": "1",
20
- "memory": "3Gi"
21
- }
22
- },
23
- "status": {
24
- "hostIP": "127.0.0.1",
25
- "conditions": [
26
- {
27
- "kind": "Ready",
28
- "status": "None",
29
- "lastProbeTime": "2015-03-19T15:29:33+02:00",
30
- "lastTransitionTime": "2015-03-19T15:08:20+02:00",
31
- "reason": "Node health check failed: kubelet /healthz endpoint returns not ok"
32
- }
33
- ]
34
- }
35
- }
36
- ]
37
- }
@@ -1,92 +0,0 @@
1
- {
2
- "kind": "Pod",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "name": "redis-master3",
6
- "namespace": "default",
7
- "selfLink": "/api/v1beta3/pods/redis-master3?namespace=default",
8
- "uid": "a344023f-a23c-11e4-a36b-3c970e4a436a",
9
- "resourceVersion": "9",
10
- "creationTimestamp": "2015-01-22T15:43:24+02:00",
11
- "labels": {
12
- "name": "redis-master"
13
- }
14
- },
15
- "spec": {
16
- "volumes": null,
17
- "containers": [
18
- {
19
- "name": "master",
20
- "image": "dockerfile/redis",
21
- "ports": [
22
- {
23
- "hostPort": 6379,
24
- "containerPort": 6379,
25
- "protocol": "TCP"
26
- }
27
- ],
28
- "memory": "0",
29
- "cpu": "100m",
30
- "imagePullPolicy": ""
31
- },
32
- {
33
- "name": "php-redis",
34
- "image": "kubernetes/example-guestbook-php-redis",
35
- "ports": [
36
- {
37
- "hostPort": 8000,
38
- "containerPort": 80,
39
- "protocol": "TCP"
40
- }
41
- ],
42
- "memory": "50000000",
43
- "cpu": "100m",
44
- "imagePullPolicy": ""
45
- }
46
- ],
47
- "restartPolicy": {
48
- "always": {
49
-
50
- }
51
- },
52
- "dnsPolicy": "ClusterFirst"
53
- },
54
- "status": {
55
- "phase": "Running",
56
- "host": "127.0.0.1",
57
- "podIP": "172.17.0.2",
58
- "info": {
59
- "master": {
60
- "state": {
61
- "running": {
62
- "startedAt": "2015-01-22T13:43:29Z"
63
- }
64
- },
65
- "restartCount": 0,
66
- "containerID": "docker://87458d9a12f9dc9a01b52c1eee5f09cf48939380271c0eaf31af298ce67b125e",
67
- "image": "dockerfile/redis"
68
- },
69
- "net": {
70
- "state": {
71
- "running": {
72
- "startedAt": "2015-01-22T13:43:27Z"
73
- }
74
- },
75
- "restartCount": 0,
76
- "containerID": "docker://3bb5ced1f831322d370f70b58137e1dd41216c2960b7a99394542b5230cbd259",
77
- "podIP": "172.17.0.2",
78
- "image": "kubernetes/pause:latest"
79
- },
80
- "php-redis": {
81
- "state": {
82
- "running": {
83
- "startedAt": "2015-01-22T13:43:31Z"
84
- }
85
- },
86
- "restartCount": 0,
87
- "containerID": "docker://5f08685c0a7a5c974d438a52c6560d72bb0aae7e805d2a34302b9b460f1297c7",
88
- "image": "kubernetes/example-guestbook-php-redis"
89
- }
90
- }
91
- }
92
- }
@@ -1,75 +0,0 @@
1
- {
2
- "kind": "PodList",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "selfLink": "/api/v1beta3/pods",
6
- "resourceVersion": "1315"
7
- },
8
- "items": [
9
- {
10
- "metadata": {
11
- "name": "redis-master3",
12
- "namespace": "default",
13
- "selfLink": "/api/v1beta3/pods/redis-master3?namespace=default",
14
- "uid": "1da148b4-cef5-11e4-ac24-3c970e4a436a",
15
- "resourceVersion": "1301",
16
- "creationTimestamp": "2015-03-20T13:34:48+02:00",
17
- "labels": {
18
- "mylabel": "mylabelvalue",
19
- "role": "pod"
20
- }
21
- },
22
- "spec": {
23
- "volumes": null,
24
- "containers": [
25
- {
26
- "name": "master",
27
- "image": "dockerfile/redis",
28
- "ports": [
29
- {
30
- "hostPort": 6379,
31
- "containerPort": 6379,
32
- "protocol": "TCP"
33
- }
34
- ],
35
- "resources": {
36
- "limits": {
37
- "cpu": "100m"
38
- }
39
- },
40
- "terminationMessagePath": "/dev/termination-log",
41
- "imagePullPolicy": "IfNotPresent",
42
- "capabilities": {}
43
- },
44
- {
45
- "name": "php-redis",
46
- "image": "kubernetes/example-guestbook-php-redis",
47
- "ports": [
48
- {
49
- "hostPort": 8000,
50
- "containerPort": 80,
51
- "protocol": "TCP"
52
- }
53
- ],
54
- "resources": {
55
- "limits": {
56
- "cpu": "100m",
57
- "memory": "50000000"
58
- }
59
- },
60
- "terminationMessagePath": "/dev/termination-log",
61
- "imagePullPolicy": "IfNotPresent",
62
- "capabilities": {}
63
- }
64
- ],
65
- "restartPolicy": {
66
- "always": {}
67
- },
68
- "dnsPolicy": "ClusterFirst"
69
- },
70
- "status": {
71
- "phase": "Pending"
72
- }
73
- }
74
- ]
75
- }
@@ -1,57 +0,0 @@
1
- {
2
- "kind": "ReplicationController",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "name": "guestbook-controller",
6
- "namespace": "default",
7
- "selfLink": "/api/v1beta3/replicationcontrollers/guestbook-controller?namespace=default",
8
- "uid": "c71aa4c0-a240-11e4-a265-3c970e4a436a",
9
- "resourceVersion": "8",
10
- "creationTimestamp": "2015-01-22T16:13:02+02:00",
11
- "labels": {
12
- "name": "guestbook"
13
- }
14
- },
15
- "spec": {
16
- "replicas": 3,
17
- "selector": {
18
- "name": "guestbook"
19
- },
20
- "template": {
21
- "metadata": {
22
- "creationTimestamp": null,
23
- "labels": {
24
- "name": "guestbook"
25
- }
26
- },
27
- "spec": {
28
- "volumes": null,
29
- "containers": [
30
- {
31
- "name": "guestbook",
32
- "image": "kubernetes/guestbook",
33
- "ports": [
34
- {
35
- "name": "http-server",
36
- "containerPort": 3000,
37
- "protocol": "TCP"
38
- }
39
- ],
40
- "memory": "0",
41
- "cpu": "0m",
42
- "imagePullPolicy": ""
43
- }
44
- ],
45
- "restartPolicy": {
46
- "always": {
47
-
48
- }
49
- },
50
- "dnsPolicy": "ClusterFirst"
51
- }
52
- }
53
- },
54
- "status": {
55
- "replicas": 3
56
- }
57
- }
@@ -1,64 +0,0 @@
1
- {
2
- "kind": "ReplicationControllerList",
3
- "apiVersion": "v1beta3",
4
- "metadata": {
5
- "selfLink": "/api/v1beta3/namespaces/default/replicationcontrollers",
6
- "resourceVersion": "1636"
7
- },
8
- "items": [
9
- {
10
- "metadata": {
11
- "name": "redis-master-controller",
12
- "namespace": "default",
13
- "selfLink": "/api/v1beta3/namespaces/default/replicationcontrollers/redis-master-controller?namespace=default",
14
- "uid": "108eb547-cefa-11e4-ac24-3c970e4a436a",
15
- "resourceVersion": "1631",
16
- "creationTimestamp": "2015-03-20T14:10:14+02:00",
17
- "labels": {
18
- "name": "redis-master"
19
- }
20
- },
21
- "spec": {
22
- "replicas": 1,
23
- "selector": {
24
- "name": "redis-master"
25
- },
26
- "template": {
27
- "metadata": {
28
- "creationTimestamp": null,
29
- "labels": {
30
- "app": "redis",
31
- "name": "redis-master"
32
- }
33
- },
34
- "spec": {
35
- "volumes": null,
36
- "containers": [
37
- {
38
- "name": "redis-master",
39
- "image": "dockerfile/redis",
40
- "ports": [
41
- {
42
- "containerPort": 6379,
43
- "protocol": "TCP"
44
- }
45
- ],
46
- "resources": {},
47
- "terminationMessagePath": "/dev/termination-log",
48
- "imagePullPolicy": "IfNotPresent",
49
- "capabilities": {}
50
- }
51
- ],
52
- "restartPolicy": {
53
- "always": {}
54
- },
55
- "dnsPolicy": "ClusterFirst"
56
- }
57
- }
58
- },
59
- "status": {
60
- "replicas": 1
61
- }
62
- }
63
- ]
64
- }
@@ -1,44 +0,0 @@
1
- {
2
- "kind": "SecretList",
3
- "apiVersion":"v1beta3",
4
- "metadata":{
5
- "selfLink":"/api/v1beta3/secrets",
6
- "resourceVersion":"256788"
7
- },
8
- "items": [
9
- {
10
- "metadata": {
11
- "name":"default-token-my2pi",
12
- "namespace":"default",
13
- "selfLink":"/api/v1beta3/namespaces/default/secrets/default-token-my2pi",
14
- "uid":"07b60654-2a65-11e5-a483-0e840567604d",
15
- "resourceVersion":"11",
16
- "creationTimestamp":"2015-07-14T20:15:11Z",
17
- "annotations": {
18
- "kubernetes.io/service-account.name":"default",
19
- "kubernetes.io/service-account.uid":"07b350a0-2a65-11e5-a483-0e840567604d"
20
- }
21
- },
22
- "data":{
23
- "ca.crt":"Y2F0J3MgYXJlIGF3ZXNvbWUK",
24
- "token":"Y2F0J3MgYXJlIGF3ZXNvbWUK"
25
- },
26
- "type":"kubernetes.io/service-account-token"
27
- },
28
- {
29
- "metadata": {
30
- "name": "test-secret",
31
- "namespace": "dev",
32
- "selfLink": "/api/v1beta3/namespaces/dev/secrets/test-secret",
33
- "uid": "4e38a198-2bcb-11e5-a483-0e840567604d",
34
- "resourceVersion": "245569",
35
- "creationTimestamp": "2015-07-16T14:59:49Z"
36
- },
37
- "data": {
38
- "super-secret": "Y2F0J3MgYXJlIGF3ZXNvbWUK"
39
- },
40
- "type": "Opaque"
41
- }
42
- ]
43
- }
44
-