kube_schema 1.9.0 → 1.9.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -29
- data/kube_schema.gemspec +0 -1
- data/lib/kube/schema/instance.rb +20 -7
- data/lib/kube/schema/version.rb +1 -1
- data/lib/kube/schema.rb +6 -1
- metadata +1 -15
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ff3fedb44c520fb2db66f16b3ae12b6b4fbe3d8a947e636da9c196fa9e80c529
|
|
4
|
+
data.tar.gz: ca30582966d7fa750b14ef69d935a24ea2532d1b9b5eb330df9b611d1894a675
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 199d71dcee2dc211d5bc06a5d748e1019a2df409d7dbfc086d9b3c397c8f7c72ddc4143739e8418d366799e5ec3c5dafa46e693f09722aaf0c7ca8138633f588
|
|
7
|
+
data.tar.gz: cf5ed7f39324cdd202585edc0aa5b52825c746daee4776d2900d9dc4b2b4f353dd854d986100b61b2815c9949f3cedbfaa74696296f320ff07a08c3e7a8c86f4
|
data/Gemfile.lock
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
kube_schema (1.9.
|
|
4
|
+
kube_schema (1.9.2)
|
|
5
5
|
json_schemer (~> 2.5.0)
|
|
6
6
|
rubyshell (~> 1.5.0)
|
|
7
7
|
|
|
8
8
|
GEM
|
|
9
9
|
remote: https://rubygems.org/
|
|
10
10
|
specs:
|
|
11
|
-
ast (2.4.3)
|
|
12
11
|
async (2.39.0)
|
|
13
12
|
console (~> 1.29)
|
|
14
13
|
fiber-annotation
|
|
@@ -106,8 +105,6 @@ GEM
|
|
|
106
105
|
hana (~> 1.3)
|
|
107
106
|
regexp_parser (~> 2.0)
|
|
108
107
|
simpleidn (~> 0.2)
|
|
109
|
-
language_server-protocol (3.17.0.5)
|
|
110
|
-
lint_roller (1.1.0)
|
|
111
108
|
localhost (1.7.0)
|
|
112
109
|
logger (1.7.0)
|
|
113
110
|
mail (2.9.0)
|
|
@@ -135,10 +132,6 @@ GEM
|
|
|
135
132
|
net-smtp (0.5.1)
|
|
136
133
|
net-protocol
|
|
137
134
|
openssl (4.0.1)
|
|
138
|
-
parallel (2.0.1)
|
|
139
|
-
parser (3.3.11.1)
|
|
140
|
-
ast (~> 2.4.1)
|
|
141
|
-
racc
|
|
142
135
|
pp (0.6.3)
|
|
143
136
|
prettyprint
|
|
144
137
|
prettyprint (0.2.0)
|
|
@@ -158,13 +151,11 @@ GEM
|
|
|
158
151
|
psych (5.3.1)
|
|
159
152
|
date
|
|
160
153
|
stringio
|
|
161
|
-
racc (1.8.1)
|
|
162
154
|
rack (3.2.6)
|
|
163
155
|
rackula (1.4.1)
|
|
164
156
|
falcon (~> 0.46)
|
|
165
157
|
samovar (~> 2.1)
|
|
166
158
|
variant
|
|
167
|
-
rainbow (3.1.1)
|
|
168
159
|
rake (13.4.2)
|
|
169
160
|
rbs (4.0.2)
|
|
170
161
|
logger
|
|
@@ -190,21 +181,6 @@ GEM
|
|
|
190
181
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
191
182
|
rspec-support (~> 3.13.0)
|
|
192
183
|
rspec-support (3.13.7)
|
|
193
|
-
rubocop (1.86.1)
|
|
194
|
-
json (~> 2.3)
|
|
195
|
-
language_server-protocol (~> 3.17.0.2)
|
|
196
|
-
lint_roller (~> 1.1.0)
|
|
197
|
-
parallel (>= 1.10)
|
|
198
|
-
parser (>= 3.3.0.2)
|
|
199
|
-
rainbow (>= 2.2.2, < 4.0)
|
|
200
|
-
regexp_parser (>= 2.9.3, < 3.0)
|
|
201
|
-
rubocop-ast (>= 1.49.0, < 2.0)
|
|
202
|
-
ruby-progressbar (~> 1.7)
|
|
203
|
-
unicode-display_width (>= 2.4.0, < 4.0)
|
|
204
|
-
rubocop-ast (1.49.1)
|
|
205
|
-
parser (>= 3.3.7.2)
|
|
206
|
-
prism (~> 1.7)
|
|
207
|
-
ruby-progressbar (1.13.0)
|
|
208
184
|
rubyshell (1.5.0)
|
|
209
185
|
rugged (1.9.0)
|
|
210
186
|
samovar (2.4.1)
|
|
@@ -217,9 +193,6 @@ GEM
|
|
|
217
193
|
timeout (0.6.1)
|
|
218
194
|
traces (0.18.2)
|
|
219
195
|
tsort (0.2.0)
|
|
220
|
-
unicode-display_width (3.2.0)
|
|
221
|
-
unicode-emoji (~> 4.1)
|
|
222
|
-
unicode-emoji (4.2.0)
|
|
223
196
|
utopia (2.32.1)
|
|
224
197
|
bake (~> 0.20)
|
|
225
198
|
concurrent-ruby (~> 1.2)
|
|
@@ -258,7 +231,6 @@ DEPENDENCIES
|
|
|
258
231
|
kube_schema!
|
|
259
232
|
rake (~> 13.0)
|
|
260
233
|
rspec (~> 3.13)
|
|
261
|
-
rubocop (~> 1.21)
|
|
262
234
|
utopia-project
|
|
263
235
|
|
|
264
236
|
BUNDLED WITH
|
data/kube_schema.gemspec
CHANGED
|
@@ -30,7 +30,6 @@ Gem::Specification.new do |spec|
|
|
|
30
30
|
|
|
31
31
|
spec.add_development_dependency "rspec", "~> 3.13"
|
|
32
32
|
spec.add_development_dependency "rake", "~> 13.0"
|
|
33
|
-
spec.add_development_dependency "rubocop", "~> 1.21"
|
|
34
33
|
|
|
35
34
|
spec.add_dependency "rubyshell", "~> 1.5.0"
|
|
36
35
|
spec.add_dependency "json_schemer", "~> 2.5.0"
|
data/lib/kube/schema/instance.rb
CHANGED
|
@@ -66,6 +66,12 @@ module Kube
|
|
|
66
66
|
"\nExpected \"group/version/kind\" or \"version/kind\"."
|
|
67
67
|
end
|
|
68
68
|
|
|
69
|
+
# Custom schemas take precedence on full-GVK lookups too.
|
|
70
|
+
custom = find_custom_entry_by_gvk(group, version, kind)
|
|
71
|
+
if custom
|
|
72
|
+
return build_resource_class(custom[:schema], custom[:defaults])
|
|
73
|
+
end
|
|
74
|
+
|
|
69
75
|
entry = find_gvk_entry_by_full_gvk(group, version, kind)
|
|
70
76
|
else
|
|
71
77
|
# Kind-only lookup — custom schemas take precedence.
|
|
@@ -92,7 +98,8 @@ module Kube
|
|
|
92
98
|
#
|
|
93
99
|
# @return [Array<String>] sorted kind names
|
|
94
100
|
def list_resources
|
|
95
|
-
|
|
101
|
+
custom_kinds = Schema.custom_schemas.values.map { |v| v[:defaults]["kind"] }
|
|
102
|
+
(gvk_index.keys + custom_kinds).uniq.sort
|
|
96
103
|
end
|
|
97
104
|
|
|
98
105
|
# Look up a sub-spec definition by short name (e.g. "Container",
|
|
@@ -243,19 +250,25 @@ module Kube
|
|
|
243
250
|
end
|
|
244
251
|
end
|
|
245
252
|
|
|
246
|
-
# Find a custom schema entry by kind (case-insensitive).
|
|
253
|
+
# Find a custom schema entry by kind (case-insensitive). The registry
|
|
254
|
+
# is keyed by full GVK, so match on each entry's recorded kind. When
|
|
255
|
+
# several groups register the same kind, the first registered wins.
|
|
247
256
|
# Returns the { schema:, defaults: } hash or nil.
|
|
248
257
|
def find_custom_entry(kind)
|
|
249
258
|
registry = Schema.custom_schemas
|
|
250
|
-
return
|
|
251
|
-
|
|
252
|
-
registry.each do |k, v|
|
|
253
|
-
return v if k.downcase == kind.downcase
|
|
254
|
-
end
|
|
259
|
+
registry.each_value { |v| return v if v[:defaults]["kind"] == kind }
|
|
260
|
+
registry.each_value { |v| return v if v[:defaults]["kind"].casecmp?(kind) }
|
|
255
261
|
|
|
256
262
|
nil
|
|
257
263
|
end
|
|
258
264
|
|
|
265
|
+
# Find a custom schema entry by exact group, version, and kind.
|
|
266
|
+
# Returns the { schema:, defaults: } hash or nil.
|
|
267
|
+
def find_custom_entry_by_gvk(group, version, kind)
|
|
268
|
+
api_version = group.empty? ? version : "#{group}/#{version}"
|
|
269
|
+
Schema.custom_schemas["#{api_version}/#{kind}"]
|
|
270
|
+
end
|
|
271
|
+
|
|
259
272
|
# Build a Resource subclass from a JSONSchemer instance and defaults hash.
|
|
260
273
|
def build_resource_class(schema_instance, defaults)
|
|
261
274
|
Class.new(::Kube::Schema::Resource) do
|
data/lib/kube/schema/version.rb
CHANGED
data/lib/kube/schema.rb
CHANGED
|
@@ -74,7 +74,12 @@ module Kube
|
|
|
74
74
|
"schema must be a Hash, a JSON string, or a file path — got #{schema.class}"
|
|
75
75
|
end
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
# Key by full GVK ("group/version/Kind") so a registered CRD resolves
|
|
78
|
+
# on fully-qualified lookups (e.g. the api_version/kind path that
|
|
79
|
+
# Resource#rebuild reconstructs), not just kind-only lookups. Keying by
|
|
80
|
+
# bare kind also collided when two CRDs shared a kind across groups.
|
|
81
|
+
key = api_version ? "#{api_version}/#{kind}" : kind
|
|
82
|
+
@custom_schemas[key] = {
|
|
78
83
|
schema: JSONSchemer.schema(parsed),
|
|
79
84
|
defaults: { "apiVersion" => api_version, "kind" => kind }.freeze
|
|
80
85
|
}
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kube_schema
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.9.
|
|
4
|
+
version: 1.9.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nathan K
|
|
@@ -37,20 +37,6 @@ dependencies:
|
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '13.0'
|
|
40
|
-
- !ruby/object:Gem::Dependency
|
|
41
|
-
name: rubocop
|
|
42
|
-
requirement: !ruby/object:Gem::Requirement
|
|
43
|
-
requirements:
|
|
44
|
-
- - "~>"
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: '1.21'
|
|
47
|
-
type: :development
|
|
48
|
-
prerelease: false
|
|
49
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
-
requirements:
|
|
51
|
-
- - "~>"
|
|
52
|
-
- !ruby/object:Gem::Version
|
|
53
|
-
version: '1.21'
|
|
54
40
|
- !ruby/object:Gem::Dependency
|
|
55
41
|
name: rubyshell
|
|
56
42
|
requirement: !ruby/object:Gem::Requirement
|