kube_schema 1.3.9 → 1.3.10
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/bin/copy-schemas-over +2 -0
- data/bin/create-kubevirt-x-values +54 -0
- data/lib/kube/schema/instance.rb +16 -0
- data/lib/kube/schema/version.rb +1 -1
- data/schemas/kubevirt-definitions.json +143 -143
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ec9dd9097e79e7347dad7507a4670448598cbabf88d5347f4f54304cbdea582e
|
|
4
|
+
data.tar.gz: 0d0fc8aad770317f4e1a666e62b5a884433165dd84aebafcb7ba759c8e37ede2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9d1b2444bed18ac8c17c9e383e4f5e063b032cde1ac18a6528e8de363af63f750ff00b0010198165f73e0c0c782f2fdf4f9b69afb0e3ac0051272e993d97d507
|
|
7
|
+
data.tar.gz: 7fdfcd1388bfe2eda4097602ff9397c3564b84921133806f7784a947e6a7fab9a88ece0d6497a24a6327924f6cd2ba5be948b4ae878cbaa43009e7f6bd0a067a
|
data/Gemfile.lock
CHANGED
data/bin/copy-schemas-over
CHANGED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
#
|
|
3
|
+
# Rewrites schemas/kubevirt-definitions.json in-place to:
|
|
4
|
+
# 1. Add x-kubernetes-group-version-kind annotations
|
|
5
|
+
# 2. Fix $ref pointers from k8s.io.* to io.k8s.* prefix
|
|
6
|
+
#
|
|
7
|
+
set -euo pipefail
|
|
8
|
+
|
|
9
|
+
DEFS_FILE="schemas/kubevirt-definitions.json"
|
|
10
|
+
|
|
11
|
+
echo "Rewriting $DEFS_FILE..."
|
|
12
|
+
|
|
13
|
+
jq '
|
|
14
|
+
# GVK map: definition key -> [{ group, version, kind }]
|
|
15
|
+
{
|
|
16
|
+
"v1.KubeVirt": [{ group: "kubevirt.io", version: "v1", kind: "KubeVirt" }],
|
|
17
|
+
"v1.VirtualMachine": [{ group: "kubevirt.io", version: "v1", kind: "VirtualMachine" }],
|
|
18
|
+
"v1.VirtualMachineExport": [{ group: "export.kubevirt.io", version: "v1", kind: "VirtualMachineExport" }],
|
|
19
|
+
"v1.VirtualMachineInstance": [{ group: "kubevirt.io", version: "v1", kind: "VirtualMachineInstance" }],
|
|
20
|
+
"v1.VirtualMachineInstanceMigration": [{ group: "kubevirt.io", version: "v1", kind: "VirtualMachineInstanceMigration" }],
|
|
21
|
+
"v1.VirtualMachineInstancePreset": [{ group: "kubevirt.io", version: "v1", kind: "VirtualMachineInstancePreset" }],
|
|
22
|
+
"v1.VirtualMachineInstanceReplicaSet": [{ group: "kubevirt.io", version: "v1", kind: "VirtualMachineInstanceReplicaSet" }],
|
|
23
|
+
"v1alpha1.MigrationPolicy": [{ group: "migrations.kubevirt.io", version: "v1alpha1", kind: "MigrationPolicy" }],
|
|
24
|
+
"v1alpha1.VirtualMachineBackup": [{ group: "backup.kubevirt.io", version: "v1alpha1", kind: "VirtualMachineBackup" }],
|
|
25
|
+
"v1beta1.VirtualMachineClone": [{ group: "clone.kubevirt.io", version: "v1beta1", kind: "VirtualMachineClone" }],
|
|
26
|
+
"v1beta1.VirtualMachineClusterInstancetype":[{ group: "instancetype.kubevirt.io", version: "v1beta1", kind: "VirtualMachineClusterInstancetype" }],
|
|
27
|
+
"v1beta1.VirtualMachineClusterPreference": [{ group: "instancetype.kubevirt.io", version: "v1beta1", kind: "VirtualMachineClusterPreference" }],
|
|
28
|
+
"v1beta1.VirtualMachineInstancetype": [{ group: "instancetype.kubevirt.io", version: "v1beta1", kind: "VirtualMachineInstancetype" }],
|
|
29
|
+
"v1beta1.VirtualMachinePool": [{ group: "pool.kubevirt.io", version: "v1beta1", kind: "VirtualMachinePool" }],
|
|
30
|
+
"v1beta1.VirtualMachinePreference": [{ group: "instancetype.kubevirt.io", version: "v1beta1", kind: "VirtualMachinePreference" }],
|
|
31
|
+
"v1beta1.VirtualMachineRestore": [{ group: "snapshot.kubevirt.io", version: "v1beta1", kind: "VirtualMachineRestore" }],
|
|
32
|
+
"v1beta1.VirtualMachineSnapshot": [{ group: "snapshot.kubevirt.io", version: "v1beta1", kind: "VirtualMachineSnapshot" }],
|
|
33
|
+
"v1beta1.VirtualMachineSnapshotContent": [{ group: "snapshot.kubevirt.io", version: "v1beta1", kind: "VirtualMachineSnapshotContent" }]
|
|
34
|
+
} as $gvk_map |
|
|
35
|
+
|
|
36
|
+
# Inject x-kubernetes-group-version-kind annotations
|
|
37
|
+
with_entries(
|
|
38
|
+
if $gvk_map[.key] then
|
|
39
|
+
.value["x-kubernetes-group-version-kind"] = $gvk_map[.key]
|
|
40
|
+
else . end
|
|
41
|
+
) |
|
|
42
|
+
|
|
43
|
+
# Fix $ref pointers: kubevirt uses k8s.io.* but base schema uses io.k8s.*
|
|
44
|
+
walk(
|
|
45
|
+
if type == "string" and startswith("#/definitions/k8s.io.")
|
|
46
|
+
then sub("^#/definitions/k8s\\.io\\."; "#/definitions/io.k8s.")
|
|
47
|
+
else . end
|
|
48
|
+
)
|
|
49
|
+
' "$DEFS_FILE" > "${DEFS_FILE}.tmp" && mv "${DEFS_FILE}.tmp" "$DEFS_FILE"
|
|
50
|
+
|
|
51
|
+
ANNOTATED=$(jq '[.[] | select(has("x-kubernetes-group-version-kind"))] | length' "$DEFS_FILE")
|
|
52
|
+
TOTAL=$(jq 'length' "$DEFS_FILE")
|
|
53
|
+
STALE_REFS=$(jq -r '[.. | strings | select(startswith("#/definitions/k8s.io."))] | length' "$DEFS_FILE")
|
|
54
|
+
echo "Done. $ANNOTATED/$TOTAL definitions annotated. $STALE_REFS stale k8s.io refs remaining."
|
data/lib/kube/schema/instance.rb
CHANGED
|
@@ -345,6 +345,22 @@ if __FILE__ == $0
|
|
|
345
345
|
expect(resource.to_h[:kind]).to eq("VirtualMachine")
|
|
346
346
|
expect(resource.to_h[:metadata][:name]).to eq("test-vm")
|
|
347
347
|
end
|
|
348
|
+
|
|
349
|
+
it "validates a VirtualMachine without $ref resolution errors" do
|
|
350
|
+
resource = instance["VirtualMachine"].new {
|
|
351
|
+
metadata.name = "test-vm"
|
|
352
|
+
spec.runStrategy = "Always"
|
|
353
|
+
spec.template.metadata.labels = { "kubevirt.io/vm": "test-vm" }
|
|
354
|
+
spec.template.spec.domain.cpu = { cores: 1 }
|
|
355
|
+
spec.template.spec.domain.devices = {}
|
|
356
|
+
spec.template.spec.domain.memory = { guest: "1Gi" }
|
|
357
|
+
spec.template.spec.domain.resources = { requests: { memory: "1Gi" } }
|
|
358
|
+
spec.template.spec.volumes = [
|
|
359
|
+
{ name: "rootdisk", containerDisk: { image: "registry.example.com/vm:latest" } }
|
|
360
|
+
]
|
|
361
|
+
}
|
|
362
|
+
expect { resource.to_yaml }.not_to raise_error
|
|
363
|
+
end
|
|
348
364
|
end
|
|
349
365
|
|
|
350
366
|
describe "class-level schemer cache" do
|