class Hippo::ObjectDefinition
Public Class Methods
new(object, stage, clean: false)
click to toggle source
# File lib/hippo/object_definition.rb, line 7 def initialize(object, stage, clean: false) @object = object @stage = stage end
Public Instance Methods
[](name)
click to toggle source
# File lib/hippo/object_definition.rb, line 12 def [](name) @object[name] end
base64_encode_data!(object = @object['data'])
click to toggle source
# File lib/hippo/object_definition.rb, line 44 def base64_encode_data!(object = @object['data']) object.each do |key, value| object[key] = if value.is_a?(Hash) base64_encode_data!(value) else Base64.encode64(value.to_s).gsub(/\n/, '').strip end end end
dig(*args)
click to toggle source
# File lib/hippo/object_definition.rb, line 16 def dig(*args) @object.dig(*args) end
insert_default_labels!()
click to toggle source
# File lib/hippo/object_definition.rb, line 58 def insert_default_labels! metadata['labels'] ||= {} metadata['labels']['app.kubernetes.io/name'] = @stage.manifest.name metadata['labels']['app.kubernetes.io/instance'] = @stage.name metadata['labels']['app.kubernetes.io/managed-by'] = 'hippo' end
insert_deployment_id!(deployment_id)
click to toggle source
# File lib/hippo/object_definition.rb, line 65 def insert_deployment_id!(deployment_id) metadata['labels'] ||= {} metadata['labels']['hippo.adam.ac/deployID'] = deployment_id # For deployments, insert the ID on the template too for deployments. if kind == 'Deployment' && pod_metadata = @object.dig('spec', 'template', 'metadata') pod_metadata['labels'] ||= {} pod_metadata['labels']['hippo.adam.ac/deployID'] = deployment_id end end
insert_namespace!()
click to toggle source
# File lib/hippo/object_definition.rb, line 54 def insert_namespace! metadata['namespace'] = @stage.namespace end
kind()
click to toggle source
# File lib/hippo/object_definition.rb, line 28 def kind @object['kind'] end
metadata()
click to toggle source
# File lib/hippo/object_definition.rb, line 24 def metadata @object['metadata'] ||= {} end
name()
click to toggle source
# File lib/hippo/object_definition.rb, line 20 def name metadata['name'] end
yaml()
click to toggle source
# File lib/hippo/object_definition.rb, line 32 def yaml @object.to_yaml(line_width: -1) end
yaml_to_apply()
click to toggle source
# File lib/hippo/object_definition.rb, line 36 def yaml_to_apply object = ObjectDefinition.new(@object.dup, @stage) object.insert_namespace! object.insert_default_labels! object.base64_encode_data! if kind == 'Secret' object.yaml end