Class: Metatron::Templates::VolumeSnapshot
- Inherits:
-
Metatron::Template
- Object
- Metatron::Template
- Metatron::Templates::VolumeSnapshot
- Includes:
- Concerns::Annotated, Concerns::Namespaced
- Defined in:
- lib/metatron/templates/volume_snapshot.rb
Overview
The VolumeSnapshot Kubernetes resource
Instance Attribute Summary collapse
-
#source ⇒ Object
Returns the value of attribute source.
-
#volume_snapshot_class_name ⇒ Object
(also: #volumeSnapshotClassName)
Returns the value of attribute volume_snapshot_class_name.
Attributes inherited from Metatron::Template
#additional_labels, #api_version, #base_labels, #kind, #name
Instance Method Summary collapse
- #formatted_source ⇒ Object
- #formatted_volume_snapshot_class_name ⇒ Object
-
#initialize(name, source: {}, volume_snapshot_class_name: nil) ⇒ VolumeSnapshot
constructor
A new instance of VolumeSnapshot.
- #render ⇒ Object
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, source: {}, volume_snapshot_class_name: nil) ⇒ VolumeSnapshot
Returns a new instance of VolumeSnapshot.
14 15 16 17 18 19 |
# File 'lib/metatron/templates/volume_snapshot.rb', line 14 def initialize(name, source: {}, volume_snapshot_class_name: nil) super(name) @source = source @volume_snapshot_class_name = volume_snapshot_class_name @api_version = "snapshot.storage.k8s.io/v1" end |
Instance Attribute Details
#source ⇒ Object
Returns the value of attribute source.
10 11 12 |
# File 'lib/metatron/templates/volume_snapshot.rb', line 10 def source @source end |
#volume_snapshot_class_name ⇒ Object Also known as: volumeSnapshotClassName
Returns the value of attribute volume_snapshot_class_name.
10 11 12 |
# File 'lib/metatron/templates/volume_snapshot.rb', line 10 def volume_snapshot_class_name @volume_snapshot_class_name end |
Instance Method Details
#formatted_source ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/metatron/templates/volume_snapshot.rb', line 33 def formatted_source case source when Hash { source: } when Metatron::Templates::VolumeSnapshotContent { source: { volumeSnapshotContentName: source.name } } when Metatron::Templates::PersistentVolumeClaim { source: { persistentVolumeClaimName: source.name } } when nil {} else raise ArgumentError, "Invalid source type: #{source.class}. " \ "Expected Hash, VolumeSnapshotContent, or PersistentVolumeClaim." end end |
#formatted_volume_snapshot_class_name ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/metatron/templates/volume_snapshot.rb', line 50 def formatted_volume_snapshot_class_name return {} unless volume_snapshot_class_name if volume_snapshot_class_name.is_a?(String) { volumeSnapshotClassName: } elsif volume_snapshot_class_name.respond_to?(:name) { volumeSnapshotClassName: volume_snapshot_class_name.name } else raise ArgumentError, "Invalid volume_snapshot_class_name type: #{volume_snapshot_class_name.class}." end end |
#render ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/metatron/templates/volume_snapshot.rb', line 21 def render { apiVersion:, kind:, metadata: { name:, labels: base_labels.merge(additional_labels) }.merge(formatted_annotations).merge(formatted_namespace).compact, spec: {}.merge(formatted_source).merge(formatted_volume_snapshot_class_name).compact }.compact end |