class Kubes::Compiler::Decorator::Post
Public Instance Methods
add_hash(item, options={})
click to toggle source
# File lib/kubes/compiler/decorator/post.rb, line 15 def add_hash(item, options={}) # hashable set from previous stack call if options[:hashable_field] && item.is_a?(Hash) field = options[:hashable_field] value_without_md5 = item[field.key] @reset_hashable_field = true unless value_without_md5 if field.hashable? && value_without_md5 md5 = Hashable::Storage.fetch(field.kind, value_without_md5) v = [value_without_md5, md5].compact.join('-') item[field.key] = v end end options[:hashable_field] ||= hashable_field(item) # set for next stack call # Pretty tricky case. Given: # # envFrom: # - secretRef: # name: demo-secret # - configMapRef: # name: demo-config-map # # Need to reset the stored hashable_field in the call stack. # Else the field.kind is cached and the md5 look is incorrect # The spec/fixtures/decorators/deployment/both/envFrom.yaml fixture covers this. if @reset_hashable_field options[:hashable_field] = hashable_field(item) @reset_hashable_field = false end case item when Array, Hash item.each { |i| add_hash(i, options) } end item end
clean_namespace()
click to toggle source
# File lib/kubes/compiler/decorator/post.rb, line 9 def clean_namespace return unless @data['kind'] == 'Namespace' @data['metadata'].delete('namespace') @data end
hashable_field(item)
click to toggle source
Returns the nested key name that will be hashable. Examples:
1. envFrom example envFrom: - secretRef: name: demo-secret 2. valueFrom example valueFrom: secretKeyRef: name: demo-secret key: password 3. volumes example volumes: - secret: secretName: demo-secret
This is useful to capture for the next level of the stack call
# File lib/kubes/compiler/decorator/post.rb, line 71 def hashable_field(item) return false unless item.is_a?(Hash) field = Hashable::Field.new(item) field if field.hashable? end
process()
click to toggle source
# File lib/kubes/compiler/decorator/post.rb, line 3 def process add_hash(@data) clean_namespace @data end