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