Source code for apstools.synApps.iocstats

"""
Ophyd support for the iocStats support


Public Structures

.. autosummary::

    ~IocStatsDevice

"""

from ophyd import Component
from ophyd import Device
from ophyd import EpicsSignalRO
from ophyd import Signal


[docs]class IocStatsDevice(Device): """ synApps IOC stats .. index:: Ophyd Device; synApps IocStatsDevice """ _app_dir1 = Component(EpicsSignalRO, "APP_DIR1", kind="omitted") _app_dir2 = Component(EpicsSignalRO, "APP_DIR2", kind="omitted") _startup_script1 = Component(EpicsSignalRO, "ST_SCRIPT1", kind="omitted") _startup_script2 = Component(EpicsSignalRO, "ST_SCRIPT2", kind="omitted") access = Component(EpicsSignalRO, "ACCESS", string=True, kind="config") ca_client_count = Component(EpicsSignalRO, "CA_CLNT_CNT") ca_connection_count = Component(EpicsSignalRO, "CA_CONN_CNT") cpu_count = Component(EpicsSignalRO, "CPU_CNT", kind="config") engineer = Component(EpicsSignalRO, "ENGINEER", kind="config") epics_version = Component(EpicsSignalRO, "EPICS_VERS", kind="config") file_descriptors_free = Component(EpicsSignalRO, "FD_FREE") file_descriptors_max_ = Component(EpicsSignalRO, "FD_MAX") heartbeat = Component(EpicsSignalRO, "HEARTBEAT", kind="omitted") host_name = Component(EpicsSignalRO, "HOSTNAME") ioc_cpu_load = Component(EpicsSignalRO, "IOC_CPU_LOAD") iso8601 = Component(EpicsSignalRO, "iso8601") kernel_version = Component(EpicsSignalRO, "KERNEL_VERS", kind="config") location = Component(EpicsSignalRO, "LOCATION") max_array_bytes = Component(EpicsSignalRO, "CA_MAX_ARRAY") memory_free = Component(EpicsSignalRO, "MEM_FREE") memory_max = Component(EpicsSignalRO, "MEM_MAX") memory_used = Component(EpicsSignalRO, "MEM_USED") records_count = Component(EpicsSignalRO, "RECORD_CNT") startup_time = Component(EpicsSignalRO, "STARTTOD", kind="config") suspended_task_count = Component(EpicsSignalRO, "SUSP_TASK_CNT") system_cpu_load = Component(EpicsSignalRO, "SYS_CPU_LOAD") time_of_day = Component(EpicsSignalRO, "TOD") timezone = Component(EpicsSignalRO, "TIMEZONE", kind="config") uptime = Component(EpicsSignalRO, ":UPTIME") # components updated from EpicsSignals application_directory = Component(Signal, value="", kind="config") memory_used_percentage = Component(Signal, value=0) startup_script = Component(Signal, value="") def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) def ad_update(value, *args, **kwargs): """ update ``application_directory`` Signal Instead of a @property, keep a Signal updated so it will be recorded with a Device.read() """ self.application_directory.put(self._app_dir1.get() + self._app_dir2.get()) self._app_dir1.subscribe(ad_update) self._app_dir2.subscribe(ad_update) def ss_update(value, *args, **kwargs): """ update ``startup_script`` Signal Instead of a @property, keep a Signal updated so it will be recorded with a Device.read() """ self.startup_script.put(self._startup_script1.get() + self._startup_script2.get()) self._startup_script1.subscribe(ss_update) self._startup_script2.subscribe(ss_update) def mem_used_update(value, *args, **kwargs): """ update ``memory_used_percentage`` Signal Instead of a @property, keep a Signal updated so it will be recorded with a Device.read() """ self.memory_used_percentage.put(100 * self.memory_used.get() / self.memory_max.get()) self.memory_used.subscribe(mem_used_update)
# ----------------------------------------------------------------------------- # :author: Pete R. Jemian # :email: jemian@anl.gov # :copyright: (c) 2017-2024, UChicago Argonne, LLC # # Distributed under the terms of the Argonne National Laboratory Open Source License. # # The full license is in the file LICENSE.txt, distributed with this software. # -----------------------------------------------------------------------------