kube_clusterSourceKubeClusterMiddleware

class Middleware

Base class for manifest middleware.

Middleware receives the full manifest and mutates it in place. Each middleware is responsible for iterating resources as needed.

Transform example:

class AddTeamLabel < Middleware def call(manifest) manifest.resources.map! do |resource| h = resource.to_h h[:metadata][:labels][:"app.kubernetes.io/team"] = "platform" resource.rebuild(h) end end end

Generative example:

class ServiceForDeployment < Middleware def call(manifest) generated = [] manifest.resources.each do |resource| next unless resource.pod_bearing? generated << build_service_from(resource) end manifest.resources.concat(generated) end end

Nested

Definitions

def self.build(**defaults, &block)

Build an anonymous middleware class from a block. The block becomes the +#call+ method and runs via +instance_exec+, so +filter+, +deep_merge+, and +@opts+ are all available inside it.

Middleware.build(filter: ->(r) r.pod_bearing? ) do |manifest| manifest.resources.map! do |resource| filter(resource) do h = resource.to_h h[:metadata][:labels][:custom] = "yes" resource.rebuild(h) end end end

Implementation

def self.build(**defaults, &block)
  Class.new(self) do
    define_method(:initialize) do |**overrides|
      super(**defaults, **overrides)
    end

    define_method(:call, &block)
  end
end

def call(manifest)

Override in subclasses. Receives the full manifest, mutates it in place.

Implementation

def call(manifest)
end