diff --git a/skabase/SKACapability/SKACapability.xmi b/skabase/SKACapability/SKACapability.xmi index 9e6aba3ddabfc3acd0032790c63ce27aa11984e5..05859ed113be94307449a2044f6c79798d99be2c 100644 --- a/skabase/SKACapability/SKACapability.xmi +++ b/skabase/SKACapability/SKACapability.xmi @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="ASCII"?> <pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl"> <classes name="SKACapability" pogoRevision="9.6"> - <description description="Subarray handling device" title="SKACapability" sourcePath="/home/kat/src/levpro/skabase/SKACapability" language="PythonHL" filestogenerate="XMI file,Code files, Python Package, Protected Regions" license="GPL" copyright="" hasMandatoryProperty="true" hasConcreteProperty="true" hasAbstractCommand="true" hasAbstractAttribute="false"> + <description description="Subarray handling device" title="SKACapability" sourcePath="/home/tango-cs/src/levpro/skabase/SKACapability" language="PythonHL" filestogenerate="XMI file,Code files,Python Package,Protected Regions" license="GPL" copyright="" hasMandatoryProperty="true" hasConcreteProperty="true" hasAbstractCommand="true" hasAbstractAttribute="false"> <inheritances classname="Device_Impl" sourcePath=""/> <inheritances classname="SKAObsDevice" sourcePath="../SKAObsDevice"/> <identification contact="at ska.ac.za - cam" author="cam" emailDomain="ska.ac.za" classFamily="SkaBase" siteSpecific="" platform="All Platforms" bus="Not Applicable" manufacturer="none" reference=""/> @@ -25,11 +25,13 @@ <DefaultPropValue>localhost</DefaultPropValue> </deviceProperties> <deviceProperties name="MetricList" description="A subset of attributes we want to expose as metrics for this device."> - <type xsi:type="pogoDsl:StringType"/> + <type xsi:type="pogoDsl:StringVectorType"/> <status abstract="false" inherited="true" concrete="true"/> - <DefaultPropValue>healthState,adminMode,controlMode</DefaultPropValue> + <DefaultPropValue>healthState</DefaultPropValue> + <DefaultPropValue>adminMode</DefaultPropValue> + <DefaultPropValue>controlMode</DefaultPropValue> </deviceProperties> - <deviceProperties name="GroupDefinitions" description="List of grouped devices managed by a master. Each string in the array is a JSON 
document defining the ``groupname``, ``devices`` and ``groups`` in the group.
A proxy client will be opened for each of the managed devices.
A group will be instantiated for the managed devices per group.
Each entry in the array contains a JSON defining the group, like:
[ {``groupname``: ``group1``, 
 ``devices``: ``csv list of devices in group1``},
 {``groupname``: ``group2``, # a group with devices and a subgroup
 ``devices``: ``csv list of devices in group2``,
 ``groups`` : ``csv list of sub groups``},
 {``groupname``: ``group3``, 
 ``devices`` : ``csv list of devices in group3``}},
 {``groupname``: ``group4``, # a group with only subgroups
 ``groups`` : ``csv list of sub groups``}}]

e.g. for a hierarchy of racks, servers and switches
[{ ``groupname``: ``servers``, 
 ``devices``: ``elt/server/1,elt/server/2,elt/server/3,elt/server/4``},
 {``groupname``: ``switches``, 
 ``devices``: ``elt/switch/A,elt/switch/B``},
 {``groupname``: ``pdus``, 
 ``devices``: ``elt/pdu/rackA,elt/pdu/rackB``},
 {``groupname``:``rackA``, 
 ``devices``: ``elt/server/1,elt/server/2,elt/switch/A,elt/pdu/rackA``},
 {``groupname``:``rackB``,
 ``devices``: ``elt/server/3,elt/server/4,elt/switch/B,elt/pdu/rackB``},
 {``groupname``:``racks``,
 ``groups``: ``rackA,rackB``}]"> + <deviceProperties name="GroupDefinitions" description="Each string in the list is a JSON serialised dict defining the ``group_name``,
``devices`` and ``subgroups`` in the group. A TANGO Group object is created
for each item in the list, according to the hierarchy defined. This provides
easy access to the managed devices in bulk, or individually.

The general format of the list is as follows, with optional ``devices`` and
``subgroups`` keys:
 [ {``group_name``: ``<name>``,
 ``devices``: [``<dev name>``, ...]},
 {``group_name``: ``<name>``,
 ``devices``: [``<dev name>``, ``<dev name>``, ...],
 ``subgroups`` : [{<nested group>},
 {<nested group>}, ...]},
 ...
 ]

For example, a hierarchy of racks, servers and switches:
 [ {``group_name``: ``servers``,
 ``devices``: [``elt/server/1``, ``elt/server/2``,
 ``elt/server/3``, ``elt/server/4``]},
 {``group_name``: ``switches``,
 ``devices``: [``elt/switch/A``, ``elt/switch/B``]},
 {``group_name``: ``pdus``,
 ``devices``: [``elt/pdu/rackA``, ``elt/pdu/rackB``]},
 {``group_name``: ``racks``,
 ``subgroups``: [
 {``group_name``: ``rackA``,
 ``devices``: [``elt/server/1``, ``elt/server/2``,
 ``elt/switch/A``, ``elt/pdu/rackA``]},
 {``group_name``: ``rackB``,
 ``devices``: [``elt/server/3``, ``elt/server/4``,
 ``elt/switch/B``, ``elt/pdu/rackB``],
 ``subgroups``: []}
 ]} ]"> <type xsi:type="pogoDsl:StringVectorType"/> <status abstract="false" inherited="true" concrete="true"/> </deviceProperties> @@ -54,14 +56,14 @@ </argout> <status abstract="true" inherited="true" concrete="false"/> </commands> - <commands name="Reset" description="Reset device to its default state" execMethod="reset" displayLevel="OPERATOR" polledPeriod="0"> + <commands name="Reset" description="Reset device to its default state" execMethod="reset" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false"> <argin description=""> <type xsi:type="pogoDsl:VoidType"/> </argin> <argout description=""> <type xsi:type="pogoDsl:VoidType"/> </argout> - <status abstract="true" inherited="true" concrete="false"/> + <status abstract="false" inherited="true" concrete="true" concreteHere="true"/> </commands> <commands name="State" description="This command gets the device state (stored in its device_state data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0"> <argin description="none"> @@ -155,12 +157,12 @@ <status abstract="false" inherited="true" concrete="true"/> <properties description="Build state of this device" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> - <attributes name="centralLoggingLevel" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true"> + <attributes name="centralLoggingLevel" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true"> <dataType xsi:type="pogoDsl:UShortType"/> <status abstract="false" inherited="true" concrete="true"/> <properties description="Current logging level to Central logging target for this device - 
initialises to CentralLoggingLevelDefault on startup" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> - <attributes name="elementLoggingLevel" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true"> + <attributes name="elementLoggingLevel" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true"> <dataType xsi:type="pogoDsl:UShortType"/> <status abstract="false" inherited="true" concrete="true"/> <properties description="Current logging level to Element logging target for this device - 
initialises to ElementLoggingLevelDefault on startup" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> diff --git a/skabase/SKACapability/SKACapability/SKACapability.py b/skabase/SKACapability/SKACapability/SKACapability.py index 2d3fbd18547977519496ee7ed689697b1d08d0f8..ee6cd82b4674e6e8659cb3c4e6eb7ab97765551a 100644 --- a/skabase/SKACapability/SKACapability/SKACapability.py +++ b/skabase/SKACapability/SKACapability/SKACapability.py @@ -144,6 +144,14 @@ class SKACapability(SKAObsDevice): # Commands # -------- + @command( + ) + @DebugIt() + def Reset(self): + # PROTECTED REGION ID(SKACapability.Reset) ENABLED START # + pass + # PROTECTED REGION END # // SKACapability.Reset + @command( dtype_in='uint16', doc_in="The number of instances to configure for this Capability.", diff --git a/skabase/SKACapability/test/SKACapability_test.py b/skabase/SKACapability/test/SKACapability_test.py index 596da2839b4fe716363924e6d34d7118f13b3c09..461a97a3c53b4cc15e0ccb666da63638f237f6aa 100644 --- a/skabase/SKACapability/test/SKACapability_test.py +++ b/skabase/SKACapability/test/SKACapability_test.py @@ -39,7 +39,7 @@ class SKACapabilityDeviceTestCase(DeviceTestCase): # PROTECTED REGION ID(SKACapability.test_additionnal_import) ENABLED START # # PROTECTED REGION END # // SKACapability.test_additionnal_import device = SKACapability - properties = {'SkaLevel': '4', 'CentralLoggingTarget': '', 'ElementLoggingTarget': '', 'StorageLoggingTarget': 'localhost', 'MetricList': 'healthState,adminMode,controlMode', 'GroupDefinitions': '', 'CapType': '', 'CapID': '', 'subID': '', + properties = {'SkaLevel': '4', 'CentralLoggingTarget': '', 'ElementLoggingTarget': '', 'StorageLoggingTarget': 'localhost', 'MetricList': 'healthState', 'GroupDefinitions': '', 'CapType': '', 'CapID': '', 'subID': '', } empty = None # Should be [] diff --git a/skabase/SKALogger/SKALogger.xmi b/skabase/SKALogger/SKALogger.xmi index 240416f3e823c6dd7b8e0eea5ae688975ca2ec4f..6dab222d5f7a154a522dab60a957f617d68bbfaa 100644 --- a/skabase/SKALogger/SKALogger.xmi +++ b/skabase/SKALogger/SKALogger.xmi @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="ASCII"?> <pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl"> <classes name="SKALogger" pogoRevision="9.6"> - <description description="A generic base device for Logging for SKA." title="SKALogger" sourcePath="/home/kat/src/levpro/skabase/SKALogger" language="PythonHL" filestogenerate="XMI file,Code files, Python Package, Protected Regions" license="GPL" copyright="" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="true" hasAbstractAttribute="false"> + <description description="A generic base device for Logging for SKA." title="SKALogger" sourcePath="/home/tango-cs/src/levpro/skabase/SKALogger" language="PythonHL" filestogenerate="XMI file,Code files,Python Package,Protected Regions" license="GPL" copyright="" hasMandatoryProperty="false" hasConcreteProperty="true" hasAbstractCommand="false" hasAbstractAttribute="false"> <inheritances classname="Device_Impl" sourcePath=""/> <inheritances classname="SKABaseDevice" sourcePath="../SKABaseDevice"/> <identification contact="at ska.ac.za - cam" author="cam" emailDomain="ska.ac.za" classFamily="OtherInstruments" siteSpecific="" platform="All Platforms" bus="Not Applicable" manufacturer="SKASA" reference="SKA-SKALogger"/> @@ -12,11 +12,13 @@ <DefaultPropValue>4</DefaultPropValue> </deviceProperties> <deviceProperties name="MetricList" description="A subset of attributes we want to expose as metrics for this device."> - <type xsi:type="pogoDsl:StringType"/> + <type xsi:type="pogoDsl:StringVectorType"/> <status abstract="false" inherited="true" concrete="true"/> - <DefaultPropValue>healthState,adminMode,controlMode</DefaultPropValue> + <DefaultPropValue>healthState</DefaultPropValue> + <DefaultPropValue>adminMode</DefaultPropValue> + <DefaultPropValue>controlMode</DefaultPropValue> </deviceProperties> - <deviceProperties name="GroupDefinitions" description="List of grouped devices managed by a master. Each string in the array is a JSON 
document defining the ``groupname``, ``devices`` and ``groups`` in the group.
A proxy client will be opened for each of the managed devices.
A group will be instantiated for the managed devices per group.
Each entry in the array contains a JSON defining the group, like:
[ {``groupname``: ``group1``, 
 ``devices``: ``csv list of devices in group1``},
 {``groupname``: ``group2``, # a group with devices and a subgroup
 ``devices``: ``csv list of devices in group2``,
 ``groups`` : ``csv list of sub groups``},
 {``groupname``: ``group3``, 
 ``devices`` : ``csv list of devices in group3``}},
 {``groupname``: ``group4``, # a group with only subgroups
 ``groups`` : ``csv list of sub groups``}}]

e.g. for a hierarchy of racks, servers and switches
[{ ``groupname``: ``servers``, 
 ``devices``: ``elt/server/1,elt/server/2,elt/server/3,elt/server/4``},
 {``groupname``: ``switches``, 
 ``devices``: ``elt/switch/A,elt/switch/B``},
 {``groupname``: ``pdus``, 
 ``devices``: ``elt/pdu/rackA,elt/pdu/rackB``},
 {``groupname``:``rackA``, 
 ``devices``: ``elt/server/1,elt/server/2,elt/switch/A,elt/pdu/rackA``},
 {``groupname``:``rackB``,
 ``devices``: ``elt/server/3,elt/server/4,elt/switch/B,elt/pdu/rackB``},
 {``groupname``:``racks``,
 ``groups``: ``rackA,rackB``}]"> + <deviceProperties name="GroupDefinitions" description="Each string in the list is a JSON serialised dict defining the ``group_name``,
``devices`` and ``subgroups`` in the group. A TANGO Group object is created
for each item in the list, according to the hierarchy defined. This provides
easy access to the managed devices in bulk, or individually.

The general format of the list is as follows, with optional ``devices`` and
``subgroups`` keys:
 [ {``group_name``: ``<name>``,
 ``devices``: [``<dev name>``, ...]},
 {``group_name``: ``<name>``,
 ``devices``: [``<dev name>``, ``<dev name>``, ...],
 ``subgroups`` : [{<nested group>},
 {<nested group>}, ...]},
 ...
 ]

For example, a hierarchy of racks, servers and switches:
 [ {``group_name``: ``servers``,
 ``devices``: [``elt/server/1``, ``elt/server/2``,
 ``elt/server/3``, ``elt/server/4``]},
 {``group_name``: ``switches``,
 ``devices``: [``elt/switch/A``, ``elt/switch/B``]},
 {``group_name``: ``pdus``,
 ``devices``: [``elt/pdu/rackA``, ``elt/pdu/rackB``]},
 {``group_name``: ``racks``,
 ``subgroups``: [
 {``group_name``: ``rackA``,
 ``devices``: [``elt/server/1``, ``elt/server/2``,
 ``elt/switch/A``, ``elt/pdu/rackA``]},
 {``group_name``: ``rackB``,
 ``devices``: [``elt/server/3``, ``elt/server/4``,
 ``elt/switch/B``, ``elt/pdu/rackB``],
 ``subgroups``: []}
 ]} ]"> <type xsi:type="pogoDsl:StringVectorType"/> <status abstract="false" inherited="true" concrete="true"/> </deviceProperties> @@ -48,7 +50,7 @@ <status abstract="false" inherited="false" concrete="true"/> <DefaultPropValue>4</DefaultPropValue> </deviceProperties> - <commands name="Log" description="LogConsumer interface" displayLevel="OPERATOR" polledPeriod="0"> + <commands name="Log" description="LogConsumer interface" execMethod="log" displayLevel="OPERATOR" polledPeriod="0"> <argin description="none"> <type xsi:type="pogoDsl:StringArrayType"/> </argin> @@ -102,14 +104,14 @@ </argout> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> </commands> - <commands name="Reset" description="Reset device to its default state" execMethod="reset" displayLevel="OPERATOR" polledPeriod="0"> + <commands name="Reset" description="Reset device to its default state" execMethod="reset" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false"> <argin description=""> <type xsi:type="pogoDsl:VoidType"/> </argin> <argout description=""> <type xsi:type="pogoDsl:VoidType"/> </argout> - <status abstract="true" inherited="true" concrete="false"/> + <status abstract="false" inherited="true" concrete="true" concreteHere="true"/> </commands> <commands name="GetMetrics" description="Gets list of attributes marked as metrics, with their values, 
for device" execMethod="get_metrics" displayLevel="OPERATOR" polledPeriod="0"> <argin description=""> diff --git a/skabase/SKALogger/SKALogger/SKALogger.py b/skabase/SKALogger/SKALogger/SKALogger.py index 5bb0474f08c332f099924bfba2db2312a50c0ee4..6761bf3890b9cd6a4aa16514289415015b34c874 100644 --- a/skabase/SKALogger/SKALogger/SKALogger.py +++ b/skabase/SKALogger/SKALogger/SKALogger.py @@ -159,6 +159,14 @@ class SKALogger(SKABaseDevice): pass # PROTECTED REGION END # // SKALogger.SetStorageLoggingLevel + @command( + ) + @DebugIt() + def Reset(self): + # PROTECTED REGION ID(SKALogger.Reset) ENABLED START # + pass + # PROTECTED REGION END # // SKALogger.Reset + # ---------- # Run server # ---------- diff --git a/skabase/SKALogger/test/SKALogger_test.py b/skabase/SKALogger/test/SKALogger_test.py index 45b3a76887acc1f69259c9d30d0c2ebd13242222..65824447af7d8dfe0da4ab9270ea12eb78206f95 100644 --- a/skabase/SKALogger/test/SKALogger_test.py +++ b/skabase/SKALogger/test/SKALogger_test.py @@ -39,7 +39,7 @@ class SKALoggerDeviceTestCase(DeviceTestCase): # PROTECTED REGION ID(SKALogger.test_additionnal_import) ENABLED START # # PROTECTED REGION END # // SKALogger.test_additionnal_import device = SKALogger - properties = {'SkaLevel': '4', 'MetricList': 'healthState,adminMode,controlMode', 'GroupDefinitions': '', 'CentralLoggingTarget': '', 'ElementLoggingTarget': '', 'StorageLoggingTarget': 'localhost', 'CentralLoggingLevelDefault': '2', 'ElementLoggingLevelDefault': '3', 'StorageLoggingLevelDefault': '4', + properties = {'SkaLevel': '4', 'MetricList': 'healthState', 'GroupDefinitions': '', 'CentralLoggingTarget': '', 'ElementLoggingTarget': '', 'StorageLoggingTarget': 'localhost', 'CentralLoggingLevelDefault': '2', 'ElementLoggingLevelDefault': '3', 'StorageLoggingLevelDefault': '4', } empty = None # Should be [] diff --git a/skabase/SKAObsDevice/SKAObsDevice.xmi b/skabase/SKAObsDevice/SKAObsDevice.xmi index 8e7ef6a668ed9906fc156a0fab9a0c31f03b1ccf..32b9d742af1b9891858cc7d58d5b49d8c3deda7a 100644 --- a/skabase/SKAObsDevice/SKAObsDevice.xmi +++ b/skabase/SKAObsDevice/SKAObsDevice.xmi @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="ASCII"?> <pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl"> <classes name="SKAObsDevice" pogoRevision="9.6"> - <description description="A generic base device for Observations for SKA." title="SKAObsDevice" sourcePath="/home/kat/src/levpro/skabase/SKAObsDevice" language="PythonHL" filestogenerate="XMI file,Code files, Python Package, Protected Regions" license="GPL" copyright="" hasMandatoryProperty="false" hasConcreteProperty="false" hasAbstractCommand="true" hasAbstractAttribute="false"> + <description description="A generic base device for Observations for SKA." title="SKAObsDevice" sourcePath="/home/tango-cs/src/levpro/skabase/SKAObsDevice" language="PythonHL" filestogenerate="XMI file,Code files,Python Package,Protected Regions" license="GPL" copyright="" hasMandatoryProperty="false" hasConcreteProperty="false" hasAbstractCommand="true" hasAbstractAttribute="false"> <inheritances classname="Device_Impl" sourcePath=""/> <inheritances classname="SKABaseDevice" sourcePath="../SKABaseDevice"/> <identification contact="at ska.ac.za - cam" author="cam" emailDomain="ska.ac.za" classFamily="OtherInstruments" siteSpecific="" platform="All Platforms" bus="Not Applicable" manufacturer="SKASA" reference="SKA-SKAObsDevice"/> @@ -25,11 +25,13 @@ <DefaultPropValue>localhost</DefaultPropValue> </deviceProperties> <deviceProperties name="MetricList" description="A subset of attributes we want to expose as metrics for this device."> - <type xsi:type="pogoDsl:StringType"/> + <type xsi:type="pogoDsl:StringVectorType"/> <status abstract="false" inherited="true" concrete="true"/> - <DefaultPropValue>healthState,adminMode,controlMode</DefaultPropValue> + <DefaultPropValue>healthState</DefaultPropValue> + <DefaultPropValue>adminMode</DefaultPropValue> + <DefaultPropValue>controlMode</DefaultPropValue> </deviceProperties> - <deviceProperties name="GroupDefinitions" description="List of grouped devices managed by a master. Each string in the array is a JSON 
document defining the ``groupname``, ``devices`` and ``groups`` in the group.
A proxy client will be opened for each of the managed devices.
A group will be instantiated for the managed devices per group.
Each entry in the array contains a JSON defining the group, like:
[ {``groupname``: ``group1``, 
 ``devices``: ``csv list of devices in group1``},
 {``groupname``: ``group2``, # a group with devices and a subgroup
 ``devices``: ``csv list of devices in group2``,
 ``groups`` : ``csv list of sub groups``},
 {``groupname``: ``group3``, 
 ``devices`` : ``csv list of devices in group3``}},
 {``groupname``: ``group4``, # a group with only subgroups
 ``groups`` : ``csv list of sub groups``}}]

e.g. for a hierarchy of racks, servers and switches
[{ ``groupname``: ``servers``, 
 ``devices``: ``elt/server/1,elt/server/2,elt/server/3,elt/server/4``},
 {``groupname``: ``switches``, 
 ``devices``: ``elt/switch/A,elt/switch/B``},
 {``groupname``: ``pdus``, 
 ``devices``: ``elt/pdu/rackA,elt/pdu/rackB``},
 {``groupname``:``rackA``, 
 ``devices``: ``elt/server/1,elt/server/2,elt/switch/A,elt/pdu/rackA``},
 {``groupname``:``rackB``,
 ``devices``: ``elt/server/3,elt/server/4,elt/switch/B,elt/pdu/rackB``},
 {``groupname``:``racks``,
 ``groups``: ``rackA,rackB``}]"> + <deviceProperties name="GroupDefinitions" description="Each string in the list is a JSON serialised dict defining the ``group_name``,
``devices`` and ``subgroups`` in the group. A TANGO Group object is created
for each item in the list, according to the hierarchy defined. This provides
easy access to the managed devices in bulk, or individually.

The general format of the list is as follows, with optional ``devices`` and
``subgroups`` keys:
 [ {``group_name``: ``<name>``,
 ``devices``: [``<dev name>``, ...]},
 {``group_name``: ``<name>``,
 ``devices``: [``<dev name>``, ``<dev name>``, ...],
 ``subgroups`` : [{<nested group>},
 {<nested group>}, ...]},
 ...
 ]

For example, a hierarchy of racks, servers and switches:
 [ {``group_name``: ``servers``,
 ``devices``: [``elt/server/1``, ``elt/server/2``,
 ``elt/server/3``, ``elt/server/4``]},
 {``group_name``: ``switches``,
 ``devices``: [``elt/switch/A``, ``elt/switch/B``]},
 {``group_name``: ``pdus``,
 ``devices``: [``elt/pdu/rackA``, ``elt/pdu/rackB``]},
 {``group_name``: ``racks``,
 ``subgroups``: [
 {``group_name``: ``rackA``,
 ``devices``: [``elt/server/1``, ``elt/server/2``,
 ``elt/switch/A``, ``elt/pdu/rackA``]},
 {``group_name``: ``rackB``,
 ``devices``: [``elt/server/3``, ``elt/server/4``,
 ``elt/switch/B``, ``elt/pdu/rackB``],
 ``subgroups``: []}
 ]} ]"> <type xsi:type="pogoDsl:StringVectorType"/> <status abstract="false" inherited="true" concrete="true"/> </deviceProperties> @@ -42,14 +44,14 @@ </argout> <status abstract="true" inherited="false" concrete="false" concreteHere="false"/> </commands> - <commands name="Reset" description="Reset device to its default state" execMethod="reset" displayLevel="OPERATOR" polledPeriod="0"> + <commands name="Reset" description="Reset device to its default state" execMethod="reset" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false"> <argin description=""> <type xsi:type="pogoDsl:VoidType"/> </argin> <argout description=""> <type xsi:type="pogoDsl:VoidType"/> </argout> - <status abstract="true" inherited="true" concrete="false"/> + <status abstract="false" inherited="true" concrete="true" concreteHere="true"/> </commands> <commands name="State" description="This command gets the device state (stored in its device_state data member) and returns it to the caller." execMethod="dev_state" displayLevel="OPERATOR" polledPeriod="0"> <argin description="none"> @@ -144,83 +146,73 @@ <status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <properties description="Configuration delay expected in seconds" label="" unit="seconds" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> - <attributes name="buildState" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="60000" maxX="" maxY="" allocReadMember="true" isDynamic="false"> + <attributes name="buildState" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="60000" maxX="" maxY="" allocReadMember="true"> <dataType xsi:type="pogoDsl:StringType"/> <changeEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/> - <dataReadyEvent fire="false" libCheckCriteria="true"/> <status abstract="false" inherited="true" concrete="true" concreteHere="false"/> <properties description="Build state of this device" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> - <attributes name="versionId" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="60000" maxX="" maxY="" allocReadMember="true" isDynamic="false"> + <attributes name="versionId" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="60000" maxX="" maxY="" allocReadMember="true"> <dataType xsi:type="pogoDsl:StringType"/> <changeEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/> - <dataReadyEvent fire="false" libCheckCriteria="true"/> <status abstract="false" inherited="true" concrete="true" concreteHere="false"/> <properties description="Build state of this device" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> - <attributes name="centralLoggingLevel" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" allocReadMember="true" isDynamic="false"> + <attributes name="centralLoggingLevel" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" allocReadMember="true"> <dataType xsi:type="pogoDsl:UShortType"/> <changeEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/> - <dataReadyEvent fire="false" libCheckCriteria="true"/> <status abstract="false" inherited="true" concrete="true" concreteHere="false"/> <properties description="Current logging level to Central logging target for this device - 
initialises to CentralLoggingLevelDefault on startup" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> - <attributes name="elementLoggingLevel" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" allocReadMember="true" isDynamic="false"> + <attributes name="elementLoggingLevel" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" allocReadMember="true"> <dataType xsi:type="pogoDsl:UShortType"/> <changeEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/> - <dataReadyEvent fire="false" libCheckCriteria="true"/> <status abstract="false" inherited="true" concrete="true" concreteHere="false"/> <properties description="Current logging level to Element logging target for this device - 
initialises to ElementLoggingLevelDefault on startup" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> - <attributes name="storageLoggingLevel" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" memorized="true" allocReadMember="true" isDynamic="false"> + <attributes name="storageLoggingLevel" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" memorized="true" allocReadMember="true"> <dataType xsi:type="pogoDsl:UShortType"/> <changeEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/> - <dataReadyEvent fire="false" libCheckCriteria="true"/> <status abstract="false" inherited="true" concrete="true" concreteHere="false"/> <properties description="Current logging level to Syslog for this device - 
initialises from StorageLoggingLevelDefault on first execution of device.
Needs to be READ_WRITE To make it memorized - but writing this attribute should 
do the same as command SetStorageLoggingLevel to ensure the targets and adjustments
are made correctly" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> - <attributes name="healthState" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" allocReadMember="true" isDynamic="false"> + <attributes name="healthState" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" allocReadMember="true"> <dataType xsi:type="pogoDsl:EnumType"/> <changeEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/> - <dataReadyEvent fire="false" libCheckCriteria="true"/> <status abstract="false" inherited="true" concrete="true" concreteHere="false"/> <properties description="The health state reported for this device. It interprets the current device condition 
and condition of all managed devices to set this. Most possibly an aggregate attribute." label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> - <attributes name="adminMode" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" memorized="true" allocReadMember="true" isDynamic="false"> + <attributes name="adminMode" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" memorized="true" allocReadMember="true"> <dataType xsi:type="pogoDsl:EnumType"/> <changeEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/> - <dataReadyEvent fire="false" libCheckCriteria="true"/> <status abstract="false" inherited="true" concrete="true" concreteHere="false"/> <properties description="The admin mode reported for this device. It may interpret the current device condition 
and condition of all managed devices to set this. Most possibly an aggregate attribute." label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> - <attributes name="controlMode" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" memorized="true" allocReadMember="true" isDynamic="false"> + <attributes name="controlMode" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" memorized="true" allocReadMember="true"> <dataType xsi:type="pogoDsl:EnumType"/> <changeEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/> - <dataReadyEvent fire="false" libCheckCriteria="true"/> <status abstract="false" inherited="true" concrete="true" concreteHere="false"/> <properties description="The control mode of the device. REMOTE, LOCAL
TANGO Device accepts only from a ‘local’ client and ignores commands and queries received from TM
or any other ‘remote’ clients. The Local clients has to release LOCAL control before REMOTE clients
can take control again." label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> - <attributes name="simulationMode" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" memorized="true" allocReadMember="true" isDynamic="false"> + <attributes name="simulationMode" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" memorized="true" allocReadMember="true"> <dataType xsi:type="pogoDsl:BooleanType"/> <changeEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/> - <dataReadyEvent fire="false" libCheckCriteria="true"/> <status abstract="false" inherited="true" concrete="true" concreteHere="false"/> <properties description="Reports the simulation mode of the device. Some devices may implement both modes,
while others will have simulators that set simulationMode to True while the real
devices always set simulationMode to False." label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> - <attributes name="testMode" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" memorized="true" allocReadMember="true" isDynamic="false"> + <attributes name="testMode" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="1000" maxX="" maxY="" memorized="true" allocReadMember="true"> <dataType xsi:type="pogoDsl:StringType"/> <changeEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/> - <dataReadyEvent fire="false" libCheckCriteria="true"/> <status abstract="false" inherited="true" concrete="true" concreteHere="false"/> <properties description="The test mode of the device. 
Either no test mode (empty string) or an indication of the test mode." label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> </attributes> @@ -249,13 +241,5 @@ <status abstract="false" inherited="true" concrete="true"/> </states> <preferences docHome="./doc_html" makefileHome="/usr/share/pogo/preferences"/> - <overlodedPollPeriodObject name="centralLoggingLevel" type="attribute" pollPeriod="0"/> - <overlodedPollPeriodObject name="elementLoggingLevel" type="attribute" pollPeriod="0"/> - <overlodedPollPeriodObject name="storageLoggingLevel" type="attribute" pollPeriod="0"/> - <overlodedPollPeriodObject name="healthState" type="attribute" pollPeriod="0"/> - <overlodedPollPeriodObject name="adminMode" type="attribute" pollPeriod="0"/> - <overlodedPollPeriodObject name="controlMode" type="attribute" pollPeriod="0"/> - <overlodedPollPeriodObject name="simulationMode" type="attribute" pollPeriod="0"/> - <overlodedPollPeriodObject name="testMode" type="attribute" pollPeriod="0"/> </classes> </pogoDsl:PogoSystem> diff --git a/skabase/SKAObsDevice/SKAObsDevice/SKAObsDevice.py b/skabase/SKAObsDevice/SKAObsDevice/SKAObsDevice.py index 4bd03aa1c8a57453524bd2a9a22067bbf8825e40..935f645076852302d61ca220cd8f21c02e9d7bcb 100644 --- a/skabase/SKAObsDevice/SKAObsDevice/SKAObsDevice.py +++ b/skabase/SKAObsDevice/SKAObsDevice/SKAObsDevice.py @@ -144,6 +144,14 @@ class SKAObsDevice(SKABaseDevice): # Commands # -------- + @command( + ) + @DebugIt() + def Reset(self): + # PROTECTED REGION ID(SKAObsDevice.Reset) ENABLED START # + pass + # PROTECTED REGION END # // SKAObsDevice.Reset + # ---------- # Run server # ---------- diff --git a/skabase/SKAObsDevice/test/SKAObsDevice_test.py b/skabase/SKAObsDevice/test/SKAObsDevice_test.py index c8d826d59c57786bb68862ae941ccc318e93df38..4e4c4a445cff12d943c75df29dd2596650a91bbd 100644 --- a/skabase/SKAObsDevice/test/SKAObsDevice_test.py +++ b/skabase/SKAObsDevice/test/SKAObsDevice_test.py @@ -39,7 +39,7 @@ class SKAObsDeviceDeviceTestCase(DeviceTestCase): # PROTECTED REGION ID(SKAObsDevice.test_additionnal_import) ENABLED START # # PROTECTED REGION END # // SKAObsDevice.test_additionnal_import device = SKAObsDevice - properties = {'SkaLevel': '4', 'CentralLoggingTarget': '', 'ElementLoggingTarget': '', 'StorageLoggingTarget': 'localhost', 'MetricList': 'healthState,adminMode,controlMode', 'GroupDefinitions': '', + properties = {'SkaLevel': '4', 'CentralLoggingTarget': '', 'ElementLoggingTarget': '', 'StorageLoggingTarget': 'localhost', 'MetricList': 'healthState', 'GroupDefinitions': '', } empty = None # Should be [] diff --git a/skabase/SKATestDevice/SKATestDevice.xmi b/skabase/SKATestDevice/SKATestDevice.xmi index f627daeced2375b8eca1a2fa312a348faad23faf..a8bad68521e94392e77a562832e6ef316a66412a 100644 --- a/skabase/SKATestDevice/SKATestDevice.xmi +++ b/skabase/SKATestDevice/SKATestDevice.xmi @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="ASCII"?> <pogoDsl:PogoSystem xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:pogoDsl="http://www.esrf.fr/tango/pogo/PogoDsl"> <classes name="SKATestDevice" pogoRevision="9.6"> - <description description="A generic Test device for testing SKA base class functionalites." title="SKATestDevice" sourcePath="/home/kat/git/levpro/skabase/SKATestDevice" language="PythonHL" filestogenerate="XMI file,Code files,Python Package,Protected Regions" license="GPL" copyright="" hasMandatoryProperty="false" hasConcreteProperty="false" hasAbstractCommand="true" hasAbstractAttribute="false"> + <description description="A generic Test device for testing SKA base class functionalites." title="SKATestDevice" sourcePath="/home/tango-cs/src/levpro/skabase/SKATestDevice" language="PythonHL" filestogenerate="XMI file,Code files,Python Package,Protected Regions" license="GPL" copyright="" hasMandatoryProperty="false" hasConcreteProperty="false" hasAbstractCommand="false" hasAbstractAttribute="false"> <inheritances classname="Device_Impl" sourcePath=""/> <inheritances classname="SKABaseDevice" sourcePath="../SKABaseDevice"/> <identification contact="at ska.ac.za - cam" author="cam" emailDomain="ska.ac.za" classFamily="OtherInstruments" siteSpecific="" platform="All Platforms" bus="Not Applicable" manufacturer="SKASA" reference="SKA-SKATestDevice"/> @@ -37,9 +37,11 @@ <status abstract="false" inherited="true" concrete="true"/> </deviceProperties> <deviceProperties name="MetricList" description="A subset of attributes we want to expose as metrics for this device."> - <type xsi:type="pogoDsl:StringType"/> + <type xsi:type="pogoDsl:StringVectorType"/> <status abstract="false" inherited="true" concrete="true"/> - <DefaultPropValue>healthState,adminMode,controlMode</DefaultPropValue> + <DefaultPropValue>healthState</DefaultPropValue> + <DefaultPropValue>adminMode</DefaultPropValue> + <DefaultPropValue>controlMode</DefaultPropValue> </deviceProperties> <deviceProperties name="GroupDefinitions" description="Each string in the list is a JSON serialised dict defining the ``group_name``,
``devices`` and ``subgroups`` in the group. A TANGO Group object is created
for each item in the list, according to the hierarchy defined. This provides
easy access to the managed devices in bulk, or individually.

The general format of the list is as follows, with optional ``devices`` and
``subgroups`` keys:
 [ {``group_name``: ``<name>``,
 ``devices``: [``<dev name>``, ...]},
 {``group_name``: ``<name>``,
 ``devices``: [``<dev name>``, ``<dev name>``, ...],
 ``subgroups`` : [{<nested group>},
 {<nested group>}, ...]},
 ...
 ]

For example, a hierarchy of racks, servers and switches:
 [ {``group_name``: ``servers``,
 ``devices``: [``elt/server/1``, ``elt/server/2``,
 ``elt/server/3``, ``elt/server/4``]},
 {``group_name``: ``switches``,
 ``devices``: [``elt/switch/A``, ``elt/switch/B``]},
 {``group_name``: ``pdus``,
 ``devices``: [``elt/pdu/rackA``, ``elt/pdu/rackB``]},
 {``group_name``: ``racks``,
 ``subgroups``: [
 {``group_name``: ``rackA``,
 ``devices``: [``elt/server/1``, ``elt/server/2``,
 ``elt/switch/A``, ``elt/pdu/rackA``]},
 {``group_name``: ``rackB``,
 ``devices``: [``elt/server/3``, ``elt/server/4``,
 ``elt/switch/B``, ``elt/pdu/rackB``],
 ``subgroups``: []}
 ]} ]"> <type xsi:type="pogoDsl:StringVectorType"/> @@ -49,15 +51,6 @@ <type xsi:type="pogoDsl:UShortType"/> <status abstract="false" inherited="true" concrete="true"/> </deviceProperties> - <commands name="ObsState" description="Set the observation state" execMethod="obs_state" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false"> - <argin description=""> - <type xsi:type="pogoDsl:VoidType"/> - </argin> - <argout description="Observation state"> - <type xsi:type="pogoDsl:ConstStringType"/> - </argout> - <status abstract="true" inherited="false" concrete="false" concreteHere="false"/> - </commands> <commands name="Reset" description="Reset device to its default state" execMethod="reset" displayLevel="OPERATOR" polledPeriod="0"> <argin description=""> <type xsi:type="pogoDsl:VoidType"/> @@ -65,7 +58,7 @@ <argout description=""> <type xsi:type="pogoDsl:VoidType"/> </argout> - <status abstract="true" inherited="true" concrete="false"/> + <status abstract="false" inherited="true" concrete="true" concreteHere="true"/> </commands> <commands name="GetMetrics" description="Gets list of attributes marked as metrics, with their values, 
for device" execMethod="get_metrics" displayLevel="OPERATOR" polledPeriod="0"> <argin description=""> diff --git a/skabase/SKATestDevice/SKATestDevice/SKATestDevice.py b/skabase/SKATestDevice/SKATestDevice/SKATestDevice.py index 39c596cdf8e35afa3be8ff04b91b83db2651b2a4..8e6eee116a8464eae39c5edf3a5dfb9ac39548de 100644 --- a/skabase/SKATestDevice/SKATestDevice/SKATestDevice.py +++ b/skabase/SKATestDevice/SKATestDevice/SKATestDevice.py @@ -143,10 +143,18 @@ class SKATestDevice(SKABaseDevice): # -------- @command( - dtype_in='str', - doc_in="JSON encoded dict with this format\n{``group``: str, # name of existing group\n ``command``: str, # name of command to run\n ``arg_type``: str, # data type of command input argument\n ``arg_value``: str, # value for command input argument\n ``forward``: bool # True if command should be forwarded to all subgroups (default)\n}", - dtype_out='str', - doc_out="Return value from command on the group, as a JSON encoded string.\nThis will be a list of dicts of the form \n[ \n{``device_name``: str, # TANGO device name\n ``argout``: <value>, # return value from command (type depends on command)\n ``failed``: bool # True if command failed\n},\n{ ... },\n ... ]", + ) + @DebugIt() + def Reset(self): + # PROTECTED REGION ID(SKATestDevice.Reset) ENABLED START # + pass + # PROTECTED REGION END # // SKATestDevice.Reset + + @command( + dtype_in='str', + doc_in="JSON encoded dict with this format\n{``group``: str, # name of existing group\n ``command``: str, # name of command to run\n ``arg_type``: str, # data type of command input argument\n ``arg_value``: str, # value for command input argument\n ``forward``: bool # True if command should be forwarded to all subgroups (default)\n}", + dtype_out='str', + doc_out="Return value from command on the group, as a JSON encoded string.\nThis will be a list of dicts of the form \n[ \n{``device_name``: str, # TANGO device name\n ``argout``: <value>, # return value from command (type depends on command)\n ``failed``: bool # True if command failed\n},\n{ ... },\n ... ]", ) @DebugIt() def RunGroupCommand(self, argin): diff --git a/skabase/SKATestDevice/test/SKATestDevice_test.py b/skabase/SKATestDevice/test/SKATestDevice_test.py index 7fff47a5edac0335923ba69d14e1d1281eb7a6b1..f57f8236e3f2e5346a7df95f3327eeec1eda63af 100644 --- a/skabase/SKATestDevice/test/SKATestDevice_test.py +++ b/skabase/SKATestDevice/test/SKATestDevice_test.py @@ -39,7 +39,7 @@ class SKATestDeviceDeviceTestCase(DeviceTestCase): # PROTECTED REGION ID(SKATestDevice.test_additionnal_import) ENABLED START # # PROTECTED REGION END # // SKATestDevice.test_additionnal_import device = SKATestDevice - properties = {'SkaLevel': '4', 'CentralLoggingTarget': '', 'ElementLoggingTarget': '', 'StorageLoggingTarget': 'localhost', 'CentralLoggingLevelDefault': '', 'ElementLoggingLevelDefault': '', 'StorageLoggingLevelStorage': '', 'MetricList': 'healthState,adminMode,controlMode', 'GroupDefinitions': '', 'StorageLoggingLevelDefault': '', + properties = {'SkaLevel': '4', 'CentralLoggingTarget': '', 'ElementLoggingTarget': '', 'StorageLoggingTarget': 'localhost', 'CentralLoggingLevelDefault': '', 'ElementLoggingLevelDefault': '', 'StorageLoggingLevelStorage': '', 'MetricList': 'healthState', 'GroupDefinitions': '', 'StorageLoggingLevelDefault': '', } empty = None # Should be [] @@ -57,12 +57,6 @@ class SKATestDeviceDeviceTestCase(DeviceTestCase): # PROTECTED REGION END # // SKATestDevice.test_properties pass - def test_ObsState(self): - """Test for ObsState""" - # PROTECTED REGION ID(SKATestDevice.test_ObsState) ENABLED START # - self.device.ObsState() - # PROTECTED REGION END # // SKATestDevice.test_ObsState - def test_Reset(self): """Test for Reset""" # PROTECTED REGION ID(SKATestDevice.test_Reset) ENABLED START #