class Helper

Public Instance Methods

client_config() click to toggle source
# File lib/kontena/scripts/completer.rb, line 7
def client_config
  require 'json'
  config_file = File.expand_path('~/.kontena_client.json')
  if(File.exist?(config_file))
    JSON.parse(File.read(config_file))
  else
    {}
  end
rescue => ex
  logger.debug ex
  {}
end
containers() click to toggle source
# File lib/kontena/scripts/completer.rb, line 103
def containers
  results = []
  client.get("grids/#{current_grid}/services")['services'].each do |service|
    containers = client.get("services/#{service['id']}/containers")['containers']
    results.push(containers.map{|c| c['name'] })
    results.push(containers.map{|c| c['id'] })
  end
  results
rescue => ex
  logger.debug ex
  []
end
current_grid() click to toggle source
# File lib/kontena/scripts/completer.rb, line 20
def current_grid
  client_config['servers'].find { |s| s['name'] == client_config['current_server']}['grid']
rescue => ex
  logger.debug ex
  nil
end
current_master_name() click to toggle source
# File lib/kontena/scripts/completer.rb, line 27
def current_master_name
  client_config['current_server']
end
directories(word) click to toggle source
# File lib/kontena/scripts/completer.rb, line 128
def directories(word)
  if word && File.directory?(word) && !word.end_with?('/')
    ['%s/' % word]
  else
    Dir[File.join('.', '%s*' % word)].select { |file| File.directory?(file) }.map { |file| '%s/' % file.sub('./', '') }
  end
end
grids() click to toggle source
# File lib/kontena/scripts/completer.rb, line 31
def grids
  client.get("grids")['grids'].map{|grid| grid['id']}
rescue => ex
  logger.debug ex
  []
end
master_names() click to toggle source
# File lib/kontena/scripts/completer.rb, line 148
def master_names
  client_config['servers'].map{|s| s['name']}
rescue => ex
  logger.debug ex
  []
end
nodes() click to toggle source
# File lib/kontena/scripts/completer.rb, line 38
def nodes
  client.get("grids/#{current_grid}/nodes")['nodes'].map{|node| node['name']}
rescue
  []
end
registry_stack_versions(stackname) click to toggle source
# File lib/kontena/scripts/completer.rb, line 77
def registry_stack_versions(stackname)
  return [] unless stack_registry_usable?
  logger.debug stackname.inspect
  stacks_client.versions(stackname).map { |v| [stackname, v['version']].join(':') }
rescue => ex
  logger.debug ex
  []
end
registry_stacks(query = '') click to toggle source
# File lib/kontena/scripts/completer.rb, line 65
def registry_stacks(query = '')
  return [] unless stack_registry_usable?
  results = stacks_client.search(query).map { |s| s['stack'] }
  if results.empty? && !query.empty? # this is here because old stack registry does not return anything for "org/"
    results = stacks_client.search('').map { |s| s['stack'] }.select { |s| s.start_with?(query) }
  end
  results
rescue => ex
  logger.debug ex
  []
end
services() click to toggle source
# File lib/kontena/scripts/completer.rb, line 86
def services
  services = client.get("grids/#{current_grid}/services")['services']
  results = []
  results.push services.map{ |s|
    stack = s['stack']['id'].split('/').last
    if stack != 'null'
      "#{stack}/#{s['name']}"
    else
      s['name']
    end
  }
  results
rescue => ex
  logger.debug ex
  []
end
stack_registry_usable?() click to toggle source
# File lib/kontena/scripts/completer.rb, line 55
def stack_registry_usable?
  return false if current_account.nil? || current_account.stacks_url.nil?
  return false if current_account.stacks_read_authentication && current_account.token.nil? || current_account.token.access_token.nil?
  true
end
stacks() click to toggle source
# File lib/kontena/scripts/completer.rb, line 44
def stacks
  stacks = client.get("grids/#{current_grid}/stacks")['stacks']
  results = []
  results.push stacks.map{|s| s['name']}
  results.delete('null')
  results
rescue => ex
  logger.debug ex
  []
end
stacks_client() click to toggle source
# File lib/kontena/scripts/completer.rb, line 61
def stacks_client
  Kontena::StacksClient.new(current_account.stacks_url, current_account.token, read_requires_token: current_account.stacks_read_authentication)
end
subcommand_tree(cmd = nil, base = nil) click to toggle source
# File lib/kontena/scripts/completer.rb, line 155
def subcommand_tree(cmd = nil, base = nil)
  puts "#{cmd} ".strip
  if base.has_subcommands?
    base.recognised_subcommands.each do |sc|
      subcommand_tree("#{cmd} #{sc.names.first}", sc.subcommand_class)
    end
  end
end
yml_files(word) click to toggle source
# File lib/kontena/scripts/completer.rb, line 136
def yml_files(word)
  if word && File.directory?(word) && word.end_with?('/')
    glob = File.join(word, '*.{yml,yaml}')
  else
    glob = File.join('.', '%s*.{yml,yaml}' % word)
  end
  Dir[glob].map { |file| file.sub('./', '') } + directories(word)
rescue => ex
  logger.debug ex
  []
end
yml_services() click to toggle source
# File lib/kontena/scripts/completer.rb, line 116
def yml_services
  require 'yaml'
  if File.exist?('kontena.yml')
    yaml = YAML.safe_load(File.read('kontena.yml'), [], [], true, 'kontena.yml')
    services = yaml['services']
    services.keys
  end
rescue => ex
  logger.debug ex
  []
end