kube_cluster 0.4.6 → 0.4.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: ba5822593c1d3e5d110c57b02c484b0f21b3abe5d78a1d7ecfebfa53060b51e0
4
- data.tar.gz: '079d271449f119800d0dcfab155fb4abdc12805d042a88b773c9916d7e797f88'
3
+ metadata.gz: b3ae1df20de1bad959340b6e45abd4eeeaf39c1f3aee0c2880782f6181b1d2c2
4
+ data.tar.gz: 66652d284391230c060b508ea205fea8c0faee1a0a1438143836b47f52f21a01
5
5
  SHA512:
6
- metadata.gz: d8be0266b451508ba21453bf47afd68d2fc2a8e0f208c5e6e4e46a872bc2a7e4250ab2aa9040a7a9c715c6252cca9019717240d472c712a3da05082c30867653
7
- data.tar.gz: 344e1a830c357cd2bbd5e0a30608ae7478c36ef85d6e43c1e7ab5ab26d67245d340d30cc1f48c3a9e1cd4f8729676752cd44ef97d200dd42a3c10fc0504696cf
6
+ metadata.gz: 80dbc3f35777b53fa93efcf28201604e85707f73c8cbd6f1b455d0c59f504b481afa3f7e7ee36037ee57044c782722d142a7142de7691b5083c81f9501d5b839
7
+ data.tar.gz: 29d3237e925940b312f09935eba58f6f22cd9e3b6f2fcc7a4fa1e422e352aa925ec80a7c10c91a61516e8169c4323cf498c0f53061fccd78a8b3dc988e1f0405
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- kube_cluster (0.4.6)
4
+ kube_cluster (0.4.7)
5
5
  kube_kubectl (~> 2.0.9)
6
6
  kube_schema (~> 1.4.3)
7
7
  scampi (~> 0.1)
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bundler/setup"
4
+ require "kube/cluster"
5
+
3
6
  module Kube
4
7
  module Cluster
5
8
  class Connection
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bundler/setup"
4
+ require "kube/cluster"
5
+
3
6
  module Kube
4
7
  module Cluster
5
8
  class Instance
@@ -1,3 +1,14 @@
1
+ <!--
2
+
3
+ Mate... I have no idea what the fuck this file is..... or who made it....
4
+ I really can't be arsed to read it either....
5
+
6
+ Someone please read it and let me know what the fuck it is...
7
+
8
+ -- Nathan K. 2026-05-01
9
+
10
+ -->
11
+
1
12
  # Resource Extensions
2
13
 
3
14
  Modules in this directory are dynamically mixed into `Kube::Cluster::Resource` instances at initialization time (via `extend`).
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bundler/setup"
4
+ require "kube/cluster"
5
+
3
6
  module Kube
4
7
  module Cluster
5
8
  class Resource < Kube::Schema::Resource
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "bundler/setup"
4
+ require "kube/cluster"
5
+
3
6
  require "json"
4
7
  require "open3"
5
8
 
@@ -1,8 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "resource/dirty_tracking"
4
- require_relative "resource/persistence"
5
- require_relative "resource/extensions/custom_resource_definition"
3
+ #require_relative "resource/dirty_tracking"
4
+ #require_relative "resource/persistence"
5
+ #require_relative "resource/extensions/custom_resource_definition"
6
+ require "bundler/setup"
7
+ require "kube/cluster"
6
8
 
7
9
  module Kube
8
10
  module Cluster
@@ -52,7 +54,25 @@ module Kube
52
54
 
53
55
  # Build a new resource of the same schema subclass from a hash.
54
56
  def rebuild(hash = {})
55
- self.class.new(**hash)
57
+ # self.class.new(**hash) would throw an error if you do something like this:
58
+ #
59
+ # class ExampleServiceSubclass < Kube::Cluster["Service"]
60
+ # def initialize(name:, port:, **options, &block)
61
+ # super() {
62
+ # metadata.name = name
63
+ # metadata.labels = { "app" => name }
64
+ # spec.selector = { "app" => name }
65
+ # spec.ports = [{ port: port, targetPort: port, protocol: "TCP" }]
66
+ # instance_exec(&block) if block_given?
67
+ # }
68
+ # end
69
+ # end
70
+ #
71
+ # Therefore we must make sure that we're rebuilding from the
72
+ # initial schema object instead...
73
+ #
74
+ Kube::Schema[hash.delete(:kind).to_s].new(**hash)
75
+ #self.class.new(**hash)
56
76
  end
57
77
 
58
78
  # Read a label value from the resource.
@@ -106,3 +126,25 @@ module Kube
106
126
  end
107
127
  end
108
128
  end
129
+
130
+ test do
131
+ class ExampleServiceSubclass < Kube::Cluster["Service"]
132
+ def initialize(name:, port:, **options, &block)
133
+ super() {
134
+ metadata.name = name
135
+ metadata.labels = { "app" => name }
136
+ spec.selector = { "app" => name }
137
+ spec.ports = [{ port: port, targetPort: port, protocol: "TCP" }]
138
+
139
+ instance_exec(&block) if block_given?
140
+ }
141
+
142
+ end
143
+ end
144
+
145
+ it "rebuilds properly" do
146
+ ExampleServiceSubclass.new(name: "example-service", port: 3000).tap do |service|
147
+ lambda{ service.rebuild(**service.to_h) }.should.not.raise
148
+ end
149
+ end
150
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kube
4
4
  module Cluster
5
- VERSION = "0.4.6"
5
+ VERSION = "0.4.7"
6
6
  end
7
7
  end
data/lib/kube/cluster.rb CHANGED
@@ -3,12 +3,6 @@
3
3
  require "kube/schema"
4
4
  require_relative "../kube/errors"
5
5
  require_relative "cluster/version"
6
- require_relative "cluster/connection"
7
- require_relative "cluster/instance"
8
- require_relative "cluster/resource"
9
- require_relative "cluster/container"
10
- require_relative "cluster/middleware"
11
- require_relative "cluster/manifest"
12
6
  require 'kube/ctl'
13
7
  require_relative 'helm/repo'
14
8
 
@@ -46,8 +40,11 @@ module Kube
46
40
  end
47
41
  end
48
42
 
49
- test do
50
- it "version" do
51
- Kube::Cluster::VERSION.should.not.be.nil
52
- end
43
+ require "kube/cluster/middleware"
44
+ require "kube/cluster/resource/dirty_tracking"
45
+ require "kube/cluster/resource/persistence"
46
+
47
+ Dir.glob("#{__dir__}/cluster/**/*.rb").sort.each do |path|
48
+ require path
53
49
  end
50
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kube_cluster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan K