module Kubes::Kubectl::Ordering
Public Instance Methods
files()
click to toggle source
# File lib/kubes/kubectl/ordering.rb, line 53 def files files = [] Dir.glob(search_expr).each do |path| next unless process?(path) file = path.sub("#{Kubes.root}/", '') files << file end files end
filter_files(sorted)
click to toggle source
# File lib/kubes/kubectl/ordering.rb, line 21 def filter_files(sorted) skip = Kubes.config.skip skip += ENV['KUBES_SKIP'].split(' ') if ENV['KUBES_SKIP'] return sorted if skip.empty? sorted.reject do |file| skip.detect { |text| file.include?(text) } end end
index_for(type, value)
click to toggle source
type: kinds or roles value: Examples: kind: deployment, role: web
# File lib/kubes/kubectl/ordering.rb, line 32 def index_for(type, value) order = Kubes.config.kubectl.order.send(type) # kinds or roles index = order.index(value.to_s) || 999 i = index.to_s.rjust(3, "0") # pad with 0 "#{i}-#{value}" # append name so that terms with same index get order alphabetically end
process?(path)
click to toggle source
Only considering files 2 layers deep. So:
Yes = web/deployment.yaml No = web/deployment/dev.yaml
# File lib/kubes/kubectl/ordering.rb, line 68 def process?(path) if Kubes.kustomize? File.file?(path) else consider?(path) && two_levels_deep?(path) end end
search_expr()
click to toggle source
kubes apply # {role: nil, resource: nil} kubes apply clock # {role: “clock”, resource: nil} kubes apply clock deployment # {role: “clock”, resource: “deployment”}
# File lib/kubes/kubectl/ordering.rb, line 42 def search_expr role, resource = @options[:role], @options[:resource] if role && resource "#{Kubes.root}/.kubes/output/#{role}/#{resource}.yaml" elsif role "#{Kubes.root}/.kubes/output/#{role}/*.yaml" else "#{Kubes.root}/.kubes/output/**/*.yaml" end end
sorted_files()
click to toggle source
# File lib/kubes/kubectl/ordering.rb, line 3 def sorted_files sorted = files.sort_by do |file| # .kubes/output/web/service.yaml words = file.split('/') role, kind = words[2], words[3] # web, deployment kind = kind.sub('.yaml','').underscore.camelize if kind kind_i = index_for(:kinds, kind) role_i = index_for(:roles, role) "#{role_i}/#{kind_i}" end sorted = filter_files(sorted) @name == "delete" ? sorted.reverse : sorted end
two_levels_deep?(path)
click to toggle source
# File lib/kubes/kubectl/ordering.rb, line 76 def two_levels_deep?(path) rel_path = path.sub(%r{.*\.kubes/(resources|output)/},'') rel_path.split('/').size == 2 end