kubernetes_references 0.1.0
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 +7 -0
- data/.standard.yml +3 -0
- data/Gemfile +12 -0
- data/LICENSE.txt +21 -0
- data/README.md +140 -0
- data/Rakefile +14 -0
- data/Steepfile +32 -0
- data/kubernetes_references.gemspec +39 -0
- data/lib/kubernetes_references/api.rb +18 -0
- data/lib/kubernetes_references/capabilities.rb +10 -0
- data/lib/kubernetes_references/config_map_env_source.rb +10 -0
- data/lib/kubernetes_references/config_map_key_selector.rb +11 -0
- data/lib/kubernetes_references/container.rb +30 -0
- data/lib/kubernetes_references/container_port.rb +13 -0
- data/lib/kubernetes_references/env_from_source.rb +11 -0
- data/lib/kubernetes_references/env_var.rb +11 -0
- data/lib/kubernetes_references/env_var_source.rb +12 -0
- data/lib/kubernetes_references/errors.rb +4 -0
- data/lib/kubernetes_references/exec_action.rb +9 -0
- data/lib/kubernetes_references/grpc_action.rb +10 -0
- data/lib/kubernetes_references/http_get_action.rb +13 -0
- data/lib/kubernetes_references/http_header.rb +10 -0
- data/lib/kubernetes_references/lifecycle.rb +10 -0
- data/lib/kubernetes_references/lifecycle_handler.rb +11 -0
- data/lib/kubernetes_references/object_field_selector.rb +10 -0
- data/lib/kubernetes_references/probe.rb +18 -0
- data/lib/kubernetes_references/quantity.rb +14 -0
- data/lib/kubernetes_references/resource_field_selector.rb +11 -0
- data/lib/kubernetes_references/resource_requirements.rb +10 -0
- data/lib/kubernetes_references/seccomp_profile.rb +10 -0
- data/lib/kubernetes_references/secret_env_source.rb +10 -0
- data/lib/kubernetes_references/secret_key_selector.rb +11 -0
- data/lib/kubernetes_references/security_context.rb +19 -0
- data/lib/kubernetes_references/selinux_options.rb +12 -0
- data/lib/kubernetes_references/tcp_socket_action.rb +10 -0
- data/lib/kubernetes_references/version.rb +5 -0
- data/lib/kubernetes_references/volume_device.rb +10 -0
- data/lib/kubernetes_references/volume_mount.rb +14 -0
- data/lib/kubernetes_references/windows_security_context_options.rb +12 -0
- data/lib/kubernetes_references.rb +68 -0
- data/sig/capabilities.rbs +6 -0
- data/sig/config_map_env_source.rbs +6 -0
- data/sig/config_map_key_selector.rbs +7 -0
- data/sig/container.rbs +26 -0
- data/sig/container_port.rbs +9 -0
- data/sig/env_from_source.rbs +7 -0
- data/sig/env_var.rbs +7 -0
- data/sig/env_var_source.rbs +8 -0
- data/sig/errors.rbs +6 -0
- data/sig/exec_action.rbs +5 -0
- data/sig/grpc_action.rbs +6 -0
- data/sig/http_get_action.rbs +9 -0
- data/sig/http_header.rbs +6 -0
- data/sig/kubernetes_references.rbs +7 -0
- data/sig/lifecycle.rbs +6 -0
- data/sig/lifecycle_handler.rbs +7 -0
- data/sig/object_field_selector.rbs +6 -0
- data/sig/probe.rbs +14 -0
- data/sig/quantity.rbs +5 -0
- data/sig/resource_field_selector.rbs +7 -0
- data/sig/resource_requirements.rbs +6 -0
- data/sig/seccomp_profile.rbs +6 -0
- data/sig/secret_env_source.rbs +6 -0
- data/sig/secret_key_selector.rbs +7 -0
- data/sig/security_context.rbs +15 -0
- data/sig/selinux_options.rbs +8 -0
- data/sig/tcp_socket_action.rbs +6 -0
- data/sig/volume_device.rbs +6 -0
- data/sig/volume_mount.rbs +10 -0
- data/sig/windows_security_context_options.rbs +8 -0
- metadata +117 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8e0a5f4f32d9ba9c816e5a12a2789cc492a2fcd84713ebbfbf92c4ca3e975d86
|
4
|
+
data.tar.gz: 84067462e1752805bc906006bc041805f8369327756a0543d58800dca0e34eff
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 79ebbefc87acf74ba4035bbc52f00ee95911ab7ba31573bdb1227871cd609ed7f35ba5c17caab41b38a8898ee710a6f03797878e480a5111012e9414cee59328
|
7
|
+
data.tar.gz: e69dcd1e11ecc685e185ec30562a5e34fba7c9506365c78dc6af96b829be346820318290f73073ddd3fa22bb755b603c4a61fa7797cbc4857c9b902c3aad43c9
|
data/.standard.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2023 Kohlrabbit
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
# KubernetesReferences
|
2
|
+
|
3
|
+
**Current API version: v1.23**
|
4
|
+
|
5
|
+
This Ruby gem attempts to collect all the Kubernetes objects available in the API as Ruby objects. Although not very useful at the moment, it could come in handy if you want to develop tools that need to play with the api's schemas.
|
6
|
+
|
7
|
+
## Naming and conventions
|
8
|
+
|
9
|
+
The files in this gem are named in snake_case and the classes are in camelCase.
|
10
|
+
|
11
|
+
Class attributes are in snake_case to respect Ruby standards, unlike the official API, which is in camelCase.
|
12
|
+
|
13
|
+
All attributes for each supported object are accepted.
|
14
|
+
|
15
|
+
Plurals are preserved. `Object array` are implemented as `Array[Object]` with basic Ruby Array object, there is no such thing as a plural class.
|
16
|
+
|
17
|
+
```yaml
|
18
|
+
good: Array[KubernetesReferences::Container]
|
19
|
+
bad: KubernetesReferences::Containers -> [KubernetesReferences::Container]
|
20
|
+
```
|
21
|
+
|
22
|
+
## Example
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
require "kubernetes_references"
|
26
|
+
|
27
|
+
container = KubernetesReferences::Container.new(
|
28
|
+
name: "my-container",
|
29
|
+
ports: [KubernetesReferences::ContainerPort.new(
|
30
|
+
container_port: 80,
|
31
|
+
name: "http",
|
32
|
+
protocol: "TCP"
|
33
|
+
)]
|
34
|
+
)
|
35
|
+
```
|
36
|
+
|
37
|
+
Tired of writing "KubernetesReferences::" ? Shortcuts are present with the `Kube` prefix:
|
38
|
+
|
39
|
+
```ruby
|
40
|
+
require "kubernetes_references"
|
41
|
+
|
42
|
+
container = KubeContainer.new(
|
43
|
+
name = "my-container",
|
44
|
+
ports: [KubeContainerPort.new(
|
45
|
+
container_port: 80,
|
46
|
+
name: "http",
|
47
|
+
protocol: "TCP"
|
48
|
+
)]
|
49
|
+
)
|
50
|
+
```
|
51
|
+
|
52
|
+
Please check the test files for more examples of how to use this gem.
|
53
|
+
|
54
|
+
## Types
|
55
|
+
|
56
|
+
All objects have type definitions as rbs files, in the "sig" folder. To check types, the project uses Steep.
|
57
|
+
|
58
|
+
```bash
|
59
|
+
steep check
|
60
|
+
|
61
|
+
No type error detected. 🧉
|
62
|
+
```
|
63
|
+
|
64
|
+
## How it works ?
|
65
|
+
|
66
|
+
All classes in `lib/kubernetes_references` are inheriting from `KubernetesReferences::API`.
|
67
|
+
|
68
|
+
This class implements a `#_set!` method that takes a constructor hash (`#initialize`) in order to populate class attributes (if present).
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
module KubernetesReferences
|
72
|
+
class MyObjectClass < KubernetesReferences::API
|
73
|
+
attr_accessor :my_field
|
74
|
+
attr_accessor :another_field
|
75
|
+
|
76
|
+
# obj must be hash withfields:
|
77
|
+
# {
|
78
|
+
# my_field: "my-value",
|
79
|
+
# another_field: 1
|
80
|
+
# }
|
81
|
+
def initialize(obj)
|
82
|
+
_set!(obj)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
```
|
87
|
+
|
88
|
+
Types of `my_field` and `another_field` are validated by `Steep` (in the `sig` folder):
|
89
|
+
|
90
|
+
```ruby
|
91
|
+
class KubernetesReferences::MyObjectClass
|
92
|
+
attr_accessor my_field: String
|
93
|
+
attr_accessor another_field: Integer
|
94
|
+
end
|
95
|
+
```
|
96
|
+
|
97
|
+
This method avoids the need for additional requires such as OpenStruct or Struct.
|
98
|
+
|
99
|
+
## Supported objects
|
100
|
+
|
101
|
+
The Kubernetes api is extremely large and evolves regularly. For the moment, the following objects are supported:
|
102
|
+
|
103
|
+
```
|
104
|
+
core/v1 Capabilities
|
105
|
+
core/v1 ConfigMapEnvSource
|
106
|
+
core/v1 ConfigMapKeySelector
|
107
|
+
core/v1 Container
|
108
|
+
core/v1 ContainerPort
|
109
|
+
core/v1 EnvFromSource
|
110
|
+
core/v1 EnvVar
|
111
|
+
core/v1 EnvVarSource
|
112
|
+
core/v1 ExecAction
|
113
|
+
core/v1 GRPCAction
|
114
|
+
core/v1 HTTPGetAction
|
115
|
+
core/v1 HTTPHeader
|
116
|
+
core/v1 Lifecycle
|
117
|
+
core/v1 LifecycleHandler
|
118
|
+
core/v1 ObjectFieldSelector
|
119
|
+
core/v1 Probe
|
120
|
+
core/v1 Quantity # todo
|
121
|
+
core/v1 ResourceFieldSelector
|
122
|
+
core/v1 ResourceRequirements
|
123
|
+
core/v1 SeccompProfile
|
124
|
+
core/v1 SecretEnvSource
|
125
|
+
core/v1 SecretKeySelector
|
126
|
+
core/v1 SecurityContext
|
127
|
+
core/v1 SELinuxOptions
|
128
|
+
core/v1 TCPSocketAction
|
129
|
+
core/v1 VolumeDevice
|
130
|
+
core/v1 VolumeMount
|
131
|
+
core/v1 WindowsSecurityContextOptions
|
132
|
+
```
|
133
|
+
|
134
|
+
## Tests
|
135
|
+
|
136
|
+
The tests are written with Minitest.
|
137
|
+
|
138
|
+
```
|
139
|
+
rake test
|
140
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "bundler/gem_tasks"
|
4
|
+
require "rake/testtask"
|
5
|
+
|
6
|
+
Rake::TestTask.new(:test) do |t|
|
7
|
+
t.libs << "test"
|
8
|
+
t.libs << "lib"
|
9
|
+
t.test_files = FileList["test/**/test_*.rb"]
|
10
|
+
end
|
11
|
+
|
12
|
+
require "standard/rake"
|
13
|
+
|
14
|
+
task default: %i[test standard]
|
data/Steepfile
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# D = Steep::Diagnostic
|
2
|
+
#
|
3
|
+
# target :lib do
|
4
|
+
# signature "sig"
|
5
|
+
#
|
6
|
+
# check "lib" # Directory name
|
7
|
+
# check "Gemfile" # File name
|
8
|
+
# check "app/models/**/*.rb" # Glob
|
9
|
+
# # ignore "lib/templates/*.rb"
|
10
|
+
#
|
11
|
+
# # library "pathname", "set" # Standard libraries
|
12
|
+
# # library "strong_json" # Gems
|
13
|
+
#
|
14
|
+
# # configure_code_diagnostics(D::Ruby.strict) # `strict` diagnostics setting
|
15
|
+
# # configure_code_diagnostics(D::Ruby.lenient) # `lenient` diagnostics setting
|
16
|
+
# # configure_code_diagnostics do |hash| # You can setup everything yourself
|
17
|
+
# # hash[D::Ruby::NoMethod] = :information
|
18
|
+
# # end
|
19
|
+
# end
|
20
|
+
|
21
|
+
# target :test do
|
22
|
+
# signature "sig", "sig-private"
|
23
|
+
#
|
24
|
+
# check "test"
|
25
|
+
#
|
26
|
+
# # library "pathname", "set" # Standard libraries
|
27
|
+
# end
|
28
|
+
|
29
|
+
target :kuberbetes do
|
30
|
+
signature "sig"
|
31
|
+
check "lib/**/*.rb"
|
32
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "lib/kubernetes_references/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = "kubernetes_references"
|
7
|
+
spec.version = KubernetesReferences::VERSION
|
8
|
+
spec.authors = ["Kohlrabbit"]
|
9
|
+
spec.email = ["gautierfrancois+pgp@ik.me"]
|
10
|
+
|
11
|
+
spec.summary = "(wip) implementation of Kubernetes API objects in Ruby."
|
12
|
+
spec.description = "(wip) implementation of Kubernetes API objects in Ruby, with required types and normalized conventions."
|
13
|
+
spec.homepage = "https://github.com/Kohlrabbit/kubernetes-references"
|
14
|
+
spec.license = "MIT"
|
15
|
+
spec.required_ruby_version = ">= 2.6.0"
|
16
|
+
|
17
|
+
spec.metadata["allowed_push_host"] = "https://rubygems.org"
|
18
|
+
|
19
|
+
spec.metadata["homepage_uri"] = spec.homepage
|
20
|
+
spec.metadata["source_code_uri"] = "https://github.com/Kohlrabbit/kubernetes-references"
|
21
|
+
spec.metadata["changelog_uri"] = "https://github.com/Kohlrabbit/kubernetes-references."
|
22
|
+
|
23
|
+
# Specify which files should be added to the gem when it is released.
|
24
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
25
|
+
spec.files = Dir.chdir(__dir__) do
|
26
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
27
|
+
(File.expand_path(f) == __FILE__) || f.start_with?(*%w[bin/ test/ spec/ features/ .git .circleci appveyor])
|
28
|
+
end
|
29
|
+
end
|
30
|
+
spec.bindir = "exe"
|
31
|
+
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
|
32
|
+
spec.require_paths = ["lib"]
|
33
|
+
|
34
|
+
# Uncomment to register a new dependency of your gem
|
35
|
+
# spec.add_dependency "example-gem", "~> 1.0"
|
36
|
+
|
37
|
+
# For more information and examples about making a new gem, check out our
|
38
|
+
# guide at: https://bundler.io/guides/creating_gem.html
|
39
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "kubernetes_references/errors"
|
2
|
+
|
3
|
+
module KubernetesReferences
|
4
|
+
class API
|
5
|
+
def to_json
|
6
|
+
end
|
7
|
+
|
8
|
+
def _set!(obj)
|
9
|
+
obj.each do |k, v|
|
10
|
+
if self.respond_to?(k)
|
11
|
+
instance_variable_set("@#{k}", v)
|
12
|
+
else
|
13
|
+
raise InvalidObjectFieldError, k
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module KubernetesReferences
|
2
|
+
class Container < KubernetesReferences::API
|
3
|
+
attr_accessor :args
|
4
|
+
attr_accessor :command
|
5
|
+
attr_accessor :env
|
6
|
+
attr_accessor :env_from
|
7
|
+
attr_accessor :image
|
8
|
+
attr_accessor :image_pull_policy
|
9
|
+
attr_accessor :lifecycle
|
10
|
+
attr_accessor :liveness_probe
|
11
|
+
attr_accessor :name
|
12
|
+
attr_accessor :ports
|
13
|
+
attr_accessor :readiness_probe
|
14
|
+
attr_accessor :resources
|
15
|
+
attr_accessor :security_context
|
16
|
+
attr_accessor :startup_probe
|
17
|
+
attr_accessor :stdin
|
18
|
+
attr_accessor :stdin_once
|
19
|
+
attr_accessor :termination_message_path
|
20
|
+
attr_accessor :termination_message_policy
|
21
|
+
attr_accessor :tty
|
22
|
+
attr_accessor :volume_devices
|
23
|
+
attr_accessor :volume_mounts
|
24
|
+
attr_accessor :working_dir
|
25
|
+
|
26
|
+
def initialize(obj)
|
27
|
+
_set!(obj)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module KubernetesReferences
|
2
|
+
class ContainerPort < KubernetesReferences::API
|
3
|
+
attr_accessor :container_port
|
4
|
+
attr_accessor :host_ip
|
5
|
+
attr_accessor :host_port
|
6
|
+
attr_accessor :name
|
7
|
+
attr_accessor :protocol
|
8
|
+
|
9
|
+
def initialize(obj)
|
10
|
+
_set!(obj)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module KubernetesReferences
|
2
|
+
class EnvVarSource < KubernetesReferences::API
|
3
|
+
attr_accessor :config_map_key_ref
|
4
|
+
attr_accessor :field_ref
|
5
|
+
attr_accessor :resource_field_ref
|
6
|
+
attr_accessor :secret_key_ref
|
7
|
+
|
8
|
+
def initialize(obj)
|
9
|
+
_set!(obj)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module KubernetesReferences
|
2
|
+
class HTTPGetAction < KubernetesReferences::API
|
3
|
+
attr_accessor :host
|
4
|
+
attr_accessor :http_headers
|
5
|
+
attr_accessor :path
|
6
|
+
attr_accessor :port
|
7
|
+
attr_accessor :scheme
|
8
|
+
|
9
|
+
def initialize(obj)
|
10
|
+
_set!(obj)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module KubernetesReferences
|
2
|
+
class Probe < KubernetesReferences::API
|
3
|
+
attr_accessor :exec
|
4
|
+
attr_accessor :failure_threshold
|
5
|
+
attr_accessor :grpc
|
6
|
+
attr_accessor :http_get
|
7
|
+
attr_accessor :initial_delay_seconds
|
8
|
+
attr_accessor :period_seconds
|
9
|
+
attr_accessor :success_threshold
|
10
|
+
attr_accessor :tcp_socket
|
11
|
+
attr_accessor :termination_grace_period_seconds
|
12
|
+
attr_accessor :timeout_seconds
|
13
|
+
|
14
|
+
def initialize(obj)
|
15
|
+
_set!(obj)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module KubernetesReferences
|
2
|
+
class Quantity < KubernetesReferences::API
|
3
|
+
attr_accessor :value
|
4
|
+
|
5
|
+
def initialize(obj)
|
6
|
+
_set!(obj)
|
7
|
+
end
|
8
|
+
|
9
|
+
def to_json
|
10
|
+
# todo: implement requirements from Kubernetes doc
|
11
|
+
# https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#quantity-resource-core
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module KubernetesReferences
|
2
|
+
class SecurityContext < KubernetesReferences::API
|
3
|
+
attr_accessor :allow_privilege_escalation
|
4
|
+
attr_accessor :capabilities
|
5
|
+
attr_accessor :privileged
|
6
|
+
attr_accessor :proc_mount
|
7
|
+
attr_accessor :read_only_root_filesystem
|
8
|
+
attr_accessor :run_as_group
|
9
|
+
attr_accessor :run_as_non_root
|
10
|
+
attr_accessor :run_as_user
|
11
|
+
attr_accessor :selinux_options
|
12
|
+
attr_accessor :seccomp_profile
|
13
|
+
attr_accessor :windows_options
|
14
|
+
|
15
|
+
def initialize(obj)
|
16
|
+
_set!(obj)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module KubernetesReferences
|
2
|
+
class VolumeMount < KubernetesReferences::API
|
3
|
+
attr_accessor :mount_path
|
4
|
+
attr_accessor :mount_propagation
|
5
|
+
attr_accessor :name
|
6
|
+
attr_accessor :read_only
|
7
|
+
attr_accessor :sub_path
|
8
|
+
attr_accessor :sub_path_expr
|
9
|
+
|
10
|
+
def initialize(obj)
|
11
|
+
_set!(obj)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module KubernetesReferences
|
2
|
+
class WindowsSecurityContextOptions < KubernetesReferences::API
|
3
|
+
attr_accessor :gmsa_credential_spec
|
4
|
+
attr_accessor :gmsa_credential_spec_name
|
5
|
+
attr_accessor :host_process
|
6
|
+
attr_accessor :run_as_user_name
|
7
|
+
|
8
|
+
def initialize(obj)
|
9
|
+
_set!(obj)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "kubernetes_references/errors"
|
4
|
+
require "kubernetes_references/api"
|
5
|
+
require "kubernetes_references/capabilities"
|
6
|
+
require "kubernetes_references/config_map_env_source"
|
7
|
+
require "kubernetes_references/config_map_key_selector"
|
8
|
+
require "kubernetes_references/container_port"
|
9
|
+
require "kubernetes_references/container"
|
10
|
+
require "kubernetes_references/env_from_source"
|
11
|
+
require "kubernetes_references/env_var_source"
|
12
|
+
require "kubernetes_references/env_var"
|
13
|
+
require "kubernetes_references/exec_action"
|
14
|
+
require "kubernetes_references/grpc_action"
|
15
|
+
require "kubernetes_references/http_get_action"
|
16
|
+
require "kubernetes_references/http_header"
|
17
|
+
require "kubernetes_references/lifecycle_handler"
|
18
|
+
require "kubernetes_references/lifecycle"
|
19
|
+
require "kubernetes_references/object_field_selector"
|
20
|
+
require "kubernetes_references/probe"
|
21
|
+
require "kubernetes_references/quantity"
|
22
|
+
require "kubernetes_references/resource_field_selector"
|
23
|
+
require "kubernetes_references/resource_requirements"
|
24
|
+
require "kubernetes_references/seccomp_profile"
|
25
|
+
require "kubernetes_references/secret_env_source"
|
26
|
+
require "kubernetes_references/secret_key_selector"
|
27
|
+
require "kubernetes_references/security_context"
|
28
|
+
require "kubernetes_references/selinux_options"
|
29
|
+
require "kubernetes_references/tcp_socket_action"
|
30
|
+
require "kubernetes_references/volume_device"
|
31
|
+
require "kubernetes_references/volume_mount"
|
32
|
+
require "kubernetes_references/windows_security_context_options"
|
33
|
+
|
34
|
+
module KubernetesReferences
|
35
|
+
VERSION = 0.1
|
36
|
+
KUBE_API_VERSION = "v1.23"
|
37
|
+
|
38
|
+
class Error < StandardError; end
|
39
|
+
# Your code goes here...
|
40
|
+
end
|
41
|
+
|
42
|
+
KubeCapabilities = KubernetesReferences::Capabilities
|
43
|
+
KubeConfigMapEnvSource = KubernetesReferences::ConfigMapEnvSource
|
44
|
+
KubeContainerPort = KubernetesReferences::ContainerPort
|
45
|
+
KubeContainer = KubernetesReferences::Container
|
46
|
+
KubeEnvFromSource = KubernetesReferences::EnvFromSource
|
47
|
+
KubeEnvVarSource = KubernetesReferences::EnvVarSource
|
48
|
+
KubeEnvVar = KubernetesReferences::EnvVar
|
49
|
+
KubeExecAction = KubernetesReferences::ExecAction
|
50
|
+
KubeGRPCAction = KubernetesReferences::GRPCAction
|
51
|
+
KubeHTTPGetAction = KubernetesReferences::HTTPGetAction
|
52
|
+
KubeHTTPHeader = KubernetesReferences::HTTPHeader
|
53
|
+
KubeLifecycleHandler = KubernetesReferences::LifecycleHandler
|
54
|
+
KubeLifecycle = KubernetesReferences::Lifecycle
|
55
|
+
KubeObjectFieldSelector = KubernetesReferences::ObjectFieldSelector
|
56
|
+
KubeProbe = KubernetesReferences::Probe
|
57
|
+
KubeQuantity = KubernetesReferences::Quantity
|
58
|
+
KubeResourceFieldSelector = KubernetesReferences::ResourceFieldSelector
|
59
|
+
KubeResourceRequirements = KubernetesReferences::ResourceRequirements
|
60
|
+
KubeSeccompProfile = KubernetesReferences::SeccompProfile
|
61
|
+
KubeSecretEnvSource = KubernetesReferences::SecretEnvSource
|
62
|
+
KubeSecretKeySelector = KubernetesReferences::SecretKeySelector
|
63
|
+
KubeSecurityContext = KubernetesReferences::SecurityContext
|
64
|
+
KubeSELinuxOptions = KubernetesReferences::SELinuxOptions
|
65
|
+
KubeTCPSocketAction = KubernetesReferences::TCPSocketAction
|
66
|
+
KubeVolumeDevice = KubernetesReferences::VolumeDevice
|
67
|
+
KubeVolumeMount = KubernetesReferences::VolumeMount
|
68
|
+
KubeWindowsSecurityContextOptions = KubernetesReferences::WindowsSecurityContextOptions
|
data/sig/container.rbs
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
class KubernetesReferences::Container < KubernetesReferences::API
|
2
|
+
attr_accessor args: Array[String]
|
3
|
+
attr_accessor command: Array[String]
|
4
|
+
attr_accessor env: Array[::KubernetesReferences::EnvVar]
|
5
|
+
attr_accessor env_from: Array[::KubernetesReferences::EnvFromSource]
|
6
|
+
attr_accessor image: String
|
7
|
+
attr_accessor image_pull_policy: String
|
8
|
+
attr_accessor lifecycle: ::KubernetesReferences::Lifecycle
|
9
|
+
attr_accessor liveness_probe: ::KubernetesReferences::Probe
|
10
|
+
attr_accessor name: String
|
11
|
+
attr_accessor ports: Array[::KubernetesReferences::ContainerPort]
|
12
|
+
attr_accessor readiness_probe: ::KubernetesReferences::Probe
|
13
|
+
attr_accessor resources: ::KubernetesReferences::ResourceRequirements
|
14
|
+
attr_accessor security_context: ::KubernetesReferences::SecurityContext
|
15
|
+
attr_accessor startup_probe: ::KubernetesReferences::Probe
|
16
|
+
attr_accessor stdin: bool
|
17
|
+
attr_accessor stdin_once: bool
|
18
|
+
attr_accessor termination_message_path: String
|
19
|
+
attr_accessor termination_message_policy: String
|
20
|
+
attr_accessor tty: bool
|
21
|
+
attr_accessor volume_devices: Array[::KubernetesReferences::VolumeDevice]
|
22
|
+
attr_accessor volume_mounts: Array[::KubernetesReferences::VolumeMount]
|
23
|
+
attr_accessor working_dir: String
|
24
|
+
|
25
|
+
def initialize: (untyped obj) -> void
|
26
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
class KubernetesReferences::ContainerPort < KubernetesReferences::API
|
2
|
+
attr_accessor container_port: Integer
|
3
|
+
attr_accessor host_ip: String
|
4
|
+
attr_accessor host_port: Integer
|
5
|
+
attr_accessor name: String
|
6
|
+
attr_accessor protocol: String
|
7
|
+
|
8
|
+
def initialize: (untyped obj) -> void
|
9
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
class KubernetesReferences::EnvFromSource < KubernetesReferences::API
|
2
|
+
attr_accessor config_map_ref: ::KubernetesReferences::ConfigMapEnvSource
|
3
|
+
attr_accessor prefix: String
|
4
|
+
attr_accessor secret_ref: ::KubernetesReferences::SecretEnvSource
|
5
|
+
|
6
|
+
def initialize: (untyped obj) -> void
|
7
|
+
end
|
data/sig/env_var.rbs
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
class KubernetesReferences::EnvVarSource < KubernetesReferences::API
|
2
|
+
attr_accessor config_map_key_ref: ::KubernetesReferences::ConfigMapKeySelector
|
3
|
+
attr_accessor field_ref: ::KubernetesReferences::ObjectFieldSelector
|
4
|
+
attr_accessor resource_field_ref: ::KubernetesReferences::ResourceFieldSelector
|
5
|
+
attr_accessor secret_key_ref: ::KubernetesReferences::SecretKeySelector
|
6
|
+
|
7
|
+
def initialize: (untyped obj) -> void
|
8
|
+
end
|
data/sig/errors.rbs
ADDED
data/sig/exec_action.rbs
ADDED
data/sig/grpc_action.rbs
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
class KubernetesReferences::HTTPGetAction < KubernetesReferences::API
|
2
|
+
attr_accessor host: String
|
3
|
+
attr_accessor http_headers: Array[::KubernetesReferences::HTTPHeader]
|
4
|
+
attr_accessor path: String
|
5
|
+
attr_accessor port: Integer
|
6
|
+
attr_accessor scheme: String
|
7
|
+
|
8
|
+
def initialize: (untyped obj) -> void
|
9
|
+
end
|
data/sig/http_header.rbs
ADDED
data/sig/lifecycle.rbs
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
class KubernetesReferences::LifecycleHandler < KubernetesReferences::API
|
2
|
+
attr_accessor exec: ::KubernetesReferences::ExecAction
|
3
|
+
attr_accessor http_get: ::KubernetesReferences::HTTPGetAction
|
4
|
+
attr_accessor tcp_socket: void
|
5
|
+
|
6
|
+
def initialize: (untyped obj) -> void
|
7
|
+
end
|
data/sig/probe.rbs
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
class KubernetesReferences::Probe < KubernetesReferences::API
|
2
|
+
attr_accessor exec: ::KubernetesReferences::ExecAction
|
3
|
+
attr_accessor failure_threshold: Integer
|
4
|
+
attr_accessor grpc: ::KubernetesReferences::GRPCAction
|
5
|
+
attr_accessor http_get: ::KubernetesReferences::HTTPGetAction
|
6
|
+
attr_accessor initial_delay_seconds: Integer
|
7
|
+
attr_accessor period_seconds: Integer
|
8
|
+
attr_accessor success_threshold: Integer
|
9
|
+
attr_accessor tcp_socket: ::KubernetesReferences::TCPSocketAction
|
10
|
+
attr_accessor termination_grace_period_seconds: Integer
|
11
|
+
attr_accessor timeout_seconds: Integer
|
12
|
+
|
13
|
+
def initialize: (untyped obj) -> void
|
14
|
+
end
|
data/sig/quantity.rbs
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
class KubernetesReferences::SecurityContext < KubernetesReferences::API
|
2
|
+
attr_accessor allow_privilege_escalation: bool
|
3
|
+
attr_accessor capabilities: ::KubernetesReferences::Capabilities
|
4
|
+
attr_accessor privileged: bool
|
5
|
+
attr_accessor proc_mount: String
|
6
|
+
attr_accessor read_only_root_filesystem: bool
|
7
|
+
attr_accessor run_as_group: Integer
|
8
|
+
attr_accessor run_as_non_root: bool
|
9
|
+
attr_accessor run_as_user: Integer
|
10
|
+
attr_accessor selinux_options: ::KubernetesReferences::SELinuxOptions
|
11
|
+
attr_accessor seccomp_profile: ::KubernetesReferences::SeccompProfile
|
12
|
+
attr_accessor windows_options: ::KubernetesReferences::WindowsSecurityContextOptions
|
13
|
+
|
14
|
+
def initialize: (untyped obj) -> void
|
15
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
class KubernetesReferences::VolumeMount < KubernetesReferences::API
|
2
|
+
attr_accessor mount_path: String
|
3
|
+
attr_accessor mount_propagation: String
|
4
|
+
attr_accessor name: String
|
5
|
+
attr_accessor read_only: bool
|
6
|
+
attr_accessor sub_path: String
|
7
|
+
attr_accessor sub_path_expr: String
|
8
|
+
|
9
|
+
def initialize: (untyped obj) -> void
|
10
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
class KubernetesReferences::WindowsSecurityContextOptions < KubernetesReferences::API
|
2
|
+
attr_accessor gmsa_credential_spec: String
|
3
|
+
attr_accessor gmsa_credential_spec_name: String
|
4
|
+
attr_accessor host_process: bool
|
5
|
+
attr_accessor run_as_user_name: String
|
6
|
+
|
7
|
+
def initialize: (untyped obj) -> void
|
8
|
+
end
|
metadata
ADDED
@@ -0,0 +1,117 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kubernetes_references
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kohlrabbit
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-05-30 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: "(wip) implementation of Kubernetes API objects in Ruby, with required
|
14
|
+
types and normalized conventions."
|
15
|
+
email:
|
16
|
+
- gautierfrancois+pgp@ik.me
|
17
|
+
executables: []
|
18
|
+
extensions: []
|
19
|
+
extra_rdoc_files: []
|
20
|
+
files:
|
21
|
+
- ".standard.yml"
|
22
|
+
- Gemfile
|
23
|
+
- LICENSE.txt
|
24
|
+
- README.md
|
25
|
+
- Rakefile
|
26
|
+
- Steepfile
|
27
|
+
- kubernetes_references.gemspec
|
28
|
+
- lib/kubernetes_references.rb
|
29
|
+
- lib/kubernetes_references/api.rb
|
30
|
+
- lib/kubernetes_references/capabilities.rb
|
31
|
+
- lib/kubernetes_references/config_map_env_source.rb
|
32
|
+
- lib/kubernetes_references/config_map_key_selector.rb
|
33
|
+
- lib/kubernetes_references/container.rb
|
34
|
+
- lib/kubernetes_references/container_port.rb
|
35
|
+
- lib/kubernetes_references/env_from_source.rb
|
36
|
+
- lib/kubernetes_references/env_var.rb
|
37
|
+
- lib/kubernetes_references/env_var_source.rb
|
38
|
+
- lib/kubernetes_references/errors.rb
|
39
|
+
- lib/kubernetes_references/exec_action.rb
|
40
|
+
- lib/kubernetes_references/grpc_action.rb
|
41
|
+
- lib/kubernetes_references/http_get_action.rb
|
42
|
+
- lib/kubernetes_references/http_header.rb
|
43
|
+
- lib/kubernetes_references/lifecycle.rb
|
44
|
+
- lib/kubernetes_references/lifecycle_handler.rb
|
45
|
+
- lib/kubernetes_references/object_field_selector.rb
|
46
|
+
- lib/kubernetes_references/probe.rb
|
47
|
+
- lib/kubernetes_references/quantity.rb
|
48
|
+
- lib/kubernetes_references/resource_field_selector.rb
|
49
|
+
- lib/kubernetes_references/resource_requirements.rb
|
50
|
+
- lib/kubernetes_references/seccomp_profile.rb
|
51
|
+
- lib/kubernetes_references/secret_env_source.rb
|
52
|
+
- lib/kubernetes_references/secret_key_selector.rb
|
53
|
+
- lib/kubernetes_references/security_context.rb
|
54
|
+
- lib/kubernetes_references/selinux_options.rb
|
55
|
+
- lib/kubernetes_references/tcp_socket_action.rb
|
56
|
+
- lib/kubernetes_references/version.rb
|
57
|
+
- lib/kubernetes_references/volume_device.rb
|
58
|
+
- lib/kubernetes_references/volume_mount.rb
|
59
|
+
- lib/kubernetes_references/windows_security_context_options.rb
|
60
|
+
- sig/capabilities.rbs
|
61
|
+
- sig/config_map_env_source.rbs
|
62
|
+
- sig/config_map_key_selector.rbs
|
63
|
+
- sig/container.rbs
|
64
|
+
- sig/container_port.rbs
|
65
|
+
- sig/env_from_source.rbs
|
66
|
+
- sig/env_var.rbs
|
67
|
+
- sig/env_var_source.rbs
|
68
|
+
- sig/errors.rbs
|
69
|
+
- sig/exec_action.rbs
|
70
|
+
- sig/grpc_action.rbs
|
71
|
+
- sig/http_get_action.rbs
|
72
|
+
- sig/http_header.rbs
|
73
|
+
- sig/kubernetes_references.rbs
|
74
|
+
- sig/lifecycle.rbs
|
75
|
+
- sig/lifecycle_handler.rbs
|
76
|
+
- sig/object_field_selector.rbs
|
77
|
+
- sig/probe.rbs
|
78
|
+
- sig/quantity.rbs
|
79
|
+
- sig/resource_field_selector.rbs
|
80
|
+
- sig/resource_requirements.rbs
|
81
|
+
- sig/seccomp_profile.rbs
|
82
|
+
- sig/secret_env_source.rbs
|
83
|
+
- sig/secret_key_selector.rbs
|
84
|
+
- sig/security_context.rbs
|
85
|
+
- sig/selinux_options.rbs
|
86
|
+
- sig/tcp_socket_action.rbs
|
87
|
+
- sig/volume_device.rbs
|
88
|
+
- sig/volume_mount.rbs
|
89
|
+
- sig/windows_security_context_options.rbs
|
90
|
+
homepage: https://github.com/Kohlrabbit/kubernetes-references
|
91
|
+
licenses:
|
92
|
+
- MIT
|
93
|
+
metadata:
|
94
|
+
allowed_push_host: https://rubygems.org
|
95
|
+
homepage_uri: https://github.com/Kohlrabbit/kubernetes-references
|
96
|
+
source_code_uri: https://github.com/Kohlrabbit/kubernetes-references
|
97
|
+
changelog_uri: https://github.com/Kohlrabbit/kubernetes-references.
|
98
|
+
post_install_message:
|
99
|
+
rdoc_options: []
|
100
|
+
require_paths:
|
101
|
+
- lib
|
102
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 2.6.0
|
107
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
requirements: []
|
113
|
+
rubygems_version: 3.3.26
|
114
|
+
signing_key:
|
115
|
+
specification_version: 4
|
116
|
+
summary: "(wip) implementation of Kubernetes API objects in Ruby."
|
117
|
+
test_files: []
|