Commit 5f7e90f6 authored by Elisabetta Giani's avatar Elisabetta Giani
Browse files

update_lmcbaseclasses: move to SKA LMC Base classes version 0.4.0

Removed DeviceMeta.
Use of LMC Base classes enums type.
parent 2b517e4c
Loading
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -3,11 +3,18 @@ url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[[source]]
url = "https://nexus.engageska-portugal.pt/repository/pypi/simple"
verify_ssl = true
name = "nexus-hosted"

[packages]
# numpy and pytango versions must match those in the ska-python-builder image,
# otherwise pytango will be recompiled.
numpy = "==1.17.2"
pytango = "==9.3.1"
lmcbaseclasses= ">=0.4.0"

# itango is added to make it easier to exercise the device in a CLI session,
# but it's not mandatory. If you remove itango, you should also remove the
# 'RUN ipython profile create' line from Dockerfile.
+227 −210

File changed.

Preview size limit exceeded, changes collapsed.

+2 −3
Original line number Diff line number Diff line
@@ -13,13 +13,12 @@ Parent class of the CSP Beams Capability
"""
# PROTECTED REGION ID (CspBeamCapabilityBase.standardlibray_import) ENABLED START #
# Python standard library
from future.utils import with_metaclass
# PROTECTED REGION END# //CspBeamCapabilityBase.standardlibray_import
# PyTango imports
import tango
from tango import DebugIt
from tango.server import run
from tango.server import Device, DeviceMeta
from tango.server import Device
from tango.server import attribute, command
from tango.server import device_property
from tango import AttrQuality, DispLevel, DevState
@@ -32,7 +31,7 @@ from skabase.SKACapability import SKACapability
__all__ = ["CspBeamCapabilityBaseClass", "main"]


class CspBeamCapabilityBaseClass(with_metaclass(DeviceMeta, SKACapability)):
class CspBeamCapabilityBaseClass(SKACapability):
    """
    Parent class of the CSP Beams Capability

+4 −8
Original line number Diff line number Diff line
@@ -18,30 +18,26 @@ VlbiBeams, Receptors/Stations.
from __future__ import absolute_import
import sys
import os
from future.utils import with_metaclass
from collections import defaultdict
# PROTECTED REGION END# //CspMaster.standardlibray_import
# tango imports
import tango
from tango import DebugIt
from tango.server import run
from tango.server import Device, DeviceMeta
from tango.server import attribute, command
from tango.server import device_property
from tango import AttrQuality, DispLevel, DevState
from tango import AttrWriteType, PipeWriteType
# Additional import
# PROTECTED REGION ID(CspCapabilityMonitor.additionnal_import) ENABLED START #

from skabase.SKABaseDevice import SKABaseDevice
from skabase.auxiliary import utils
from csp_lmc_common.utils.cspcommons import HealthState, AdminMode, ObsState
 
from skabase.control_model import HealthState, AdminMode, ObsState, ObsMode
# PROTECTED REGION END #    //  CspCapabilityMonitor.additionnal_import

__all__ = ["CspCapabilityMonitor", "main"]

class CspCapabilityMonitor(with_metaclass(DeviceMeta,SKABaseDevice)):
class CspCapabilityMonitor(SKABaseDevice):
    """
    CSP.LMC Common Class designed to monitoring the SCM
    attributes of the CSP Capabilities: SearchBeams, TimingBeams,
@@ -138,7 +134,7 @@ class CspCapabilityMonitor(with_metaclass(DeviceMeta,SKABaseDevice)):
        self._unassigned_ids = [0]* len(self._capability_fqdn)
        self._capability_state = {fqdn:tango.DevState.DISABLE for fqdn in self._capability_fqdn}
        self._capability_health_state = {fqdn:HealthState.UNKNOWN for fqdn in self._capability_fqdn}
        self._capability_admin_mode = {fqdn:AdminMode.NOTFITTED for fqdn in self._capability_fqdn}
        self._capability_admin_mode = {fqdn:AdminMode.NOT_FITTED for fqdn in self._capability_fqdn}
        self._capability_obs_state = {fqdn:ObsState.IDLE for fqdn in self._capability_fqdn} 
        self._capability_membership = {fqdn:0 for fqdn in self._capability_fqdn}
        self._csp_tango_db = 0
@@ -242,7 +238,7 @@ class CspCapabilityMonitor(with_metaclass(DeviceMeta,SKABaseDevice)):
                if item.reason == "API_EventTimeout":
                    self._capability_state[dev_name] = tango.DevState.DISABLED
                    self._capability_health_state[dev_name] = HealthState.UNKNOWN
                    self._capability_admin_mode[dev_name] = AdminMode.NOTFITTED
                    self._capability_admin_mode[dev_name] = AdminMode.NOT_FITTED
                    self._capability_health_state[dev_name] = ObsState.IDLE
                log_msg = item.reason + ": on attribute " + str(evt.attr_name)
                print(log_msg)
+8 −8
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@ CSP.LMC Common Class for the CSPMaster TANGO Device.
# Python standard library
import sys
import os
from future.utils import with_metaclass
from collections import defaultdict
import threading
import time
@@ -26,7 +25,7 @@ import time
import tango
from tango import DebugIt
from tango.server import run
from tango.server import Device, DeviceMeta
from tango.server import Device
from tango.server import attribute, command
from tango.server import device_property
from tango import AttrQuality, EventType, DevState
@@ -36,14 +35,15 @@ from tango import AttrWriteType, DeviceProxy
#
from skabase.SKAMaster  import SKAMaster
from skabase.auxiliary import utils
from skabase.control_model import HealthState, AdminMode, ObsState
from .utils.decorators import AdminModeCheck, CmdInputArgsCheck
from .utils.cspcommons import HealthState, AdminMode, ObsState, CmdExecState
from .utils.cspcommons import CmdExecState
from . import release
# PROTECTED REGION END# //CspMaster.additional_import

__all__ = ["CspMaster", "main"]

class CspMaster(with_metaclass(DeviceMeta, SKAMaster)):
class CspMaster(SKAMaster):
    """
    CSP.LMC Common Class for the CSPMaster TANGO Device.

@@ -288,7 +288,7 @@ class CspMaster(with_metaclass(DeviceMeta, SKAMaster)):
        """
        self._update_csp_health_state()
        self.set_state(self._se_state[self.CspCbf])
        if self._admin_mode in [AdminMode.OFFLINE, AdminMode.NOTFITTED, AdminMode.RESERVED]:
        if self._admin_mode in [AdminMode.OFFLINE, AdminMode.NOT_FITTED, AdminMode.RESERVED]:
            self.set_state(tango.DevState.DISABLE)

    def _update_csp_health_state(self):
@@ -600,7 +600,7 @@ class CspMaster(with_metaclass(DeviceMeta, SKAMaster)):
        """
        # check if the device is exported in the TANGO DB (that is the server is running)
        if value not in [AdminMode.ONLINE, AdminMode.MAINTENANCE, AdminMode.OFFLINE,
                         AdminMode.NOTFITTED, AdminMode.RESERVED]:
                         AdminMode.NOT_FITTED, AdminMode.RESERVED]:
            msg = "Invalid {} value for adminMode attribute".format(value)
            tango.Except.throw_exception("Command failed",
                                             msg,
@@ -1176,7 +1176,7 @@ class CspMaster(with_metaclass(DeviceMeta, SKAMaster)):
        # return the State value of the Mid Cbf sub-element.
        self._se_state         = defaultdict(lambda: tango.DevState.DISABLE)
        self._se_health_state  = defaultdict(lambda: HealthState.UNKNOWN)
        self._se_admin_mode    = defaultdict(lambda: AdminMode.NOTFITTED)
        self._se_admin_mode    = defaultdict(lambda: AdminMode.NOT_FITTED)
        
        # build a dictionary with the (attr_name, value) of the memorized attributes
        # use memorized atrtibute if present, otherwise the default one
@@ -1431,7 +1431,7 @@ class CspMaster(with_metaclass(DeviceMeta, SKAMaster)):
        #TODO: what happens if one sub-element fails?
        # add check on timeout command execution
        self._admin_mode = value
        if self._admin_mode in [AdminMode.OFFLINE, AdminMode.NOTFITTED, AdminMode.RESERVED]:
        if self._admin_mode in [AdminMode.OFFLINE, AdminMode.NOT_FITTED, AdminMode.RESERVED]:
            self.set_state(tango.DevState.DISABLE)
        else:
            if self.get_state() == tango.DevState.DISABLE:
Loading