Sha256: 0a8735c7e5404e703d3f4d944ac057110fd4a164859a439203184b65a3cbee4e

Contents?: true

Size: 1.67 KB

Versions: 3

Compression:

Stored size: 1.67 KB

Contents

module Oxidized
  module Source
    class CSV < Source
      def initialize
        @cfg = Oxidized.config.source.csv
        super
      end

      def setup
        if @cfg.empty?
          Oxidized.asetus.user.source.csv.file      = File.join(Config::ROOT, 'router.db')
          Oxidized.asetus.user.source.csv.delimiter = /:/
          Oxidized.asetus.user.source.csv.map.name  = 0
          Oxidized.asetus.user.source.csv.map.model = 1
          Oxidized.asetus.user.source.csv.gpg       = false
          Oxidized.asetus.save :user
          raise NoConfig, "no source csv config, edit #{Oxidized::Config.configfile}"
        end
        require 'gpgme' if @cfg.gpg?

        # map.name is mandatory
        return if @cfg.map.has_key?('name')

        raise InvalidConfig, "map/name is a mandatory source attribute, edit #{Oxidized::Config.configfile}"
      end

      def load(_node_want = nil)
        nodes = []
        open_file.each_line do |line|
          next if line =~ /^\s*#/

          data = line.chomp.split(@cfg.delimiter, -1)
          next if data.empty?

          # map node parameters
          keys = {}
          @cfg.map.each do |key, position|
            keys[key.to_sym] = node_var_interpolate data[position]
          end
          keys[:model] = map_model keys[:model] if keys.has_key? :model
          keys[:group] = map_group keys[:group] if keys.has_key? :group

          # map node specific vars
          vars = {}
          @cfg.vars_map.each do |key, position|
            vars[key.to_sym] = node_var_interpolate data[position]
          end
          keys[:vars] = vars unless vars.empty?

          nodes << keys
        end
        nodes
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
oxidized-0.32.1 lib/oxidized/source/csv.rb
oxidized-0.32.0 lib/oxidized/source/csv.rb
oxidized-0.31.0 lib/oxidized/source/csv.rb