Module: KubeSchema
- Defined in:
- lib/kube_schema.rb,
lib/kube_schema/version.rb,
lib/kube_schema/instance.rb,
lib/kube_schema/resource.rb,
lib/kube_schema/schema_cache.rb,
lib/kube_schema/schema_index.rb
Defined Under Namespace
Modules: SchemaCache Classes: Instance, Resource, SchemaIndex, UnknownVersionError
Constant Summary collapse
- GEM_ROOT =
File.("..", __dir__).freeze
- SCHEMA_INDEX =
File.join(GEM_ROOT, "data").freeze
- DEFAULT_VERSION =
2025-04-16
"1.34.4"- VERSION =
"1.0.0"
Class Attribute Summary collapse
-
.schema_version ⇒ Object
Set a default Kubernetes version for bare lookups like KubeSchema.
Class Method Summary collapse
-
.[](key) ⇒ Object
KubeSchema => cached Instance (supports [“Deployment”] chaining) KubeSchema => Resource via the default version KubeSchema => Resource via the default version.
- .has_version?(version) ⇒ Boolean
-
.latest_version ⇒ Object
The latest Kubernetes version available in the schemas directory, determined by sorting the filenames with Gem::Version.
-
.parse(hash) ⇒ Object
Build a Resource from a hash.
- .schema_versions ⇒ Object
Class Attribute Details
.schema_version ⇒ Object
Set a default Kubernetes version for bare lookups like KubeSchema. When nil, the latest version found in the schemas directory is used.
22 23 24 |
# File 'lib/kube_schema.rb', line 22 def schema_version @schema_version end |
Class Method Details
.[](key) ⇒ Object
KubeSchema => cached Instance (supports [“Deployment”] chaining) KubeSchema => Resource via the default version KubeSchema => Resource via the default version
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/kube_schema.rb', line 27 def [](key) is_a_version = -> (key) { Gem::Version.correct?(key) } if is_a_version.(key) if has_version?(key) @instances[key] ||= Instance.new(key) else raise UnknownVersionError.new( "\n#{key} is an unknown version..." + "\nUse `KubeSchema.schema_versions` to get a list." ) end else Instance.new(schema_version || DEFAULT_VERSION)[key] end end |
.has_version?(version) ⇒ Boolean
63 64 65 |
# File 'lib/kube_schema.rb', line 63 def has_version?(version) schema_versions.include?(version) end |
.latest_version ⇒ Object
The latest Kubernetes version available in the schemas directory, determined by sorting the filenames with Gem::Version.
59 60 61 |
# File 'lib/kube_schema.rb', line 59 def latest_version schema_versions.last end |
.parse(hash) ⇒ Object
Build a Resource from a hash.
KubeSchema.parse(KubeSchema["Deployment"].to_h) == KubeSchema["Deployment"]
46 47 48 |
# File 'lib/kube_schema.rb', line 46 def parse(hash) raise NotImplementedError end |
.schema_versions ⇒ Object
50 51 52 53 54 55 |
# File 'lib/kube_schema.rb', line 50 def schema_versions @schema_versions ||= Dir.glob(SCHEMA_INDEX + "/v*.txt").map do |file_path| file_path.split("/").last.gsub(".txt", "")[1..-1] end.sort_by { Gem::Version.new(_1) } end |