metatron 0.3.3 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a957ab8c4406082d7cd4e20c055991e968ac629fbb2d0fd6b606ac0b4b00360
4
- data.tar.gz: '088237780d68ca7c7b867fd6073c6c40f2e01673eedf8de7e6a5f65cf9e7373d'
3
+ metadata.gz: f35d76b66b19a7de1ec270afaaae2f76563016b5d7bee59c94dad86e1f4953ac
4
+ data.tar.gz: 21bc67ecabd1165246962d9d1af8b909ec678ca3045a3e89b484b512c9dfa6a4
5
5
  SHA512:
6
- metadata.gz: 07d460cf1cd5f67b90b41eb45814f27a0bee7ba9f195b4a5a35c6b107571138f4624850fcd8f0f8b4ab5d29974d13776a13efd481f3731ab9e67215c681c9e75
7
- data.tar.gz: eec628dbb12d330ba052687a5c0942feeb4ca6363bb1bf3c3f75168e0a6f5f991137b27d08860bd8b6e6a8037f932009274c8ff1a9be8a8464606abf030811a6
6
+ metadata.gz: 38c3f0d3358541f4c6349b1729c43cedce6cf65ad087b7306ec37f8da3a9dfb57ee20e57c3568c08376eeede52ae59dc0d3a182a555cc84d000f3c3eb7e7f9de
7
+ data.tar.gz: 721166c1a9da7c2c16c7d84b27f10a18e8ea489eabe406c7063c2277cba6b5799f43dd8afdc7630593f9b1daacdfe8342fc4d86afd89af297c68e30bc8920f97
data/Gemfile.lock CHANGED
@@ -1,19 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- metatron (0.3.3)
4
+ metatron (0.4.0)
5
5
  json (~> 2.6)
6
6
  puma (~> 6.3)
7
- sinatra (~> 2.2)
8
- sinatra-contrib (~> 2.2)
7
+ sinatra (~> 3.1)
8
+ sinatra-contrib (~> 3.1)
9
9
 
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
13
  ast (2.4.2)
14
14
  backport (1.2.0)
15
- base64 (0.1.1)
16
- benchmark (0.2.1)
15
+ benchmark (0.3.0)
17
16
  byebug (11.1.3)
18
17
  diff-lcs (1.5.0)
19
18
  docile (1.4.0)
@@ -26,29 +25,29 @@ GEM
26
25
  kramdown (~> 2.0)
27
26
  language_server-protocol (3.17.0.3)
28
27
  multi_json (1.15.0)
29
- mustermann (2.0.2)
28
+ mustermann (3.0.0)
30
29
  ruby2_keywords (~> 0.0.1)
31
- nio4r (2.5.9)
30
+ nio4r (2.6.0)
32
31
  nokogiri (1.15.4-arm64-darwin)
33
32
  racc (~> 1.4)
34
33
  nokogiri (1.15.4-x86_64-linux)
35
34
  racc (~> 1.4)
36
35
  parallel (1.23.0)
37
- parser (3.2.2.3)
36
+ parser (3.2.2.4)
38
37
  ast (~> 2.4.1)
39
38
  racc
40
- puma (6.3.1)
39
+ puma (6.4.0)
41
40
  nio4r (~> 2.0)
42
- racc (1.7.1)
41
+ racc (1.7.3)
43
42
  rack (2.2.8)
44
- rack-protection (2.2.4)
45
- rack
43
+ rack-protection (3.1.0)
44
+ rack (~> 2.2, >= 2.2.4)
46
45
  rack-test (2.1.0)
47
46
  rack (>= 1.3)
48
47
  rainbow (3.1.1)
49
48
  rake (12.3.3)
50
49
  rbs (2.8.4)
51
- regexp_parser (2.8.1)
50
+ regexp_parser (2.8.2)
52
51
  reverse_markdown (2.1.1)
53
52
  nokogiri
54
53
  rexml (3.2.6)
@@ -65,28 +64,27 @@ GEM
65
64
  diff-lcs (>= 1.2.0, < 2.0)
66
65
  rspec-support (~> 3.12.0)
67
66
  rspec-support (3.12.1)
68
- rubocop (1.56.1)
69
- base64 (~> 0.1.1)
67
+ rubocop (1.57.2)
70
68
  json (~> 2.3)
71
69
  language_server-protocol (>= 3.17.0)
72
70
  parallel (~> 1.10)
73
- parser (>= 3.2.2.3)
71
+ parser (>= 3.2.2.4)
74
72
  rainbow (>= 2.2.2, < 4.0)
75
73
  regexp_parser (>= 1.8, < 3.0)
76
74
  rexml (>= 3.2.5, < 4.0)
77
75
  rubocop-ast (>= 1.28.1, < 2.0)
78
76
  ruby-progressbar (~> 1.7)
79
77
  unicode-display_width (>= 2.4.0, < 3.0)
80
- rubocop-ast (1.29.0)
78
+ rubocop-ast (1.30.0)
81
79
  parser (>= 3.2.1.0)
82
- rubocop-capybara (2.18.0)
80
+ rubocop-capybara (2.19.0)
83
81
  rubocop (~> 1.41)
84
- rubocop-factory_bot (2.23.1)
82
+ rubocop-factory_bot (2.24.0)
85
83
  rubocop (~> 1.33)
86
84
  rubocop-rake (0.6.0)
87
85
  rubocop (~> 1.0)
88
- rubocop-rspec (2.23.2)
89
- rubocop (~> 1.33)
86
+ rubocop-rspec (2.25.0)
87
+ rubocop (~> 1.40)
90
88
  rubocop-capybara (~> 2.17)
91
89
  rubocop-factory_bot (~> 2.22)
92
90
  ruby-progressbar (1.13.0)
@@ -100,16 +98,16 @@ GEM
100
98
  simplecov (~> 0.19)
101
99
  simplecov-html (0.12.3)
102
100
  simplecov_json_formatter (0.1.4)
103
- sinatra (2.2.4)
104
- mustermann (~> 2.0)
105
- rack (~> 2.2)
106
- rack-protection (= 2.2.4)
101
+ sinatra (3.1.0)
102
+ mustermann (~> 3.0)
103
+ rack (~> 2.2, >= 2.2.4)
104
+ rack-protection (= 3.1.0)
107
105
  tilt (~> 2.0)
108
- sinatra-contrib (2.2.4)
106
+ sinatra-contrib (3.1.0)
109
107
  multi_json
110
- mustermann (~> 2.0)
111
- rack-protection (= 2.2.4)
112
- sinatra (= 2.2.4)
108
+ mustermann (~> 3.0)
109
+ rack-protection (= 3.1.0)
110
+ sinatra (= 3.1.0)
113
111
  tilt (~> 2.0)
114
112
  solargraph (0.49.0)
115
113
  backport (~> 1.2)
@@ -127,9 +125,9 @@ GEM
127
125
  thor (~> 1.0)
128
126
  tilt (~> 2.0)
129
127
  yard (~> 0.9, >= 0.9.24)
130
- thor (1.2.2)
131
- tilt (2.2.0)
132
- unicode-display_width (2.4.2)
128
+ thor (1.3.0)
129
+ tilt (2.3.0)
130
+ unicode-display_width (2.5.0)
133
131
  yard (0.9.34)
134
132
 
135
133
  PLATFORMS
@@ -25,9 +25,11 @@ module Metatron
25
25
  labels: { "#{label_namespace}/name": name }.merge(additional_labels)
26
26
  }.merge(formatted_annotations).compact,
27
27
  aggregationRule:,
28
- rules:
28
+ rules: formatted_rules
29
29
  }.compact
30
30
  end
31
+
32
+ def formatted_rules = rules.map { _1.respond_to?(:render) ? _1.render : _1 }
31
33
  end
32
34
  end
33
35
  end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metatron
4
+ module Templates
5
+ # Template for basic Role k8s resource
6
+ class Role < Template
7
+ include Concerns::Annotated
8
+ include Concerns::Namespaced
9
+
10
+ attr_accessor :rules
11
+
12
+ def initialize(name)
13
+ super(name)
14
+ @api_version = "rbac.authorization.k8s.io/v1"
15
+ @rules = []
16
+ end
17
+
18
+ def render
19
+ {
20
+ apiVersion:,
21
+ kind:,
22
+ metadata: {
23
+ name:,
24
+ labels: { "#{label_namespace}/name": name }.merge(additional_labels)
25
+ }.merge(formatted_annotations).merge(formatted_namespace).compact,
26
+ rules: formatted_rules
27
+ }.compact
28
+ end
29
+
30
+ def formatted_rules = rules.map { _1.respond_to?(:render) ? _1.render : _1 }
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metatron
4
+ module Templates
5
+ # Template for basic RoleBinding k8s resource
6
+ class RoleBinding < Template
7
+ include Concerns::Annotated
8
+ include Concerns::Namespaced
9
+
10
+ attr_accessor :role_ref, :subjects, :role
11
+
12
+ alias roleRef role_ref
13
+
14
+ def initialize(name, role)
15
+ super(name)
16
+ @api_version = "rbac.authorization.k8s.io/v1"
17
+ @role = role
18
+ @role_ref = {
19
+ kind: "Role",
20
+ name: role.respond_to?(:name) ? role.name : role,
21
+ apiGroup: "rbac.authorization.k8s.io"
22
+ }
23
+ @subjects = []
24
+ end
25
+
26
+ def render
27
+ {
28
+ apiVersion:,
29
+ kind:,
30
+ metadata: {
31
+ name:,
32
+ labels: { "#{label_namespace}/name": name }.merge(additional_labels)
33
+ }.merge(formatted_annotations).merge(formatted_namespace).compact,
34
+ roleRef:,
35
+ subjects:
36
+ }.compact
37
+ end
38
+ end
39
+ end
40
+ end
@@ -3,7 +3,7 @@
3
3
  module Metatron
4
4
  VERSION = [
5
5
  0, # major
6
- 3, # minor
7
- 3 # patch
6
+ 4, # minor
7
+ 0 # patch
8
8
  ].join(".")
9
9
  end
data/lib/metatron.rb CHANGED
@@ -41,6 +41,8 @@ require "metatron/templates/ingress"
41
41
  require "metatron/templates/namespace"
42
42
  require "metatron/templates/persistent_volume_claim"
43
43
  require "metatron/templates/replica_set"
44
+ require "metatron/templates/role"
45
+ require "metatron/templates/role_binding"
44
46
  require "metatron/templates/secret"
45
47
  require "metatron/templates/service"
46
48
  require "metatron/templates/service_account"
data/metatron.gemspec CHANGED
@@ -28,8 +28,8 @@ Gem::Specification.new do |spec|
28
28
 
29
29
  spec.add_runtime_dependency "json", "~> 2.6"
30
30
  spec.add_runtime_dependency "puma", "~> 6.3"
31
- spec.add_runtime_dependency "sinatra", "~> 2.2"
32
- spec.add_runtime_dependency "sinatra-contrib", "~> 2.2"
31
+ spec.add_runtime_dependency "sinatra", "~> 3.1"
32
+ spec.add_runtime_dependency "sinatra-contrib", "~> 3.1"
33
33
 
34
34
  spec.add_development_dependency "bundler", "~> 2.3"
35
35
  spec.add_development_dependency "byebug", "~> 11"
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.3.3
4
+ version: 0.4.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-23 00:00:00.000000000 Z
11
+ date: 2023-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '2.2'
47
+ version: '3.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '2.2'
54
+ version: '3.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: sinatra-contrib
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.2'
61
+ version: '3.1'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.2'
68
+ version: '3.1'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -272,6 +272,8 @@ files:
272
272
  - lib/metatron/templates/persistent_volume_claim.rb
273
273
  - lib/metatron/templates/pod.rb
274
274
  - lib/metatron/templates/replica_set.rb
275
+ - lib/metatron/templates/role.rb
276
+ - lib/metatron/templates/role_binding.rb
275
277
  - lib/metatron/templates/secret.rb
276
278
  - lib/metatron/templates/service.rb
277
279
  - lib/metatron/templates/service_account.rb