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