Class: Metatron::Templates::PersistentVolumeClaim

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

Overview

The PersistentVolumeClaim Kubernetes resource

Instance Attribute Summary collapse

Attributes inherited from Metatron::Template

#api_version, #base_labels, #kind, #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, storage_class:, storage:, access_modes: ["ReadWriteOnce"]) ⇒ PersistentVolumeClaim

Returns a new instance of PersistentVolumeClaim.



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

def initialize(
  name,
  storage_class:,
  storage:,
  access_modes: ["ReadWriteOnce"]
)
  super(name)
  @storage_class = storage_class
  @access_modes = access_modes
  @storage = storage
  @data_source = {}
  @additional_labels = {}
end

Instance Attribute Details

#access_modesObject Also known as: accessModes

Returns the value of attribute access_modes.



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

def access_modes
  @access_modes
end

#additional_labelsObject

Returns the value of attribute additional_labels.



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

def additional_labels
  @additional_labels
end

#data_sourceObject Also known as: dataSource

Returns the value of attribute data_source.



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

def data_source
  @data_source
end

#data_source_refObject Also known as: dataSourceRef

Returns the value of attribute data_source_ref.



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

def data_source_ref
  @data_source_ref
end

#storageObject

Returns the value of attribute storage.



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

def storage
  @storage
end

#storage_classObject Also known as: storageClassName

Returns the value of attribute storage_class.



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

def storage_class
  @storage_class
end

Instance Method Details

#formatted_data_sourceObject



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/metatron/templates/persistent_volume_claim.rb', line 52

def formatted_data_source
  return {} unless data_source && !data_source.empty?
  raise "dataSource must be a Hash" unless data_source.is_a?(Hash)

  valid_keys = %i[apiGroup kind name]
  unless data_source.keys.all? { valid_keys.include?(_1.to_sym) }
    raise "dataSource may contain only the keys: #{valid_keys.join(", ")}"
  end

  { dataSource: data_source.transform_keys(&:to_sym) }
end

#formatted_data_source_refObject



64
65
66
67
68
69
70
71
72
73
74
# File 'lib/metatron/templates/persistent_volume_claim.rb', line 64

def formatted_data_source_ref
  return {} unless data_source_ref && !data_source_ref.empty?
  raise "dataSourceRef must be a Hash" unless data_source_ref.is_a?(Hash)

  valid_keys = %i[apiGroup kind name namespace]
  unless data_source_ref.keys.all? { valid_keys.include?(_1.to_sym) }
    raise "dataSourceRef may contain only the keys: #{valid_keys.join(", ")}"
  end

  { dataSourceRef: data_source_ref.transform_keys(&:to_sym) }
end

#renderObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/metatron/templates/persistent_volume_claim.rb', line 32

def render
  {
    apiVersion:,
    kind:,
    metadata: {
      name:,
      labels: base_labels.merge(additional_labels)
    }.merge(formatted_annotations).merge(formatted_namespace),
    spec: {
      accessModes:,
      storageClassName:,
      resources: {
        requests: {
          storage:
        }
      }
    }.merge(formatted_data_source).merge(formatted_data_source_ref)
  }
end