metatron 0.2.6 → 0.2.8

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: e64a202aa6679076cdd620c17c7885e0f01b34af6b8d0fcc07051ff26f0b9489
4
- data.tar.gz: c470c047b7cb57a770d372b988a8135ca06139bc730dfafca01b8dc759f15df0
3
+ metadata.gz: f308e72dd77b3d49526080eec9ad9de69365d4892b0fa4b113530d42ecf3305b
4
+ data.tar.gz: 5501df686f100f401984f103c42ebbe41f93eb2d8fb992f19cd2231a94175fa2
5
5
  SHA512:
6
- metadata.gz: 4708fb55b631916c16214f436b7d7577dece26c66cf7dab478a5d8a76a711b50d71fd267bfe72719eb999411377eb5190bb5b42874dbe153ee05def637321eef
7
- data.tar.gz: a5ee6b2437fb07fcbb5a3bd17859ed73e5dbd25af935ca6dcfff6568f30eed7a520b711065e54db978489ec7d91082b9d1cefa1119f68db9ad42c79f2966c74a
6
+ metadata.gz: 75604561c430cbdabe5093c7cc593c8e8c145b0bae8a0427d60e26ac368a27f3794beb3e956a0458ad95b90c1ac76c886896381fcd845120645b97d2dec48c86
7
+ data.tar.gz: ae099c61283a7b99b22e5f76a48f4ce24847f2ef8d50e5b477a00bc68a5f57654a5349ba63127451d7c9c43ba1db7cef4be31e110227db00e19d8a2143c570b0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- metatron (0.2.6)
4
+ metatron (0.2.8)
5
5
  json (~> 2.6)
6
6
  puma (~> 6.3)
7
7
  sinatra (~> 2.2)
@@ -3,7 +3,7 @@
3
3
  module Metatron
4
4
  # Base class for templating Kubernetes resources
5
5
  class Template
6
- attr_accessor :api_version, :name
6
+ attr_accessor :api_version, :name, :additional_labels
7
7
  attr_reader :kind, :label_namespace
8
8
 
9
9
  class << self
@@ -19,6 +19,7 @@ module Metatron
19
19
  @label_namespace = self.class.label_namespace
20
20
  @api_version = "v1"
21
21
  @kind = find_kind
22
+ @additional_labels = {}
22
23
  run_initializers
23
24
  end
24
25
 
@@ -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
@@ -8,7 +8,7 @@ module Metatron
8
8
  def self.included(base) # rubocop:disable Metrics/MethodLength
9
9
  # base.extend ClassMethods
10
10
  base.class_eval do
11
- attr_accessor :active_deadline_seconds, :additional_labels, :additional_pod_labels,
11
+ attr_accessor :active_deadline_seconds, :additional_pod_labels,
12
12
  :affinity, :automount_service_account_token, :containers,
13
13
  :dns_policy, :enable_service_links, :hostname, :host_ipc, :host_network,
14
14
  :host_pid, :image_pull_secrets, :init_containers, :node_selector,
@@ -39,7 +39,6 @@ module Metatron
39
39
  end
40
40
 
41
41
  def pod_producer_initialize
42
- @additional_labels = {}
43
42
  @additional_pod_labels = {}
44
43
  @affinity = {}
45
44
  @containers = []
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metatron
4
+ module Templates
5
+ # The ServiceAccount Kubernetes resource
6
+ class ServiceAccount < Template
7
+ include Concerns::Annotated
8
+ include Concerns::Namespaced
9
+
10
+ attr_accessor :automount_service_account_token
11
+
12
+ alias automountServiceAccountToken automount_service_account_token
13
+
14
+ def render
15
+ {
16
+ apiVersion:,
17
+ kind:,
18
+ automountServiceAccountToken:,
19
+ metadata: {
20
+ name:,
21
+ labels: { "#{label_namespace}/name": name }.merge(additional_labels)
22
+ }.merge(formatted_annotations).merge(formatted_namespace).compact
23
+ }.compact
24
+ end
25
+ end
26
+ end
27
+ end
@@ -4,6 +4,6 @@ module Metatron
4
4
  VERSION = [
5
5
  0, # major
6
6
  2, # minor
7
- 6 # patch
7
+ 8 # patch
8
8
  ].join(".")
9
9
  end
data/lib/metatron.rb CHANGED
@@ -29,17 +29,20 @@ 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"
45
+ require "metatron/templates/service_account"
43
46
  require "metatron/templates/stateful_set"
44
47
  require "metatron/controller"
45
48
  require "metatron/sync_controller"
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.6
4
+ version: 0.2.8
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-02 00:00:00.000000000 Z
11
+ date: 2023-08-05 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
@@ -272,6 +274,7 @@ files:
272
274
  - lib/metatron/templates/replica_set.rb
273
275
  - lib/metatron/templates/secret.rb
274
276
  - lib/metatron/templates/service.rb
277
+ - lib/metatron/templates/service_account.rb
275
278
  - lib/metatron/templates/stateful_set.rb
276
279
  - lib/metatron/version.rb
277
280
  - metatron.gemspec