--[[ Copyright (c) 2012-2014 Kaarle Ritvanen See LICENSE file for license details --]] local fld = require('aconf.model.field') local new = require('aconf.model.model').new local super = require('aconf.object').super local pth = require('aconf.path') local store = require('aconf.persistence') return function(name) local res = new() local addr = pth.join('/service', name) local eaddr = pth.join(addr, 'enabled') res.enabled = fld.Boolean{addr=eaddr, required=true} res.status = fld.String{addr=pth.join(addr, 'status'), editable=false} local function is_enabled() return store:get(eaddr) end local enabled local function pre() enabled = is_enabled() end local function post() if enabled and is_enabled() then os.execute('rc-service '..name..' reload') end end function res:init(context) store:trigger('pre', context.addr, pre) store:trigger('post', context.addr, post) super(self, res):init(context) end return res end