Sha256: 433a0adfdb1cd4de0653eb3e8003781442129967b038948b5e2945b75110df74
Contents?: true
Size: 1.93 KB
Versions: 3
Compression:
Stored size: 1.93 KB
Contents
module Oxidized module Source class JSONFile < Source require "json" def initialize @cfg = Oxidized.config.source.jsonfile super end def setup if @cfg.empty? Oxidized.asetus.user.source.jsonfile.file = File.join(Oxidized::Config::ROOT, 'router.json') Oxidized.asetus.user.source.jsonfile.map.name = "name" Oxidized.asetus.user.source.jsonfile.map.model = "model" Oxidized.asetus.user.source.jsonfile.gpg = false Oxidized.asetus.save :user raise NoConfig, "No source json 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(*) data = JSON.parse(open_file.read) data = string_navigate_object(data, @cfg.hosts_location) if @cfg.hosts_location? transform_json(data) end private def transform_json(data) nodes = [] data.each do |node| next if node.empty? # map node parameters keys = {} @cfg.map.each do |key, want_position| keys[key.to_sym] = node_var_interpolate string_navigate_object(node, want_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, want_position| vars[key.to_sym] = node_var_interpolate string_navigate_object(node, want_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/jsonfile.rb |
oxidized-0.32.0 | lib/oxidized/source/jsonfile.rb |
oxidized-0.31.0 | lib/oxidized/source/jsonfile.rb |