metatron 0.3.0 → 0.3.2

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: 7cc8e8eb267de1f2e8c3a3572685596b1d223ecd6e05aaaf62e26d3bf83f4622
4
- data.tar.gz: d3b17e9f96f220c51a72552a2c6f136095d4d4d5eb01d3cee7e87b3f1956f69f
3
+ metadata.gz: 6ccfd1e08895f074e8acfb5f5f5d5bea896b3bc2b721cf554bf63331fd678653
4
+ data.tar.gz: 2d51b181787cdd3c68d83cd69dbf7475e973cdd85edafd458a59a324328a6d9a
5
5
  SHA512:
6
- metadata.gz: 5ff99ad79b24dd6e223953d28e446175137cb95aebe46c8f20a05e723f4a994815a8d33f9a2df69e6dfd2435b9784c67565d61c52ae5a768e3b1a026544acc0d
7
- data.tar.gz: a844971834381acf609d2ab81321788b957916e044e5d679a33b1df0dd958956315b41f93f3c0f0814e61a3cf6f1d3921d38785e1af66c22760d9bb9c7a8e5dc
6
+ metadata.gz: 68e7e4f205727a2224b1c3475a083a0f0977fe4f55bebb13791492e1fdf314f8ac4201296acccd0d3c02043d19bf496b90054df11d20938f519fcc7c843d52e9
7
+ data.tar.gz: 855ef7826fdd9e9a8a1fd3cc657acec1978dde48d8172b352cf8664953edd1b4c769c106f1e0dc22c2378a2c47b2fb6a3440a0078a253f03e0d1983495d9e278
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- metatron (0.3.0)
4
+ metatron (0.3.2)
5
5
  json (~> 2.6)
6
6
  puma (~> 6.3)
7
7
  sinatra (~> 2.2)
@@ -9,9 +9,21 @@ module Metatron
9
9
  end
10
10
 
11
11
  post "/" do
12
+ # TODO: move this to Sinatra's `etag` helper when Metacontroller is RFC compliant
13
+ if (provided_etag = calculate_etag) &&
14
+ (match_header = request.env["HTTP_IF_NONE_MATCH"]) &&
15
+ match_header.split(/,\s?/).include?("\"#{provided_etag}\"")
16
+ halt 304
17
+ end
18
+
19
+ # If the etag is available, use it, otherwise proceed with the sync
20
+ headers "ETag" => "\"#{provided_etag}\"" if provided_etag
12
21
  data = sync
13
22
  data[:children] = data[:children]&.map { |c| c.respond_to?(:render) ? c.render : c }
14
23
  halt(data.to_json)
15
24
  end
25
+
26
+ def calculate_etag = nil
27
+ def sync = raise NotImplementedError
16
28
  end
17
29
  end
@@ -6,13 +6,15 @@ module Metatron
6
6
  class Container
7
7
  attr_accessor :name, :image, :command, :args, :env, :envfrom, :resources, :volume_mounts,
8
8
  :image_pull_policy, :lifecycle, :probes, :security_context, :ports,
9
- :stdin, :tty
9
+ :stdin, :tty, :termination_message_path, :termination_message_policy
10
10
 
11
11
  alias imagePullPolicy image_pull_policy
12
12
  alias volumeMounts volume_mounts
13
13
  alias securityContext security_context
14
14
  alias environment env
15
15
  alias envFrom envfrom
16
+ alias terminationMessagePath termination_message_path
17
+ alias terminationMessagePolicy termination_message_policy
16
18
 
17
19
  def initialize(name, image = "gcr.io/google_containers/pause")
18
20
  @name = name
@@ -27,6 +29,8 @@ module Metatron
27
29
  @probes = {}
28
30
  @stdin = true
29
31
  @tty = true
32
+ @termination_message_path = nil
33
+ @termination_message_policy = nil
30
34
  end
31
35
 
32
36
  def render # rubocop:disable Metrics/AbcSize
@@ -36,7 +40,9 @@ module Metatron
36
40
  image:,
37
41
  imagePullPolicy:,
38
42
  stdin:,
39
- tty:
43
+ tty:,
44
+ terminationMessagePath:,
45
+ terminationMessagePolicy:
40
46
  }.merge(probes)
41
47
  .merge(formatted_resources)
42
48
  .merge(formatted_environment)
@@ -4,6 +4,6 @@ module Metatron
4
4
  VERSION = [
5
5
  0, # major
6
6
  3, # minor
7
- 0 # patch
7
+ 2 # patch
8
8
  ].join(".")
9
9
  end
data/lib/metatron.rb CHANGED
@@ -33,6 +33,7 @@ require "metatron/templates/pod"
33
33
  require "metatron/templates/job"
34
34
  require "metatron/templates/config_map"
35
35
  require "metatron/templates/cluster_role"
36
+ require "metatron/templates/cluster_role_binding"
36
37
  require "metatron/templates/cron_job"
37
38
  require "metatron/templates/daemon_set"
38
39
  require "metatron/templates/deployment"
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.0
4
+ version: 0.3.2
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-21 00:00:00.000000000 Z
11
+ date: 2023-08-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json