Class: Kube::Cluster::Manifest::Middleware::Labels
- Inherits:
-
Kube::Cluster::Manifest::Middleware
- Object
- Kube::Cluster::Manifest::Middleware
- Kube::Cluster::Manifest::Middleware::Labels
- Defined in:
- lib/kube/cluster/manifest/middleware/labels.rb
Overview
Merges labels into metadata.labels on every resource. Existing labels are preserved; the supplied labels act as defaults that can be overridden per-resource.
stack do
use Middleware::Labels, app: "web-app", managed_by: "kube_cluster"
end
The keyword arguments are converted to standard label keys:
app: -> "app.kubernetes.io/name"
instance: -> "app.kubernetes.io/instance"
version: -> "app.kubernetes.io/version"
component: -> "app.kubernetes.io/component"
part_of: -> "app.kubernetes.io/part-of"
managed_by: -> "app.kubernetes.io/managed-by"
Any unrecognized keys are passed through as-is (string or symbol).
Constant Summary collapse
- STANDARD_KEYS =
{ app: :"app.kubernetes.io/name", instance: :"app.kubernetes.io/instance", version: :"app.kubernetes.io/version", component: :"app.kubernetes.io/component", part_of: :"app.kubernetes.io/part-of", managed_by: :"app.kubernetes.io/managed-by", }.freeze
Constants inherited from Kube::Cluster::Manifest::Middleware
CLUSTER_SCOPED_KINDS, POD_BEARING_KINDS
Instance Method Summary collapse
- #call(resource) ⇒ Object
-
#initialize(**labels) ⇒ Labels
constructor
A new instance of Labels.
Constructor Details
#initialize(**labels) ⇒ Labels
Returns a new instance of Labels.
36 37 38 |
# File 'lib/kube/cluster/manifest/middleware/labels.rb', line 36 def initialize(**labels) @labels = normalize(labels) end |
Instance Method Details
#call(resource) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/kube/cluster/manifest/middleware/labels.rb', line 40 def call(resource) h = resource.to_h h[:metadata] ||= {} h[:metadata][:labels] = @labels.merge(h[:metadata][:labels] || {}) rebuild(resource, h) end |