Class: ConcertoConfigServer

Inherits:
Sinatra::Base
  • Object
show all
Defined in:
lib/bandshell/application/app.rb

Constant Summary collapse

CONNECTION_METHODS =

push these over to netconfig.rb? Our list of available physical-layer connection methods...

[ 
	Bandshell::WiredConnection, 
	Bandshell::WirelessConnection 
]
ADDRESSING_METHODS =

... and available layer-3 addressing methods.

[ 
	Bandshell::DHCPAddressing, 
	Bandshell::StaticAddressing 
]
LOCALHOSTS =

Hosts we allow to access configuration without authenticating.

[ 
	IPAddress.parse("127.0.0.1"), 
	IPAddress.parse("::1") 
]

Instance Method Summary collapse

Instance Method Details

#do_assign(params, instance) ⇒ Object

Set the arguments on an instance of a given configuration class. This uses the safe_assign method that should be present in all configuration classes to determine which values are allowed to be passed via form fields (i.e. which ones are subject to validation)



243
244
245
246
247
248
249
250
251
# File 'lib/bandshell/application/app.rb', line 243

def do_assign(params, instance)
	safe = instance.safe_assign

	params.each do |param, value|
		if safe.include? param.intern
			instance.send((param + '=').intern, value)
		end
	end
end

#extract_class_args(params, target_class) ⇒ Object

Extract arguments from a set of form data that are intended to go to a specific network configuration class. These fields have names of the form 'ClassName/field_name'; this function returns a hash in the form { 'field_name' => 'value } containing the configuration arguments.



227
228
229
230
231
232
233
234
235
236
237
# File 'lib/bandshell/application/app.rb', line 227

def extract_class_args(params, target_class)
	result = { }
	params.each do |key, value|
		klass, arg = key.split('/', 2)
		if klass == target_class
			result[arg] = value
		end
	end

	result
end

#pick_class(name, list) ⇒ Object

Given the name of a class, pick a class out of a list of allowed classes. This is used for parsing the form input for network configuration.



219
220
221
# File 'lib/bandshell/application/app.rb', line 219

def pick_class(name, list)
	list.find { |klass| klass.basename == name }
end