metatron 0.8.5 → 0.8.7

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: faef618cfa67ca9e218271e74b7135b8f89f805d46a1627ccba653d52db2d3fb
4
- data.tar.gz: b58df597d9eba50af527ebb329f5f6eb385df66cf833b36abe93b0a9847c3189
3
+ metadata.gz: 52d22498fe02fb79914a0d75e7fc7bc278fdd03d2d225b56c9e839bae4860dbf
4
+ data.tar.gz: d1268b434bf31755a53d75fe9d837ab1e963f39343f1447d697b585058f219e2
5
5
  SHA512:
6
- metadata.gz: 8bf5cb244595713806bfe38687d4c1e7e33d577828abdd57e00b42663b22712b5065108a2f70f39ae32e9774bb3079f1b6eceb10ba3eb344c6771ffa0dd75e52
7
- data.tar.gz: 15c269a28b63efaa267450b850ba3edf59ee709e28c5d6f64588f4026b557d28113d90d152caf7b0b8e55ac4bfa19c5f707e276fe021dd3749524bf681499614
6
+ metadata.gz: 4c293e9bb179a67cff17d6323bec2075222b5d3ab9af292ad751e660a1a3c9c4e4941fc2ee0f3654cf472ec7adcc214738c6bc491050606e2f03f70574a91613
7
+ data.tar.gz: 3c8e6a36034dfd4212fdbaadcd4a8b3e34b38d9e7be6d156768dd3ecb55f1c82023acd5699ccb532696def55de73f6f48d21d22657e1f47e2710ee44e00cd6b2
data/.rubocop.yml CHANGED
@@ -35,6 +35,9 @@ Metrics/ClassLength:
35
35
  Exclude:
36
36
  - 'spec/**/*_spec.rb'
37
37
 
38
+ Metrics/ParameterLists:
39
+ Max: 6
40
+
38
41
  Gemspec/RequireMFA:
39
42
  Enabled: false
40
43
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- metatron (0.8.5)
4
+ metatron (0.8.7)
5
5
  json (~> 2.6)
6
6
  rack (>= 2.2.8, < 4)
7
7
 
@@ -16,28 +16,28 @@ GEM
16
16
  docile (1.4.1)
17
17
  e2mmap (0.1.0)
18
18
  jaro_winkler (1.6.0)
19
- json (2.9.0)
19
+ json (2.9.1)
20
20
  kramdown (2.5.1)
21
21
  rexml (>= 3.3.9)
22
22
  kramdown-parser-gfm (1.1.0)
23
23
  kramdown (~> 2.0)
24
24
  language_server-protocol (3.17.0.3)
25
- nokogiri (1.17.2-arm64-darwin)
25
+ nokogiri (1.18.1-arm64-darwin)
26
26
  racc (~> 1.4)
27
- nokogiri (1.17.2-x86_64-linux)
27
+ nokogiri (1.18.1-x86_64-linux-gnu)
28
28
  racc (~> 1.4)
29
29
  parallel (1.26.3)
30
- parser (3.3.6.0)
30
+ parser (3.3.7.0)
31
31
  ast (~> 2.4.1)
32
32
  racc
33
33
  racc (1.8.1)
34
34
  rack (3.1.8)
35
- rack-test (2.1.0)
35
+ rack-test (2.2.0)
36
36
  rack (>= 1.3)
37
37
  rainbow (3.1.1)
38
38
  rake (12.3.3)
39
39
  rbs (2.8.4)
40
- regexp_parser (2.9.3)
40
+ regexp_parser (2.10.0)
41
41
  reverse_markdown (2.1.1)
42
42
  nokogiri
43
43
  rexml (3.4.0)
@@ -54,7 +54,7 @@ GEM
54
54
  diff-lcs (>= 1.2.0, < 2.0)
55
55
  rspec-support (~> 3.13.0)
56
56
  rspec-support (3.13.2)
57
- rubocop (1.69.2)
57
+ rubocop (1.70.0)
58
58
  json (~> 2.3)
59
59
  language_server-protocol (>= 3.17.0)
60
60
  parallel (~> 1.10)
@@ -106,8 +106,8 @@ GEM
106
106
  tilt (~> 2.0)
107
107
  yard (~> 0.9, >= 0.9.24)
108
108
  thor (1.3.2)
109
- tilt (2.4.0)
110
- unicode-display_width (3.1.2)
109
+ tilt (2.6.0)
110
+ unicode-display_width (3.1.4)
111
111
  unicode-emoji (~> 4.0, >= 4.0.4)
112
112
  unicode-emoji (4.0.4)
113
113
  yard (0.9.37)
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "json" unless defined? JSON # allow for JSON to be loaded elsewhere
4
+
3
5
  module Metatron
4
6
  # Base class for API services
5
7
  class Controller
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Metatron
4
+ module Templates
5
+ # The LimitRange Kubernetes resource
6
+ class LimitRange < Template
7
+ # Limit is an internal class used to represent the limits in a LimitRange resource,
8
+ # and to provide a consistent interface for rendering them. It is not intended to be
9
+ # used outside of this class. Eventually, it may be used to provide validation for
10
+ # the limits.
11
+ class Limit
12
+ attr_accessor :type, :default, :default_request, :max, :max_limit_request_ratio, :min
13
+
14
+ alias defaultRequest default_request
15
+ alias maxLimitRequestRatio max_limit_request_ratio
16
+
17
+ class << self
18
+ def to_limit(limit)
19
+ limit.is_a?(Limit) ? limit : new(**limit)
20
+ end
21
+ end
22
+
23
+ def initialize(type:, default: nil, default_request: nil, max: nil,
24
+ max_limit_request_ratio: nil, min: nil)
25
+ @type = type
26
+ @default = default
27
+ @default_request = default_request
28
+ @max = max
29
+ @max_limit_request_ratio = max_limit_request_ratio
30
+ @min = min
31
+ end
32
+
33
+ def render
34
+ {
35
+ type:,
36
+ default:,
37
+ defaultRequest:,
38
+ max:,
39
+ maxLimitRequestRatio:,
40
+ min:
41
+ }.compact
42
+ end
43
+ end
44
+
45
+ include Concerns::Annotated
46
+ include Concerns::Namespaced
47
+
48
+ attr_accessor :limits
49
+
50
+ def initialize(name, limits = [])
51
+ super(name)
52
+ @limits = limits
53
+ end
54
+
55
+ def render
56
+ {
57
+ apiVersion:,
58
+ kind:,
59
+ metadata: {
60
+ name:,
61
+ labels: base_labels.merge(additional_labels)
62
+ }.merge(formatted_annotations).merge(formatted_namespace),
63
+ spec: formatted_limits
64
+ }.compact
65
+ end
66
+
67
+ private
68
+
69
+ def formatted_limits
70
+ return {} if limits.empty?
71
+
72
+ { limits: limits.map { Limit.to_limit(_1).render } }
73
+ end
74
+ end
75
+ end
76
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Metatron
4
- VERSION = "0.8.5"
4
+ VERSION = "0.8.7"
5
5
  end
data/lib/metatron.rb CHANGED
@@ -31,6 +31,7 @@ require "metatron/templates/cron_job"
31
31
  require "metatron/templates/daemon_set"
32
32
  require "metatron/templates/deployment"
33
33
  require "metatron/templates/ingress"
34
+ require "metatron/templates/limit_range"
34
35
  require "metatron/templates/namespace"
35
36
  require "metatron/templates/network_policy"
36
37
  require "metatron/templates/persistent_volume_claim"
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.8.5
4
+ version: 0.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Gnagy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-16 00:00:00.000000000 Z
11
+ date: 2025-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -250,6 +250,7 @@ files:
250
250
  - lib/metatron/templates/deployment.rb
251
251
  - lib/metatron/templates/ingress.rb
252
252
  - lib/metatron/templates/job.rb
253
+ - lib/metatron/templates/limit_range.rb
253
254
  - lib/metatron/templates/namespace.rb
254
255
  - lib/metatron/templates/network_policy.rb
255
256
  - lib/metatron/templates/persistent_volume_claim.rb