-- the interfaces controller module (..., package.seeall) default_action = "read" status = function (self) return self.model.get_status() end read = function (self) local cmdresult if self.sessiondata.cmdresult then cmdresult = self.sessiondata.cmdresult end self.sessiondata.cmdresult = nil local retval = self.model.get_all_interfaces() retval.value.cmdresult = cmdresult return retval end -- Accepts form info -- Returns a cfe object (the form) update = function(self) local name = self.clientdata.name or "" -- If interface is not found, return to list local data = self.model.get_iface_by_name ( name ) if data.value.name.value == "" then redirect(self) end -- If the "Save" button was used, then attempt to do the update if self.clientdata.Save then -- update the iface info the form gave us for k,v in pairs (data.value) do if v.type == "boolean" then if self.clientdata[k] then v.value = true else v.value = false end elseif self.clientdata[k] then v.value = self.clientdata[k] end end data = self.model.update_iface ( data ) -- If validation worked then return to list if not data.errtxt then data.descr = "Updated Interface" end end -- If we reach this point in the function, then we are providing a form -- for the user to edit (either first time in, or validation failed) data.type = "form" data.option = "Save" data.label = "Update Interface" return data end delete = function(self) local name = self.clientdata.name or "" -- Attempt to delete the iface local cmdresult = self.model.delete_iface_by_name (name) self.sessiondata.cmdresult = cmdresult redirect_to_referrer(self) end ifup = function(self) local name = self.clientdata.name or "" -- Attempt to delete the iface local cmdresult = self.model.ifup_by_name (name) self.sessiondata.cmdresult = cmdresult redirect_to_referrer(self) end ifdown = function(self) local name = self.clientdata.name or "" -- Attempt to delete the iface local cmdresult = self.model.ifdown_by_name (name) self.sessiondata.cmdresult = cmdresult redirect_to_referrer(self) end create = function(self) local data = self.model.get_iface (self.clientdata.family, self.clientdata.method) -- If the "Create" button was used, then attempt to do the insert if self.clientdata.Create then for k,v in pairs (data.value) do if self.clientdata[k] then v.value = self.clientdata[k] end end data = self.model.create_iface ( data ) if not data.errtxt then data.descr = "Created Interface" redirect(self, "update?name="..data.value.name.value) elseif data.value.method and data.value.method.value == "" then data.value.method.errtxt = "Must define method" end end if data.value.family and data.value.family.value == "" then data.value.family.errtxt = "Must define family" end -- If we reach this point in the function, we are providing a form data.type = "form" data.option = "Create" data.label = "Create Interface" return data end editintfile = function(self) local data = self.model.get_file() if self.clientdata.Save then data.value.filecontent.value = self.clientdata.filecontent data = self.model.write_file(data) data.descr = "Saved file" end data.type = "form" data.option = "Save" data.label = "Edit Interfaces file" return data end