Sha256: 2898d7c5b76447bff99bcb780b630b53a89b09f0e47b790cd5ac66f08bf7334c

Contents?: true

Size: 1.83 KB

Versions: 22

Compression:

Stored size: 1.83 KB

Contents

require_relative 'common'

module Kontena::Cli::Grids
  class UpdateCommand < Kontena::Command
    include Kontena::Cli::Common
    include Common

    parameter "NAME", "Grid name"
    option "--statsd-server", "STATSD_SERVER", "Statsd server address (host:port)"
    option "--no-statsd-server", :flag, "Unset statsd server setting"
    option "--default-affinity", "[AFFINITY]", "Default affinity rule for the grid", multivalued: true
    option "--no-default-affinity", :flag, "Unset grid default affinity"
    option "--log-forwarder", "LOG_FORWARDER", "Set grid wide log forwarder (set to 'none' to disable)"
    option "--log-opt", "[LOG_OPT]", "Set log options (key=value)", multivalued: true

    def execute
      require_api_url
      token = require_token
      validate_log_opts
      payload = {}
      if statsd_server
        server, port = statsd_server.split(':')
        payload[:stats] = {
          statsd: {
            server: server,
            port: port || 8125
          }
        }
      end

      if no_statsd_server?
        payload[:stats] = { statsd:  nil }
      end

      if log_forwarder
        payload[:logs] = {
          forwarder: log_forwarder,
          opts: parse_log_opts
        }
      end

      unless default_affinity_list.empty?
        payload[:default_affinity] = default_affinity_list
      end

      if no_default_affinity?
        payload[:default_affinity] = []
      end

      client(token).put("grids/#{name}", payload)
    end

    def validate_log_opts
      if !log_opt_list.empty? && log_forwarder.nil?
        raise Kontena::Errors::StandardError.new(1, "Need to specify --log-forwarder when using --log-opt")
      end
    end

    def parse_log_opts
      opts = {}
      log_opt_list.each do |opt|
        key, value = opt.split('=')
        opts[key.to_sym] = value
      end
      opts
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
kontena-cli-1.3.5 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.5.rc1 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.4 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.4.rc1 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.3 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.3.rc1 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.2 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.2.rc2 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.2.rc1 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.1 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.1.rc2 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.1.rc1 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.0 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.0.rc4 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.0.rc3 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.0.rc2 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.0.rc1 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.0.pre2 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.3.0.pre1 lib/kontena/cli/grids/update_command.rb
kontena-cli-1.2.2 lib/kontena/cli/grids/update_command.rb