metatron 0.8.6 → 0.8.7

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: 75b1820be1a5acfc0dbcbb3e0d307edbedcbff8797ccae1ab80a2cdc46e3f035
4
- data.tar.gz: 627d05e8f91bdc41ca047fe454778f58f96e402965f434636002b03ef1f29c10
3
+ metadata.gz: 52d22498fe02fb79914a0d75e7fc7bc278fdd03d2d225b56c9e839bae4860dbf
4
+ data.tar.gz: d1268b434bf31755a53d75fe9d837ab1e963f39343f1447d697b585058f219e2
5
5
  SHA512:
6
- metadata.gz: 505e005541ceb62d1e196599149e6a95b5aad312b3ed5bbf1556a0801212290536d23ed5e4248288ac749bbefd16b818b20d32c32329ad6d8049a14116ac6d72
7
- data.tar.gz: 3c7df31247195f277d1150ba8c2cfa2ea2f72f57a5472458a0dbe7deccb5f5aeb2a9c0736897c8839893aded7939fd33195bd492c82645a065c300dbfcd039c2
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.6)
4
+ metatron (0.8.7)
5
5
  json (~> 2.6)
6
6
  rack (>= 2.2.8, < 4)
7
7
 
@@ -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.6"
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.6
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: 2025-01-18 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