class Kontena::Cli::Stacks::YAML::Opto::Resolvers::ServiceLink
Public Instance Methods
default_index(services)
click to toggle source
@param [Array<Hash>] services @return [Integer]
# File lib/kontena/cli/stacks/yaml/opto/service_link_resolver.rb, line 34 def default_index(services) index = services.index {|s| service_link(s) == option.default } if index && !option.required? index + 2 # extra offset for the initial <none> option elsif index index + 1 # menu index starts from 1 else 0 # XXX: this just explodes? end end
filter_by_image(services, image)
click to toggle source
# File lib/kontena/cli/stacks/yaml/opto/service_link_resolver.rb, line 64 def filter_by_image(services, image) services.select { |s| s['image'].include?(image) } end
filter_by_name(services, name)
click to toggle source
# File lib/kontena/cli/stacks/yaml/opto/service_link_resolver.rb, line 70 def filter_by_name(services, name) services.select { |s| s['name'].include?(name) } end
get_services()
click to toggle source
@return [Array<Hash>]
# File lib/kontena/cli/stacks/yaml/opto/service_link_resolver.rb, line 26 def get_services client.get("grids/#{current_grid}/services")['services'] rescue [] end
resolve()
click to toggle source
# File lib/kontena/cli/stacks/yaml/opto/service_link_resolver.rb, line 5 def resolve return nil unless current_master && current_grid message = hint['prompt'] name_filter = hint['name'] image_filter = hint['image'] raise "prompt missing" unless message services = get_services services = filter_by_image(services, image_filter) if image_filter services = filter_by_name(services, name_filter) if name_filter return nil if services.size == 0 prompt.select(message) do |menu| menu.default(default_index(services)) if option.default menu.choice "<none>", nil unless option.required? services.each do |s| menu.choice service_name(s), service_link(s) end end end
service_link(service)
click to toggle source
@param [Hash] service @return [String]
# File lib/kontena/cli/stacks/yaml/opto/service_link_resolver.rb, line 48 def service_link(service) grid, stack, service = service['id'].split('/') "#{stack}/#{service}" end
service_name(service)
click to toggle source
@param [Hash] service @return [String]
# File lib/kontena/cli/stacks/yaml/opto/service_link_resolver.rb, line 55 def service_name(service) grid, stack, service = service['id'].split('/') if stack == 'null'.freeze service else "#{stack}/#{service}" end end
stack()
click to toggle source
# File lib/kontena/cli/stacks/yaml/opto/service_link_resolver.rb, line 76 def stack ENV['STACK'] end