module Kontena::Cli::Apps::Common
Public Instance Methods
abort_on_validation_errors(errors)
click to toggle source
# File lib/kontena/cli/apps/common.rb, line 133 def abort_on_validation_errors(errors) $stderr.puts "YAML validation failed! Aborting.".colorize(:red) display_notifications(errors, :red) abort end
app_json()
click to toggle source
@return [Hash]
# File lib/kontena/cli/apps/common.rb, line 101 def app_json if !@app_json && File.exist?('app.json') @app_json = JSON.parse(File.read('app.json')) end @app_json ||= {} end
create_yml(services, file = 'kontena.yml')
click to toggle source
@param [Hash] services @param [String] file
# File lib/kontena/cli/apps/common.rb, line 94 def create_yml(services, file = 'kontena.yml') yml = File.new(file, 'w') yml.puts services.to_yaml yml.close end
current_dir()
click to toggle source
@return [String]
# File lib/kontena/cli/apps/common.rb, line 82 def current_dir File.basename(Dir.getwd) end
display_notifications(messages, color = :yellow)
click to toggle source
# File lib/kontena/cli/apps/common.rb, line 108 def display_notifications(messages, color = :yellow) messages.each do |files| files.each do |file, services| $stderr.puts "#{file}:".colorize(color) services.each do |service| service.each do |name, errors| $stderr.puts " #{name}:".colorize(color) if errors.is_a?(String) $stderr.puts " - #{errors}".colorize(color) else errors.each do |key, error| $stderr.puts " - #{key}: #{error.to_json}".colorize(color) end end end end end end end
generate_services(yaml_services, version)
click to toggle source
@param [Hash] yaml @param [String] version @return [Hash]
# File lib/kontena/cli/apps/common.rb, line 35 def generate_services(yaml_services, version) services = {} if version.to_i == 2 generator_klass = ServiceGeneratorV2 else generator_klass = ServiceGenerator end yaml_services.each do |service_name, config| exit_with_error("Image is missing for #{service_name}. Aborting.") unless config['image'] services[service_name] = generator_klass.new(config).generate end services end
hint_on_validation_notifications(errors)
click to toggle source
# File lib/kontena/cli/apps/common.rb, line 128 def hint_on_validation_notifications(errors) $stderr.puts "YAML contains the following unsupported options and they were rejected:".colorize(:yellow) display_notifications(errors) end
prefixed_name(name)
click to toggle source
@param [String] name @return [String]
# File lib/kontena/cli/apps/common.rb, line 76 def prefixed_name(name) return name if service_prefix.strip == "" "#{service_prefix}-#{name}" end
project_name_from_yaml(file)
click to toggle source
# File lib/kontena/cli/apps/common.rb, line 64 def project_name_from_yaml(file) reader = YAML::Reader.new(file, true) reader.stack_name end
read_yaml(filename)
click to toggle source
# File lib/kontena/cli/apps/common.rb, line 49 def read_yaml(filename) reader = YAML::Reader.new(filename) outcome = reader.execute outcome end
require_config_file(filename)
click to toggle source
# File lib/kontena/cli/apps/common.rb, line 11 def require_config_file(filename) exit_with_error("File #{filename} does not exist") unless File.exists?(filename) end
service_exists?(name)
click to toggle source
@param [String] name @return [Boolean]
# File lib/kontena/cli/apps/common.rb, line 88 def service_exists?(name) get_service(token, prefixed_name(name)) rescue false end
service_prefix()
click to toggle source
# File lib/kontena/cli/apps/common.rb, line 60 def service_prefix @service_prefix ||= project_name || project_name_from_yaml(filename) || current_dir end
services_from_yaml(filename, service_list, prefix, skip_validation = false)
click to toggle source
@param [String] filename @param [Array<String>] service_list @param [String] prefix @param [TrueClass|FalseClass] skip_validation @return [Hash]
# File lib/kontena/cli/apps/common.rb, line 20 def services_from_yaml(filename, service_list, prefix, skip_validation = false) set_env_variables(prefix, current_grid) reader = YAML::Reader.new(filename, skip_validation) outcome = reader.execute hint_on_validation_notifications(outcome[:notifications]) if outcome[:notifications].size > 0 abort_on_validation_errors(outcome[:errors]) if outcome[:errors].size > 0 kontena_services = generate_services(outcome[:services], outcome[:version]) kontena_services.delete_if { |name, service| !service_list.include?(name)} unless service_list.empty? kontena_services end
set_env_variables(project, grid)
click to toggle source
# File lib/kontena/cli/apps/common.rb, line 55 def set_env_variables(project, grid) ENV['project'] = project ENV['grid'] = grid end
token()
click to toggle source
@return [String]
# File lib/kontena/cli/apps/common.rb, line 70 def token @token ||= require_token end
valid_addons(prefix=nil)
click to toggle source
# File lib/kontena/cli/apps/common.rb, line 139 def valid_addons(prefix=nil) if prefix prefix = "#{prefix}-" end { 'openredis' => { 'image' => 'redis:latest', 'environment' => ["REDIS_URL=redis://#{prefix}openredis:6379"] }, 'redis' => { 'image' => 'redis:latest', 'environment' => ["REDIS_URL=redis://#{prefix}redis:6379"] }, 'rediscloud' => { 'image' => 'redis:latest', 'environment' => ["REDISCLOUD_URL=redis://#{prefix}rediscloud:6379"] }, 'postgresql' => { 'image' => 'postgres:latest', 'environment' => ["DATABASE_URL=postgres://#{prefix}postgres:@postgresql:5432/postgres"] }, 'mongolab' => { 'image' => 'mongo:latest', 'environment' => ["MONGOLAB_URI=#{prefix}mongolab:27017"] }, 'memcachedcloud' => { 'image' => 'memcached:latest', 'environment' => ["MEMCACHEDCLOUD_SERVERS=#{prefix}memcachedcloud:11211"] } } end