Module: Kube::Schema
- Defined in:
- lib/kube/schema.rb,
lib/kube/schema/version.rb,
lib/kube/schema/instance.rb,
lib/kube/schema/manifest.rb,
lib/kube/schema/resource.rb
Defined Under Namespace
Classes: Instance, Manifest, Resource
Constant Summary collapse
- GEM_ROOT =
File.("../..", __dir__).freeze
- SCHEMAS_DIR =
File.join(GEM_ROOT, "schemas").freeze
- DEFAULT_VERSION =
"1.34"- VERSION =
"1.2.1"
Class Attribute Summary collapse
-
.schema_version ⇒ Object
Set a default Kubernetes version for bare lookups like Kube::Schema.
Class Method Summary collapse
-
.[](key) ⇒ Object
Kube::Schema => cached Instance (supports [“Deployment”] chaining) Kube::Schema => Resource via the default version.
- .has_version?(version) ⇒ Boolean
-
.latest_version ⇒ Object
The latest Kubernetes version available in the schemas directory.
-
.parse(hash) ⇒ Object
Build a Resource from a hash.
-
.schema_versions ⇒ Array<String>
Available Kubernetes versions, read from the local schemas directory.
Class Attribute Details
.schema_version ⇒ Object
Set a default Kubernetes version for bare lookups like Kube::Schema. When nil, the DEFAULT_VERSION is used.
26 27 28 |
# File 'lib/kube/schema.rb', line 26 def schema_version @schema_version end |
Class Method Details
.[](key) ⇒ Object
Kube::Schema => cached Instance (supports [“Deployment”] chaining) Kube::Schema => Resource via the default version
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/kube/schema.rb', line 30 def [](key) if key.start_with?("v") && Gem::Version.correct?(key.sub("v", "")) raise Kube::IncorrectVersionFormat, "\nDon't preface the version with a \"v\"." \ "\nUse Kube::Schema[\"#{key.sub("v", "")}\"] instead." end if Gem::Version.correct?(key) if has_version?(key) @instances[key] ||= Instance.new(key) else raise Kube::UnknownVersionError.new( "\n#{key} is an unknown version..." + "\nAvailable: #{schema_versions.join(", ")}" ) end else Instance.new(schema_version || DEFAULT_VERSION)[key] end end |
.has_version?(version) ⇒ Boolean
72 73 74 |
# File 'lib/kube/schema.rb', line 72 def has_version?(version) schema_versions.include?(version) end |
.latest_version ⇒ Object
The latest Kubernetes version available in the schemas directory.
68 69 70 |
# File 'lib/kube/schema.rb', line 68 def latest_version schema_versions.last end |
.parse(hash) ⇒ Object
53 54 55 |
# File 'lib/kube/schema.rb', line 53 def parse(hash) raise NotImplementedError end |
.schema_versions ⇒ Array<String>
Available Kubernetes versions, read from the local schemas directory.
60 61 62 63 64 65 |
# File 'lib/kube/schema.rb', line 60 def schema_versions @schema_versions ||= Dir.glob(File.join(SCHEMAS_DIR, "v*.json")).map do |file_path| File.basename(file_path, ".json").sub(/\Av/, "") end.sort_by { Gem::Version.new(_1) } end |