class Nucleon::Action::Network::Settings
Public Class Methods
describe()
click to toggle source
Calls superclass method
# File lib/nucleon/action/network/settings.rb 10 def self.describe 11 super(:network, :settings, 950) 12 end
Public Instance Methods
arguments()
click to toggle source
# File lib/nucleon/action/network/settings.rb 42 def arguments 43 [ :group, :name, :value ] 44 end
configure()
click to toggle source
Calls superclass method
# File lib/nucleon/action/network/settings.rb 17 def configure 18 super do 19 codes :settings_save_failed, 20 :settings_delete_failed 21 22 register_str :group 23 register_str :name 24 register_array :value 25 26 register_bool :array 27 register_bool :delete 28 register_bool :append 29 register_bool :groups 30 31 register_translator :input_format 32 register_translator :format, :json 33 end 34 end
delete_settings(property)
click to toggle source
# File lib/nucleon/action/network/settings.rb 105 def delete_settings(property) 106 group = settings[:group] 107 name = parse_property_name(property) 108 remote_text = remote_message(settings[:net_remote]) 109 110 render_options = { :group => blue(group), :name => blue(name), :remote_text => yellow(remote_text) } 111 112 network.config.delete([ :settings, group, property ]) 113 114 if network.save({ :remote => settings[:net_remote], :message => "Deleting #{group} setting #{name}", :allow_empty => true }) 115 success('delete', render_options) 116 else 117 error('delete', render_options) 118 myself.status = code.settings_delete_failed 119 end 120 end
execute()
click to toggle source
Calls superclass method
# File lib/nucleon/action/network/settings.rb 49 def execute 50 super do |node| 51 ensure_network do 52 if settings[:groups] 53 render_groups 54 55 elsif settings[:group].empty? 56 render_settings 57 58 elsif settings[:name].empty? 59 render_settings(settings[:group]) 60 61 else 62 name = settings[:name].gsub(/\]$/, '').split(/\]?\[/) 63 64 if settings.get(:delete, false) 65 delete_settings(name) 66 67 elsif ! settings[:value].empty? 68 set_settings(name, settings[:value]) 69 70 else 71 render_settings([ settings[:group], name ]) 72 end 73 end 74 end 75 end 76 end
ignore()
click to toggle source
# File lib/nucleon/action/network/settings.rb 38 def ignore 39 node_ignore 40 end
render_groups()
click to toggle source
# File lib/nucleon/action/network/settings.rb 81 def render_groups 82 groups = network.config.get(:settings).keys 83 84 info('groups') 85 groups.each do |group| 86 info("-> #{green(group)}", { :i18n => false }) 87 end 88 end
render_settings(elements = [])
click to toggle source
# File lib/nucleon/action/network/settings.rb 92 def render_settings(elements = []) 93 format = settings[:format] 94 95 if elements.size > 0 96 myself.result = network.config.get([ :settings, elements ]) 97 else 98 myself.result = network.config.get(:settings) 99 end 100 render result, :format => format 101 end
set_settings(property, values)
click to toggle source
# File lib/nucleon/action/network/settings.rb 124 def set_settings(property, values) 125 group = settings[:group] 126 name = parse_property_name(property) 127 remote_text = remote_message(settings[:net_remote]) 128 129 render_options = { :group => blue(group), :name => blue(name), :remote_text => yellow(remote_text) } 130 131 input_format = settings[:input_format] 132 133 values.each_with_index do |value, index| 134 values[index] = render(value, { 135 :format => input_format, 136 :silent => true 137 }) if input_format 138 values[index] = Util::Data.value(values[index]) 139 end 140 141 if settings[:append] 142 if prev_value = network.config.get([ :settings, group, property ]) 143 prev_value = array(prev_value) 144 145 values.each do |value| 146 prev_value.push(value) 147 end 148 values = prev_value 149 end 150 else 151 if settings[:array] 152 values = array(values) 153 elsif values.size == 1 154 values = values[0] 155 end 156 end 157 158 myself.result = values 159 network.config.set([ :settings, group, property ], result) 160 161 if network.save({ :remote => settings[:net_remote], :message => "Updating #{group} setting #{name}", :allow_empty => true }) 162 success('update', render_options) 163 else 164 error('update', render_options) 165 myself.status = code.settings_save_failed 166 end 167 end