metatron 0.2.7 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 36e8e6c44406c821d01c13c564acf765719ac6ac2572053afa5d4bd5b33df33f
4
- data.tar.gz: 3378c577112bdc28cfbdf4e33c6a5a739434ba4e38312a4147f574ca09b29139
3
+ metadata.gz: 7cc8e8eb267de1f2e8c3a3572685596b1d223ecd6e05aaaf62e26d3bf83f4622
4
+ data.tar.gz: d3b17e9f96f220c51a72552a2c6f136095d4d4d5eb01d3cee7e87b3f1956f69f
5
5
  SHA512:
6
- metadata.gz: a3857663d6044c885a46e1ff3bf5017281f4202273516bacb7a38e1aaa9cd84d689221c700fb4d4f55316f3b55eec379134eae12ba9d7727e233f051b9da9bb7
7
- data.tar.gz: dddb6a6dda8d5a54b44c14cc2579f570e099033e22b085a560827ca60344b2d8d3ef331cd9660526c358e3c80ed2c9f2dba309b8707b44f29f75e1b365854809
6
+ metadata.gz: 5ff99ad79b24dd6e223953d28e446175137cb95aebe46c8f20a05e723f4a994815a8d33f9a2df69e6dfd2435b9784c67565d61c52ae5a768e3b1a026544acc0d
7
+ data.tar.gz: a844971834381acf609d2ab81321788b957916e044e5d679a33b1df0dd958956315b41f93f3c0f0814e61a3cf6f1d3921d38785e1af66c22760d9bb9c7a8e5dc
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- metatron (0.2.7)
4
+ metatron (0.3.0)
5
5
  json (~> 2.6)
6
6
  puma (~> 6.3)
7
7
  sinatra (~> 2.2)
@@ -150,4 +150,4 @@ DEPENDENCIES
150
150
  yard (~> 0.9)
151
151
 
152
152
  BUNDLED WITH
153
- 2.4.17
153
+ 2.4.19
@@ -34,20 +34,25 @@ module Metatron
34
34
  @initializers ||= []
35
35
  end
36
36
 
37
- private
37
+ def self.nearest_metatron_ancestor
38
+ return self if metatron_template_class?
38
39
 
39
- def run_initializers
40
- self.class.initializers.each { |initializer| send(initializer.to_sym) }
40
+ ancestors.find { _1.respond_to?(:metatron_template_class?) && _1.metatron_template_class? }
41
41
  end
42
42
 
43
- def find_kind
44
- return self.class.name.split("::").last if metatron_template?
43
+ def self.metatron_template_class?
44
+ return true if name == "Metatron::Template"
45
+ return false if name.start_with?("Metatron::Templates::Concerns")
45
46
 
46
- self.class.ancestors.find { |klass| metatron_template?(klass) }.name.split("::").last
47
+ name.start_with?("Metatron::Templates::")
47
48
  end
48
49
 
49
- def metatron_template?(klass = self)
50
- klass.name.include?("Metatron::Templates") && !klass.name.include?("Concerns")
50
+ private
51
+
52
+ def run_initializers
53
+ self.class.nearest_metatron_ancestor.initializers.each { send(_1.to_sym) }
51
54
  end
55
+
56
+ def find_kind = self.class.nearest_metatron_ancestor.name.split("::").last
52
57
  end
53
58
  end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metatron
4
+ module Templates
5
+ # Template for basic ClusterRole k8s resource
6
+ class ClusterRole < Template
7
+ include Concerns::Annotated
8
+
9
+ attr_accessor :rules, :aggregation_rule
10
+
11
+ alias aggregationRule aggregation_rule
12
+
13
+ def initialize(name)
14
+ super(name)
15
+ @api_version = "rbac.authorization.k8s.io/v1"
16
+ @rules = []
17
+ end
18
+
19
+ def render
20
+ {
21
+ apiVersion:,
22
+ kind:,
23
+ metadata: {
24
+ name:,
25
+ labels: { "#{label_namespace}/name": name }.merge(additional_labels)
26
+ }.merge(formatted_annotations).compact,
27
+ aggregationRule:,
28
+ rules:
29
+ }.compact
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metatron
4
+ module Templates
5
+ # Template for basic ClusterRoleBinding k8s resource
6
+ class ClusterRoleBinding < Template
7
+ include Concerns::Annotated
8
+
9
+ attr_accessor :role_ref, :subjects, :role
10
+
11
+ alias roleRef role_ref
12
+
13
+ def initialize(name, role)
14
+ super(name)
15
+ @api_version = "rbac.authorization.k8s.io/v1"
16
+ @role = role
17
+ @role_ref = {
18
+ kind: "ClusterRole",
19
+ name: role.respond_to?(:name) ? role.name : role,
20
+ apiGroup: "rbac.authorization.k8s.io"
21
+ }
22
+ @subjects = []
23
+ end
24
+
25
+ def render
26
+ {
27
+ apiVersion:,
28
+ kind:,
29
+ metadata: {
30
+ name:,
31
+ labels: { "#{label_namespace}/name": name }.merge(additional_labels)
32
+ }.merge(formatted_annotations).compact,
33
+ roleRef:,
34
+ subjects:
35
+ }.compact
36
+ end
37
+ end
38
+ end
39
+ end
@@ -3,7 +3,7 @@
3
3
  module Metatron
4
4
  VERSION = [
5
5
  0, # major
6
- 2, # minor
7
- 7 # patch
6
+ 3, # minor
7
+ 0 # patch
8
8
  ].join(".")
9
9
  end
data/lib/metatron.rb CHANGED
@@ -29,15 +29,17 @@ require "metatron/templates/concerns/annotated"
29
29
  require "metatron/templates/concerns/namespaced"
30
30
  require "metatron/templates/concerns/pod_producer"
31
31
  require "metatron/templates/container"
32
+ require "metatron/templates/pod"
32
33
  require "metatron/templates/job"
34
+ require "metatron/templates/config_map"
35
+ require "metatron/templates/cluster_role"
33
36
  require "metatron/templates/cron_job"
34
- require "metatron/templates/pod"
35
- require "metatron/templates/persistent_volume_claim"
37
+ require "metatron/templates/daemon_set"
36
38
  require "metatron/templates/deployment"
37
39
  require "metatron/templates/ingress"
38
40
  require "metatron/templates/namespace"
41
+ require "metatron/templates/persistent_volume_claim"
39
42
  require "metatron/templates/replica_set"
40
- require "metatron/templates/config_map"
41
43
  require "metatron/templates/secret"
42
44
  require "metatron/templates/service"
43
45
  require "metatron/templates/service_account"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metatron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Gnagy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-03 00:00:00.000000000 Z
11
+ date: 2023-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -256,6 +256,8 @@ files:
256
256
  - lib/metatron/controllers/ping.rb
257
257
  - lib/metatron/sync_controller.rb
258
258
  - lib/metatron/template.rb
259
+ - lib/metatron/templates/cluster_role.rb
260
+ - lib/metatron/templates/cluster_role_binding.rb
259
261
  - lib/metatron/templates/concerns/annotated.rb
260
262
  - lib/metatron/templates/concerns/namespaced.rb
261
263
  - lib/metatron/templates/concerns/pod_producer.rb