--[[ Copyright (c) 2012-2015 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 address = require('aconf.path.address') local store = require('aconf.persistence') return function(name) local res = new() local addr = address.join('/service', name) local eaddr = address.join(addr, 'enabled') res.enabled = fld.Boolean{addr=eaddr, required=true} res.status = fld.String{ addr=address.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