class TSAdmin::TrafficServer

Constants

MARKER_TEXT

Public Class Methods

new(options={}) click to toggle source
# File lib/ts-admin/traffic_server.rb, line 56
def initialize(options={})
  @options = {
      'config_path' => '/etc/trafficserver',
      'restart_cmd' => '/etc/init.d/trafficserver restart'
    }.merge(options)
  @config_path = @options['config_path']
end

Private Class Methods

marker_begin() click to toggle source
# File lib/ts-admin/traffic_server.rb, line 138
def self.marker_begin
  "# BEGIN #{MARKER_TEXT}"
end
marker_end() click to toggle source
# File lib/ts-admin/traffic_server.rb, line 142
def self.marker_end
  "# END #{MARKER_TEXT}"
end

Public Instance Methods

new_remap_entry(type, from, to) click to toggle source
# File lib/ts-admin/traffic_server.rb, line 69
def new_remap_entry(type, from, to)
  RemapEntry.new(self, type, from, to)
end
remap_entries() click to toggle source
# File lib/ts-admin/traffic_server.rb, line 64
def remap_entries
  load unless defined?(@remap_entries)
  @remap_entries
end
restart() click to toggle source
# File lib/ts-admin/traffic_server.rb, line 107
def restart
  `#{@options['restart_cmd']}`
end
save() click to toggle source
# File lib/ts-admin/traffic_server.rb, line 73
def save
  own_config = ''
  own_config << "#{self.class.marker_begin}\n"
  remap_entries.each do |remap_entry|
    own_config << "#{remap_entry.type.to_s} #{remap_entry.from} #{remap_entry.to}\n"
  end
  own_config << "#{self.class.marker_end}\n"

  file_content = ''
  in_config_block = false
  own_config_written = false
  File.read(remap_path).each_line do |line|
    if line.strip == self.class.marker_begin
      in_config_block = true
      next
    elsif line.strip == self.class.marker_end
      in_config_block = false
      next
    end

    if in_config_block
      file_content << own_config unless own_config_written
      own_config_written = true
    else
      file_content << line
    end
  end
  file_content << own_config unless own_config_written

  remap_file = File.new(remap_path, 'w')
  remap_file.write(file_content)
  remap_file.close
end

Private Instance Methods

load() click to toggle source
# File lib/ts-admin/traffic_server.rb, line 117
def load
  @remap_entries = ValidatingArray.new

  in_config_block = false
  File.read(remap_path).each_line do |line|
    if line.strip == self.class.marker_begin
      in_config_block = true
      next
    elsif line.strip == self.class.marker_end
      in_config_block = false
      next
    end

    next unless in_config_block

    type, from, to, *options = line.split(/\s+/)
    @remap_entries << RemapEntry.new(self, type, from, to)
    @remap_entries.delete_if{|e| !e.valid?}
  end
end
remap_path() click to toggle source
# File lib/ts-admin/traffic_server.rb, line 113
def remap_path
  File.join(@config_path, 'remap.config')
end