Class: Metatron::Templates::Role

Inherits:
Metatron::Template show all
Includes:
Concerns::Annotated, Concerns::Namespaced
Defined in:
lib/metatron/templates/role.rb

Overview

Template for basic Role k8s resource

Instance Attribute Summary collapse

Attributes inherited from Metatron::Template

#additional_labels, #api_version, #kind, #label_namespace, #name

Instance Method Summary collapse

Methods included from Concerns::Namespaced

#formatted_namespace, included, #namespaced_initialize

Methods included from Concerns::Annotated

#annotated_initialize, #formatted_annotations, included

Methods inherited from Metatron::Template

initializer, initializers, metatron_template_class?, nearest_metatron_ancestor

Constructor Details

#initialize(name) ⇒ Role

Returns a new instance of Role.



12
13
14
15
16
# File 'lib/metatron/templates/role.rb', line 12

def initialize(name)
  super(name)
  @api_version = "rbac.authorization.k8s.io/v1"
  @rules = []
end

Instance Attribute Details

#rulesObject

Returns the value of attribute rules.



10
11
12
# File 'lib/metatron/templates/role.rb', line 10

def rules
  @rules
end

Instance Method Details

#formatted_rulesObject



30
# File 'lib/metatron/templates/role.rb', line 30

def formatted_rules = rules.map { _1.respond_to?(:render) ? _1.render : _1 }

#renderObject



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/metatron/templates/role.rb', line 18

def render
  {
    apiVersion:,
    kind:,
    metadata: {
      name:,
      labels: { "#{label_namespace}/name": name }.merge(additional_labels)
    }.merge(formatted_annotations).merge(formatted_namespace).compact,
    rules: formatted_rules
  }.compact
end