コード例 #1
0
ファイル: main.py プロジェクト: GabrielDiniz/FluxNetControl
class HealthPlugin(CategoryPlugin):
    text = 'Monitoramento'
    icon = '/dl/health/icon.png'
    folder = 'top'

    def on_init(self):
        self.backend = Backend(self.app)
        self.mon = ComponentManager.get().find('health-monitor')

    def on_session_start(self):
        self._settings = False
        self._configuring = None

    def get_counter(self):
        lst = ComponentManager.get().find('health-monitor').get()
        return len(filter(lambda x:x!='good', lst.values())) or None

    def get_ui(self):
        ui = self.app.inflate('health:main')

        ostat = 'good'

        stat = { 'good': 'info', 'susp': 'warn', 'dang': 'err' }
        text = { 'good': 'BOM', 'susp': 'ATENÇÃO', 'dang': 'PERIGO' }

        for m in sorted(self.mon.get(), key=lambda x:x.name):
            st = self.mon.get()[m]
            if st == 'susp' and ostat == 'good':
                ostat = st
            if st == 'dang':
                ostat = st
            ui.append('list', UI.DTR(
                UI.StatusCell(status=stat[st], text=text[st]),
                UI.DTD(
                    UI.Label(text=m.name, bold=True),
                    UI.Label(text=m.text),
                ),
                UI.Label(
                    text=getattr(trans, 'trans_%s'%m.transform)(m.format_value())
                ),
                UI.DTD(
                    UI.TipIcon(
                        icon='/dl/core/ui/stock/edit.png',
                        id='config/%s/%s'%(m.plugin_id,m.variant),
                        text='Configurar',
                    ),
                ),
            ))

        if self._settings:
            ui.append('main', self.get_ui_settings())

        if self._configuring:
            ui.append('main', getattr(self, 'get_ui_cfg_%s'%self._configuring.type)(self._configuring))

        return ui

    def get_ui_settings(self):
        ui = self.app.inflate('health:settings')

        for m in self.backend.list_meters():
            for v in self.backend.list_variated(m):
                ui.append('list', UI.DTR(
                    UI.DTD(
                        UI.Label(text=v.name, bold=True),
                        UI.Label(text=v.text),
                    ),
                    UI.DTD(
                        UI.TipIcon(
                            icon='/dl/core/ui/stock/edit.png',
                            id='config/%s/%s'%(m.plugin_id,v.variant),
                            text='Configure',
                        ),
                        UI.TipIcon(
                            icon='/dl/core/ui/stock/delete.png',
                            id='disable/%s/%s'%(m.plugin_id,v.variant),
                            text='Disable',
                        ) if self.backend.has_cfg(m.plugin_id,v.variant) else None,
                    ),
                ))
        return ui

    @event('button/click')
    def on_click(self, event, params, vars=None):
        if params[0] == 'btnRefresh':
            self.mon.refresh()
        if params[0] == 'btnSettings':
            self._settings = True
        if params[0] == 'config':
            self._configuring = self.backend.get_meter(*params[1:])
        if params[0] == 'disable':
            self.backend.del_cfg(*params[1:])
            self.mon.refresh()

    @event('dialog/submit')
    def on_submit(self, event, params, vars=None):
        if params[0] == 'dlgSettings':
            self._settings = False
        if params[0] == 'dlgConfigure':
            if vars.getvalue('action', None) == 'OK':
                try:
                    getattr(self, 'apply_cfg_%s'%(self._configuring.type))(self._configuring, vars)
                except:
                    self.app.log.error('Invalid meter configuration')
                self.mon.refresh()
            self._configuring = None

    def get_ui_cfg_binary(self, cls):
        ui = self.app.inflate('health:cfg-binary')
        t = self.backend.get_cfg(cls.plugin_id, cls.variant).setdefault('good_state', True)
        ui.find('r-true').set('checked', t)
        ui.find('r-false').set('checked', not t)
        return ui

    def get_ui_cfg_decimal(self, cls):
        ui = self.app.inflate('health:cfg-decimal')
        c = self.backend.get_cfg(cls.plugin_id, cls.variant)
        ui.find('limit_susp').set('value', str(c.setdefault('limit_susp', 33.0)))
        ui.find('limit_dang').set('value', str(c.setdefault('limit_dang', 66.0)))
        return ui

    def get_ui_cfg_linear(self, cls):
        ui = self.app.inflate('health:cfg-linear')
        c = self.backend.get_cfg(cls.plugin_id, cls.variant)
        ui.find('limit_susp').set('value', str(c.setdefault('limit_susp', 33.0)))
        ui.find('limit_dang').set('value', str(c.setdefault('limit_dang', 66.0)))
        ui.find('max').set('text', 'Min: %.2f, max: %.2f'%(cls.get_min(), cls.get_max()))
        return ui

    def apply_cfg_binary(self, cls, vars):
        self.backend.set_cfg(cls.plugin_id, cls.variant, {'good_state': eval(vars.getvalue('val', 'True'))})

    def apply_cfg_decimal(self, cls, vars):
        self.backend.set_cfg(cls.plugin_id, cls.variant, {
            'limit_susp': float(vars.getvalue('lim_susp', True)),
            'limit_dang': float(vars.getvalue('lim_dang', True)),
        })

    apply_cfg_linear = apply_cfg_decimal
コード例 #2
0
class SysAlertsPlugin(CategoryPlugin):
    text = 'Alerts'
    iconfont = 'gen-warning'
    folder = 'bottom'

    def on_init(self):
        self.backend = Backend(self.app)
        self.mon = ComponentManager.get().find('sysalerts-monitor')

    def on_session_start(self):
        self._settings = False
        self._configuring = None

    def get_counter(self):
        lst = ComponentManager.get().find('sysalerts-monitor').get()
        return len(filter(lambda x:x!='good', lst.values())) or None

    def get_ui(self):
        ui = self.app.inflate('sysalerts:main')

        ostat = 'good'

        stat = { 'good': 'info', 'susp': 'warn', 'dang': 'err' }
        text = { 'good': 'GOOD', 'susp': 'WARNING', 'dang': 'DANGER' }

        for m in sorted(self.mon.get(), key=lambda x:x.name):
            st = self.mon.get()[m]
            if st == 'susp' and ostat == 'good':
                ostat = st
            if st == 'dang':
                ostat = st
            ui.append('list', UI.DTR(
                UI.StatusCell(status=stat[st], text=text[st]),
                UI.DTD(
                    UI.Label(text=m.name, bold=True),
                    UI.Label(text=m.text),
                ),
                UI.Label(
                    text=getattr(trans, 'trans_%s'%m.transform)(m.format_value())
                ),
                UI.DTD(
                    UI.TipIcon(
                        iconfont="gen-pencil-2",
                        id='config/%s/%s'%(m.plugin_id,m.variant),
                        text='Configure',
                    ),
                ),
            ))

        if self._settings:
            ui.append('main', self.get_ui_settings())

        if self._configuring:
            ui.append('main', getattr(self, 'get_ui_cfg_%s'%self._configuring.type)(self._configuring))

        return ui

    def get_ui_settings(self):
        ui = self.app.inflate('sysalerts:settings')

        for m in self.backend.list_meters():
            for v in self.backend.list_variated(m):
                ui.append('list', UI.DTR(
                    UI.DTD(
                        UI.Label(text=v.name, bold=True),
                        UI.Label(text=v.text),
                    ),
                    UI.DTD(
                        UI.TipIcon(
                            iconfont="gen-pencil-2",
                            id='config/%s/%s'%(m.plugin_id,self.enc_file(v.variant)),
                            text='Configure',
                        ),
                        UI.TipIcon(
                            iconfont="gen-cancel-circle",
                            id='disable/%s/%s'%(m.plugin_id,self.enc_file(v.variant)),
                            text='Disable',
                        ) if self.backend.has_cfg(m.plugin_id,v.variant) else None,
                    ),
                ))
        return ui

    def enc_file(self, path):
        path = path.replace('//','/')
        return base64.b64encode(path, altchars='+-').replace('=', '*')

    def dec_file(self, b64):
        return base64.b64decode(b64.replace('*', '='), altchars='+-')

    @event('button/click')
    def on_click(self, event, params, vars=None):
        if params[0] == 'btnRefresh':
            self.mon.refresh()
        if params[0] == 'btnSettings':
            self._settings = True
        if params[0] == 'config':
            self._configuring = self.backend.get_meter(params[1], self.dec_file(params[2]))
        if params[0] == 'disable':
            self.backend.del_cfg(params[1], self.dec_file(params[2]))
            self.mon.refresh()

    @event('dialog/submit')
    def on_submit(self, event, params, vars=None):
        if params[0] == 'dlgSettings':
            self._settings = False
        if params[0] == 'dlgConfigure':
            if vars.getvalue('action', None) == 'OK':
                try:
                    getattr(self, 'apply_cfg_%s'%(self._configuring.type))(self._configuring, vars)
                except:
                    self.app.log.error('Invalid meter configuration')
                self.mon.refresh()
            self._configuring = None

    def get_ui_cfg_binary(self, cls):
        ui = self.app.inflate('sysalerts:cfg-binary')
        t = self.backend.get_cfg(cls.plugin_id, cls.variant).setdefault('good_state', True)
        ui.find('r-true').set('checked', t)
        ui.find('r-false').set('checked', not t)
        return ui

    def get_ui_cfg_decimal(self, cls):
        ui = self.app.inflate('sysalerts:cfg-decimal')
        c = self.backend.get_cfg(cls.plugin_id, cls.variant)
        ui.find('limit_susp').set('value', str(c.setdefault('limit_susp', 33.0)))
        ui.find('limit_dang').set('value', str(c.setdefault('limit_dang', 66.0)))
        return ui

    def get_ui_cfg_linear(self, cls):
        ui = self.app.inflate('sysalerts:cfg-linear')
        c = self.backend.get_cfg(cls.plugin_id, cls.variant)
        ui.find('limit_susp').set('value', str(c.setdefault('limit_susp', 33.0)))
        ui.find('limit_dang').set('value', str(c.setdefault('limit_dang', 66.0)))
        ui.find('max').set('text', 'Min: %.2f, max: %.2f'%(cls.get_min(), cls.get_max()))
        return ui

    def apply_cfg_binary(self, cls, vars):
        self.backend.set_cfg(cls.plugin_id, cls.variant, {'good_state': eval(vars.getvalue('val', 'True'))})

    def apply_cfg_decimal(self, cls, vars):
        self.backend.set_cfg(cls.plugin_id, cls.variant, {
            'limit_susp': float(vars.getvalue('lim_susp', True)),
            'limit_dang': float(vars.getvalue('lim_dang', True)),
        })

    apply_cfg_linear = apply_cfg_decimal
コード例 #3
0
ファイル: main.py プロジェクト: jiningeast/netcontrol
class HealthPlugin(CategoryPlugin):
    text = 'Monitoramento'
    icon = '/dl/health/icon.png'
    folder = 'top'

    def on_init(self):
        self.backend = Backend(self.app)
        self.mon = ComponentManager.get().find('health-monitor')

    def on_session_start(self):
        self._settings = False
        self._configuring = None

    def get_counter(self):
        lst = ComponentManager.get().find('health-monitor').get()
        return len(filter(lambda x: x != 'good', lst.values())) or None

    def get_ui(self):
        ui = self.app.inflate('health:main')

        ostat = 'good'

        stat = {'good': 'info', 'susp': 'warn', 'dang': 'err'}
        text = {'good': 'BOM', 'susp': 'ATENÇÃO', 'dang': 'PERIGO'}

        for m in sorted(self.mon.get(), key=lambda x: x.name):
            st = self.mon.get()[m]
            if st == 'susp' and ostat == 'good':
                ostat = st
            if st == 'dang':
                ostat = st
            ui.append(
                'list',
                UI.DTR(
                    UI.StatusCell(status=stat[st], text=text[st]),
                    UI.DTD(
                        UI.Label(text=m.name, bold=True),
                        UI.Label(text=m.text),
                    ),
                    UI.Label(text=getattr(trans, 'trans_%s' %
                                          m.transform)(m.format_value())),
                    UI.DTD(
                        UI.TipIcon(
                            icon='/dl/core/ui/stock/edit.png',
                            id='config/%s/%s' % (m.plugin_id, m.variant),
                            text='Configurar',
                        ), ),
                ))

        if self._settings:
            ui.append('main', self.get_ui_settings())

        if self._configuring:
            ui.append(
                'main',
                getattr(self, 'get_ui_cfg_%s' % self._configuring.type)(
                    self._configuring))

        return ui

    def get_ui_settings(self):
        ui = self.app.inflate('health:settings')

        for m in self.backend.list_meters():
            for v in self.backend.list_variated(m):
                ui.append(
                    'list',
                    UI.DTR(
                        UI.DTD(
                            UI.Label(text=v.name, bold=True),
                            UI.Label(text=v.text),
                        ),
                        UI.DTD(
                            UI.TipIcon(
                                icon='/dl/core/ui/stock/edit.png',
                                id='config/%s/%s' % (m.plugin_id, v.variant),
                                text='Configure',
                            ),
                            UI.TipIcon(
                                icon='/dl/core/ui/stock/delete.png',
                                id='disable/%s/%s' % (m.plugin_id, v.variant),
                                text='Disable',
                            ) if self.backend.has_cfg(m.plugin_id, v.variant)
                            else None,
                        ),
                    ))
        return ui

    @event('button/click')
    def on_click(self, event, params, vars=None):
        if params[0] == 'btnRefresh':
            self.mon.refresh()
        if params[0] == 'btnSettings':
            self._settings = True
        if params[0] == 'config':
            self._configuring = self.backend.get_meter(*params[1:])
        if params[0] == 'disable':
            self.backend.del_cfg(*params[1:])
            self.mon.refresh()

    @event('dialog/submit')
    def on_submit(self, event, params, vars=None):
        if params[0] == 'dlgSettings':
            self._settings = False
        if params[0] == 'dlgConfigure':
            if vars.getvalue('action', None) == 'OK':
                try:
                    getattr(self, 'apply_cfg_%s' % (self._configuring.type))(
                        self._configuring, vars)
                except:
                    self.app.log.error('Invalid meter configuration')
                self.mon.refresh()
            self._configuring = None

    def get_ui_cfg_binary(self, cls):
        ui = self.app.inflate('health:cfg-binary')
        t = self.backend.get_cfg(cls.plugin_id,
                                 cls.variant).setdefault('good_state', True)
        ui.find('r-true').set('checked', t)
        ui.find('r-false').set('checked', not t)
        return ui

    def get_ui_cfg_decimal(self, cls):
        ui = self.app.inflate('health:cfg-decimal')
        c = self.backend.get_cfg(cls.plugin_id, cls.variant)
        ui.find('limit_susp').set('value',
                                  str(c.setdefault('limit_susp', 33.0)))
        ui.find('limit_dang').set('value',
                                  str(c.setdefault('limit_dang', 66.0)))
        return ui

    def get_ui_cfg_linear(self, cls):
        ui = self.app.inflate('health:cfg-linear')
        c = self.backend.get_cfg(cls.plugin_id, cls.variant)
        ui.find('limit_susp').set('value',
                                  str(c.setdefault('limit_susp', 33.0)))
        ui.find('limit_dang').set('value',
                                  str(c.setdefault('limit_dang', 66.0)))
        ui.find('max').set(
            'text', 'Min: %.2f, max: %.2f' % (cls.get_min(), cls.get_max()))
        return ui

    def apply_cfg_binary(self, cls, vars):
        self.backend.set_cfg(
            cls.plugin_id, cls.variant,
            {'good_state': eval(vars.getvalue('val', 'True'))})

    def apply_cfg_decimal(self, cls, vars):
        self.backend.set_cfg(
            cls.plugin_id, cls.variant, {
                'limit_susp': float(vars.getvalue('lim_susp', True)),
                'limit_dang': float(vars.getvalue('lim_dang', True)),
            })

    apply_cfg_linear = apply_cfg_decimal
コード例 #4
0
ファイル: main.py プロジェクト: bneg/genesis
class HealthPlugin(CategoryPlugin):
    text = "Health"
    icon = "/dl/health/icon.png"
    folder = "top"

    def on_init(self):
        self.backend = Backend(self.app)
        self.mon = ComponentManager.get().find("health-monitor")

    def on_session_start(self):
        self._settings = False
        self._configuring = None

    def get_counter(self):
        lst = ComponentManager.get().find("health-monitor").get()
        return len(filter(lambda x: x != "good", lst.values())) or None

    def get_ui(self):
        ui = self.app.inflate("health:main")

        ostat = "good"

        stat = {"good": "info", "susp": "warn", "dang": "err"}
        text = {"good": "GOOD", "susp": "WARNING", "dang": "DANGER"}

        for m in sorted(self.mon.get(), key=lambda x: x.name):
            st = self.mon.get()[m]
            if st == "susp" and ostat == "good":
                ostat = st
            if st == "dang":
                ostat = st
            ui.append(
                "list",
                UI.DTR(
                    UI.StatusCell(status=stat[st], text=text[st]),
                    UI.DTD(UI.Label(text=m.name, bold=True), UI.Label(text=m.text)),
                    UI.Label(text=getattr(trans, "trans_%s" % m.transform)(m.format_value())),
                    UI.DTD(
                        UI.TipIcon(
                            icon="/dl/core/ui/stock/edit.png",
                            id="config/%s/%s" % (m.plugin_id, m.variant),
                            text="Configure",
                        )
                    ),
                ),
            )

        if self._settings:
            ui.append("main", self.get_ui_settings())

        if self._configuring:
            ui.append("main", getattr(self, "get_ui_cfg_%s" % self._configuring.type)(self._configuring))

        return ui

    def get_ui_settings(self):
        ui = self.app.inflate("health:settings")

        for m in self.backend.list_meters():
            for v in self.backend.list_variated(m):
                ui.append(
                    "list",
                    UI.DTR(
                        UI.DTD(UI.Label(text=v.name, bold=True), UI.Label(text=v.text)),
                        UI.DTD(
                            UI.TipIcon(
                                icon="/dl/core/ui/stock/edit.png",
                                id="config/%s/%s" % (m.plugin_id, v.variant),
                                text="Configure",
                            ),
                            UI.TipIcon(
                                icon="/dl/core/ui/stock/delete.png",
                                id="disable/%s/%s" % (m.plugin_id, v.variant),
                                text="Disable",
                            )
                            if self.backend.has_cfg(m.plugin_id, v.variant)
                            else None,
                        ),
                    ),
                )
        return ui

    @event("button/click")
    def on_click(self, event, params, vars=None):
        if params[0] == "btnRefresh":
            self.mon.refresh()
        if params[0] == "btnSettings":
            self._settings = True
        if params[0] == "config":
            self._configuring = self.backend.get_meter(*params[1:])
        if params[0] == "disable":
            self.backend.del_cfg(*params[1:])
            self.mon.refresh()

    @event("dialog/submit")
    def on_submit(self, event, params, vars=None):
        if params[0] == "dlgSettings":
            self._settings = False
        if params[0] == "dlgConfigure":
            if vars.getvalue("action", None) == "OK":
                try:
                    getattr(self, "apply_cfg_%s" % (self._configuring.type))(self._configuring, vars)
                except:
                    self.app.log.error("Invalid meter configuration")
                self.mon.refresh()
            self._configuring = None

    def get_ui_cfg_binary(self, cls):
        ui = self.app.inflate("health:cfg-binary")
        t = self.backend.get_cfg(cls.plugin_id, cls.variant).setdefault("good_state", True)
        ui.find("r-true").set("checked", t)
        ui.find("r-false").set("checked", not t)
        return ui

    def get_ui_cfg_decimal(self, cls):
        ui = self.app.inflate("health:cfg-decimal")
        c = self.backend.get_cfg(cls.plugin_id, cls.variant)
        ui.find("limit_susp").set("value", str(c.setdefault("limit_susp", 33.0)))
        ui.find("limit_dang").set("value", str(c.setdefault("limit_dang", 66.0)))
        return ui

    def get_ui_cfg_linear(self, cls):
        ui = self.app.inflate("health:cfg-linear")
        c = self.backend.get_cfg(cls.plugin_id, cls.variant)
        ui.find("limit_susp").set("value", str(c.setdefault("limit_susp", 33.0)))
        ui.find("limit_dang").set("value", str(c.setdefault("limit_dang", 66.0)))
        ui.find("max").set("text", "Min: %.2f, max: %.2f" % (cls.get_min(), cls.get_max()))
        return ui

    def apply_cfg_binary(self, cls, vars):
        self.backend.set_cfg(cls.plugin_id, cls.variant, {"good_state": eval(vars.getvalue("val", "True"))})

    def apply_cfg_decimal(self, cls, vars):
        self.backend.set_cfg(
            cls.plugin_id,
            cls.variant,
            {
                "limit_susp": float(vars.getvalue("lim_susp", True)),
                "limit_dang": float(vars.getvalue("lim_dang", True)),
            },
        )

    apply_cfg_linear = apply_cfg_decimal