# Do NOT edit this file!
# It was generated by IdlC class idl.json.python.ProxyAsnVisitor.

#
# Section generated from "/home/nb/builds/MEGA/px2-3.0.0-3.0.9-branch-20140613-none-release-none-pdu-raritan/fwcomponents/mkdist/tmp/px2_final/libidl_client/topofw/assetmgr/idl/AssetStripConfig.idl"
#

import raritan.rpc
from raritan.rpc import (
    Interface,
    Structure,
    ValueObject,
    Enumeration,
    typecheck,
    DecodeException,
)
import raritan.rpc.assetmgrmodel

import raritan.rpc.event


# interface
class AssetStripConfig(Interface):
    idlType = "assetmgrmodel.AssetStripConfig:1.0.1"

    # enumeration
    class ScanMode(Enumeration):
        idlType = "assetmgrmodel.AssetStripConfig.ScanMode:1.0.0"
        values = ["SCANMODE_DISABLED", "SCANMODE_BOTH"]

    ScanMode.SCANMODE_DISABLED = ScanMode(0)
    ScanMode.SCANMODE_BOTH = ScanMode(1)

    # enumeration
    class NumberingMode(Enumeration):
        idlType = "assetmgrmodel.AssetStripConfig.NumberingMode:1.0.0"
        values = ["TOP_DOWN", "BOTTOM_UP"]

    NumberingMode.TOP_DOWN = NumberingMode(0)
    NumberingMode.BOTTOM_UP = NumberingMode(1)

    # enumeration
    class Orientation(Enumeration):
        idlType = "assetmgrmodel.AssetStripConfig.Orientation:1.0.0"
        values = ["TOP_CONNECTOR", "BOTTOM_CONNECTOR"]

    Orientation.TOP_CONNECTOR = Orientation(0)
    Orientation.BOTTOM_CONNECTOR = Orientation(1)

    # enumeration
    class LEDOperationMode(Enumeration):
        idlType = "assetmgrmodel.AssetStripConfig.LEDOperationMode:1.0.0"
        values = ["LED_OPERATION_MANUAL", "LED_OPERATION_AUTO"]

    LEDOperationMode.LED_OPERATION_MANUAL = LEDOperationMode(0)
    LEDOperationMode.LED_OPERATION_AUTO = LEDOperationMode(1)

    # enumeration
    class LEDMode(Enumeration):
        idlType = "assetmgrmodel.AssetStripConfig.LEDMode:1.0.0"
        values = [
            "LED_MODE_ON",
            "LED_MODE_OFF",
            "LED_MODE_BLINK_FAST",
            "LED_MODE_BLINK_SLOW",
        ]

    LEDMode.LED_MODE_ON = LEDMode(0)
    LEDMode.LED_MODE_OFF = LEDMode(1)
    LEDMode.LED_MODE_BLINK_FAST = LEDMode(2)
    LEDMode.LED_MODE_BLINK_SLOW = LEDMode(3)

    # structure
    class LEDColor(Structure):
        idlType = "assetmgrmodel.AssetStripConfig.LEDColor:1.0.0"
        elements = ["r", "g", "b"]

        def __init__(self, r, g, b):
            typecheck.is_int(r, AssertionError)
            typecheck.is_int(g, AssertionError)
            typecheck.is_int(b, AssertionError)

            self.r = r
            self.g = g
            self.b = b

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                r=json["r"],
                g=json["g"],
                b=json["b"],
            )
            return obj

        def encode(self):
            json = {}
            json["r"] = self.r
            json["g"] = self.g
            json["b"] = self.b
            return json

    # structure
    class StripSettings(Structure):
        idlType = "assetmgrmodel.AssetStripConfig.StripSettings:1.0.0"
        elements = [
            "rackUnitCount",
            "name",
            "scanMode",
            "defaultColorConnected",
            "defaultColorDisconnected",
            "numberingMode",
            "numberingOffset",
            "orientation",
        ]

        def __init__(
            self,
            rackUnitCount,
            name,
            scanMode,
            defaultColorConnected,
            defaultColorDisconnected,
            numberingMode,
            numberingOffset,
            orientation,
        ):
            typecheck.is_int(rackUnitCount, AssertionError)
            typecheck.is_string(name, AssertionError)
            typecheck.is_enum(
                scanMode,
                raritan.rpc.assetmgrmodel.AssetStripConfig.ScanMode,
                AssertionError,
            )
            typecheck.is_struct(
                defaultColorConnected,
                raritan.rpc.assetmgrmodel.AssetStripConfig.LEDColor,
                AssertionError,
            )
            typecheck.is_struct(
                defaultColorDisconnected,
                raritan.rpc.assetmgrmodel.AssetStripConfig.LEDColor,
                AssertionError,
            )
            typecheck.is_enum(
                numberingMode,
                raritan.rpc.assetmgrmodel.AssetStripConfig.NumberingMode,
                AssertionError,
            )
            typecheck.is_int(numberingOffset, AssertionError)
            typecheck.is_enum(
                orientation,
                raritan.rpc.assetmgrmodel.AssetStripConfig.Orientation,
                AssertionError,
            )

            self.rackUnitCount = rackUnitCount
            self.name = name
            self.scanMode = scanMode
            self.defaultColorConnected = defaultColorConnected
            self.defaultColorDisconnected = defaultColorDisconnected
            self.numberingMode = numberingMode
            self.numberingOffset = numberingOffset
            self.orientation = orientation

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                rackUnitCount=json["rackUnitCount"],
                name=json["name"],
                scanMode=raritan.rpc.assetmgrmodel.AssetStripConfig.ScanMode.decode(
                    json["scanMode"]
                ),
                defaultColorConnected=raritan.rpc.assetmgrmodel.AssetStripConfig.LEDColor.decode(
                    json["defaultColorConnected"], agent
                ),
                defaultColorDisconnected=raritan.rpc.assetmgrmodel.AssetStripConfig.LEDColor.decode(
                    json["defaultColorDisconnected"], agent
                ),
                numberingMode=raritan.rpc.assetmgrmodel.AssetStripConfig.NumberingMode.decode(
                    json["numberingMode"]
                ),
                numberingOffset=json["numberingOffset"],
                orientation=raritan.rpc.assetmgrmodel.AssetStripConfig.Orientation.decode(
                    json["orientation"]
                ),
            )
            return obj

        def encode(self):
            json = {}
            json["rackUnitCount"] = self.rackUnitCount
            json["name"] = self.name
            json[
                "scanMode"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.ScanMode.encode(
                self.scanMode
            )
            json[
                "defaultColorConnected"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.LEDColor.encode(
                self.defaultColorConnected
            )
            json[
                "defaultColorDisconnected"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.LEDColor.encode(
                self.defaultColorDisconnected
            )
            json[
                "numberingMode"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.NumberingMode.encode(
                self.numberingMode
            )
            json["numberingOffset"] = self.numberingOffset
            json[
                "orientation"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.Orientation.encode(
                self.orientation
            )
            return json

    # structure
    class RackUnitSettings(Structure):
        idlType = "assetmgrmodel.AssetStripConfig.RackUnitSettings:1.0.0"
        elements = ["opmode", "mode", "color", "name"]

        def __init__(self, opmode, mode, color, name):
            typecheck.is_enum(
                opmode,
                raritan.rpc.assetmgrmodel.AssetStripConfig.LEDOperationMode,
                AssertionError,
            )
            typecheck.is_enum(
                mode, raritan.rpc.assetmgrmodel.AssetStripConfig.LEDMode, AssertionError
            )
            typecheck.is_struct(
                color,
                raritan.rpc.assetmgrmodel.AssetStripConfig.LEDColor,
                AssertionError,
            )
            typecheck.is_string(name, AssertionError)

            self.opmode = opmode
            self.mode = mode
            self.color = color
            self.name = name

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                opmode=raritan.rpc.assetmgrmodel.AssetStripConfig.LEDOperationMode.decode(
                    json["opmode"]
                ),
                mode=raritan.rpc.assetmgrmodel.AssetStripConfig.LEDMode.decode(
                    json["mode"]
                ),
                color=raritan.rpc.assetmgrmodel.AssetStripConfig.LEDColor.decode(
                    json["color"], agent
                ),
                name=json["name"],
            )
            return obj

        def encode(self):
            json = {}
            json[
                "opmode"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.LEDOperationMode.encode(
                self.opmode
            )
            json["mode"] = raritan.rpc.assetmgrmodel.AssetStripConfig.LEDMode.encode(
                self.mode
            )
            json["color"] = raritan.rpc.assetmgrmodel.AssetStripConfig.LEDColor.encode(
                self.color
            )
            json["name"] = self.name
            return json

    # value object
    class StripSettingsChangedEvent(raritan.rpc.event.UserEvent):
        idlType = "assetmgrmodel.AssetStripConfig.StripSettingsChangedEvent:1.0.0"

        def __init__(self, oldSettings, newSettings, actUserName, actIpAddr, source):
            super(
                raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettingsChangedEvent,
                self,
            ).__init__(actUserName, actIpAddr, source)
            typecheck.is_struct(
                oldSettings,
                raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettings,
                AssertionError,
            )
            typecheck.is_struct(
                newSettings,
                raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettings,
                AssertionError,
            )

            self.oldSettings = oldSettings
            self.newSettings = newSettings

        def encode(self):
            json = super(
                raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettingsChangedEvent,
                self,
            ).encode()
            json[
                "oldSettings"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettings.encode(
                self.oldSettings
            )
            json[
                "newSettings"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettings.encode(
                self.newSettings
            )
            return json

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                oldSettings=raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettings.decode(
                    json["oldSettings"], agent
                ),
                newSettings=raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettings.decode(
                    json["newSettings"], agent
                ),
                # for event.UserEvent
                actUserName=json["actUserName"],
                actIpAddr=json["actIpAddr"],
                # for idl.Event
                source=Interface.decode(json["source"], agent),
            )
            return obj

        def listElements(self):
            elements = ["oldSettings", "newSettings"]
            elements = (
                elements
                + super(
                    raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettingsChangedEvent,
                    self,
                ).listElements()
            )
            return elements

    # value object
    class RackUnitSettingsChangedEvent(raritan.rpc.event.UserEvent):
        idlType = "assetmgrmodel.AssetStripConfig.RackUnitSettingsChangedEvent:1.0.0"

        def __init__(
            self,
            rackUnitNumber,
            oldSettings,
            newSettings,
            actUserName,
            actIpAddr,
            source,
        ):
            super(
                raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettingsChangedEvent,
                self,
            ).__init__(actUserName, actIpAddr, source)
            typecheck.is_int(rackUnitNumber, AssertionError)
            typecheck.is_struct(
                oldSettings,
                raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings,
                AssertionError,
            )
            typecheck.is_struct(
                newSettings,
                raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings,
                AssertionError,
            )

            self.rackUnitNumber = rackUnitNumber
            self.oldSettings = oldSettings
            self.newSettings = newSettings

        def encode(self):
            json = super(
                raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettingsChangedEvent,
                self,
            ).encode()
            json["rackUnitNumber"] = self.rackUnitNumber
            json[
                "oldSettings"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings.encode(
                self.oldSettings
            )
            json[
                "newSettings"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings.encode(
                self.newSettings
            )
            return json

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                rackUnitNumber=json["rackUnitNumber"],
                oldSettings=raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings.decode(
                    json["oldSettings"], agent
                ),
                newSettings=raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings.decode(
                    json["newSettings"], agent
                ),
                # for event.UserEvent
                actUserName=json["actUserName"],
                actIpAddr=json["actIpAddr"],
                # for idl.Event
                source=Interface.decode(json["source"], agent),
            )
            return obj

        def listElements(self):
            elements = ["rackUnitNumber", "oldSettings", "newSettings"]
            elements = (
                elements
                + super(
                    raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettingsChangedEvent,
                    self,
                ).listElements()
            )
            return elements

    def getStripSettings(self):
        agent = self.agent
        args = {}
        rsp = agent.json_rpc(self.target, "getStripSettings", args)
        _ret_ = raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettings.decode(
            rsp["_ret_"], agent
        )
        typecheck.is_struct(
            _ret_,
            raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettings,
            DecodeException,
        )
        return _ret_

    def setStripSettings(self, settings):
        agent = self.agent
        typecheck.is_struct(
            settings,
            raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettings,
            AssertionError,
        )
        args = {}
        args[
            "settings"
        ] = raritan.rpc.assetmgrmodel.AssetStripConfig.StripSettings.encode(settings)
        rsp = agent.json_rpc(self.target, "setStripSettings", args)
        _ret_ = rsp["_ret_"]
        typecheck.is_int(_ret_, DecodeException)
        return _ret_

    def getRackUnitSettings(self, rackUnitNumber):
        agent = self.agent
        typecheck.is_int(rackUnitNumber, AssertionError)
        args = {}
        args["rackUnitNumber"] = rackUnitNumber
        rsp = agent.json_rpc(self.target, "getRackUnitSettings", args)
        _ret_ = rsp["_ret_"]
        settings = raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings.decode(
            rsp["settings"], agent
        )
        typecheck.is_int(_ret_, DecodeException)
        typecheck.is_struct(
            settings,
            raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings,
            DecodeException,
        )
        return (_ret_, settings)

    def getAllRackUnitSettings(self):
        agent = self.agent
        args = {}
        rsp = agent.json_rpc(self.target, "getAllRackUnitSettings", args)
        _ret_ = [
            raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings.decode(
                x0, agent
            )
            for x0 in rsp["_ret_"]
        ]
        for x0 in _ret_:
            typecheck.is_struct(
                x0,
                raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings,
                DecodeException,
            )
        return _ret_

    def setRackUnitSettings(self, rackUnitNumber, settings):
        agent = self.agent
        typecheck.is_int(rackUnitNumber, AssertionError)
        typecheck.is_struct(
            settings,
            raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings,
            AssertionError,
        )
        args = {}
        args["rackUnitNumber"] = rackUnitNumber
        args[
            "settings"
        ] = raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings.encode(settings)
        rsp = agent.json_rpc(self.target, "setRackUnitSettings", args)
        _ret_ = rsp["_ret_"]
        typecheck.is_int(_ret_, DecodeException)
        return _ret_

    def setMultipleRackUnitSettings(self, settings):
        agent = self.agent
        args = {}
        args["settings"] = [
            dict(
                key=k,
                value=raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings.encode(
                    v
                ),
            )
            for k, v in settings.items()
        ]
        rsp = agent.json_rpc(self.target, "setMultipleRackUnitSettings", args)
        _ret_ = rsp["_ret_"]
        typecheck.is_int(_ret_, DecodeException)
        return _ret_


# Do NOT edit this file!
# It was generated by IdlC class idl.json.python.ProxyAsnVisitor.

#
# Section generated from "/home/nb/builds/MEGA/px2-3.0.0-3.0.9-branch-20140613-none-release-none-pdu-raritan/fwcomponents/mkdist/tmp/px2_final/libidl_client/topofw/assetmgr/idl/AssetStrip.idl"
#

import raritan.rpc
from raritan.rpc import (
    Interface,
    Structure,
    ValueObject,
    Enumeration,
    typecheck,
    DecodeException,
)
import raritan.rpc.assetmgrmodel

import raritan.rpc.event

import raritan.rpc.idl


# interface
class AssetStrip(Interface):
    idlType = "assetmgrmodel.AssetStrip:2.0.1"

    NO_ERROR = 0

    ERR_INVALID_PARAM = 1

    ERR_NO_SUCH_OBJECT = 2

    MAIN_STRIP_COLUMN = 0

    # enumeration
    class State(Enumeration):
        idlType = "assetmgrmodel.AssetStrip.State:1.0.0"
        values = ["DISCONNECTED", "FIRMWARE_UPDATE", "UNSUPPORTED", "AVAILABLE"]

    State.DISCONNECTED = State(0)
    State.FIRMWARE_UPDATE = State(1)
    State.UNSUPPORTED = State(2)
    State.AVAILABLE = State(3)

    # enumeration
    class StripType(Enumeration):
        idlType = "assetmgrmodel.AssetStrip.StripType:1.0.0"
        values = ["SIMPLE", "COMPOSITE"]

    StripType.SIMPLE = StripType(0)
    StripType.COMPOSITE = StripType(1)

    # enumeration
    class TagType(Enumeration):
        idlType = "assetmgrmodel.AssetStrip.TagType:1.0.0"
        values = ["SINGLE", "EXTENSION", "NONE"]

    TagType.SINGLE = TagType(0)
    TagType.EXTENSION = TagType(1)
    TagType.NONE = TagType(2)

    # enumeration
    class CascadeState(Enumeration):
        idlType = "assetmgrmodel.AssetStrip.CascadeState:1.0.0"
        values = ["CASCADE_ACTIVE", "CASCADE_FIRMWARE_UPDATE"]

    CascadeState.CASCADE_ACTIVE = CascadeState(0)
    CascadeState.CASCADE_FIRMWARE_UPDATE = CascadeState(1)

    # structure
    class DeviceInfo(Structure):
        idlType = "assetmgrmodel.AssetStrip.DeviceInfo:1.0.0"
        elements = [
            "deviceId",
            "hardwareId",
            "protocolVersion",
            "bootVersion",
            "appVersion",
            "orientationSensAvailable",
            "isCascadable",
            "rackUnitCountConfigurable",
        ]

        def __init__(
            self,
            deviceId,
            hardwareId,
            protocolVersion,
            bootVersion,
            appVersion,
            orientationSensAvailable,
            isCascadable,
            rackUnitCountConfigurable,
        ):
            typecheck.is_int(deviceId, AssertionError)
            typecheck.is_int(hardwareId, AssertionError)
            typecheck.is_int(protocolVersion, AssertionError)
            typecheck.is_int(bootVersion, AssertionError)
            typecheck.is_int(appVersion, AssertionError)
            typecheck.is_bool(orientationSensAvailable, AssertionError)
            typecheck.is_bool(isCascadable, AssertionError)
            typecheck.is_bool(rackUnitCountConfigurable, AssertionError)

            self.deviceId = deviceId
            self.hardwareId = hardwareId
            self.protocolVersion = protocolVersion
            self.bootVersion = bootVersion
            self.appVersion = appVersion
            self.orientationSensAvailable = orientationSensAvailable
            self.isCascadable = isCascadable
            self.rackUnitCountConfigurable = rackUnitCountConfigurable

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                deviceId=json["deviceId"],
                hardwareId=json["hardwareId"],
                protocolVersion=json["protocolVersion"],
                bootVersion=json["bootVersion"],
                appVersion=json["appVersion"],
                orientationSensAvailable=json["orientationSensAvailable"],
                isCascadable=json["isCascadable"],
                rackUnitCountConfigurable=json["rackUnitCountConfigurable"],
            )
            return obj

        def encode(self):
            json = {}
            json["deviceId"] = self.deviceId
            json["hardwareId"] = self.hardwareId
            json["protocolVersion"] = self.protocolVersion
            json["bootVersion"] = self.bootVersion
            json["appVersion"] = self.appVersion
            json["orientationSensAvailable"] = self.orientationSensAvailable
            json["isCascadable"] = self.isCascadable
            json["rackUnitCountConfigurable"] = self.rackUnitCountConfigurable
            return json

    # structure
    class StripInfo(Structure):
        idlType = "assetmgrmodel.AssetStrip.StripInfo:1.0.0"
        elements = [
            "maxMainTagCount",
            "maxBladeTagCount",
            "mainTagCount",
            "bladeTagCount",
            "bladeOverflow",
            "rackUnitCount",
            "componentCount",
            "cascadeState",
        ]

        def __init__(
            self,
            maxMainTagCount,
            maxBladeTagCount,
            mainTagCount,
            bladeTagCount,
            bladeOverflow,
            rackUnitCount,
            componentCount,
            cascadeState,
        ):
            typecheck.is_int(maxMainTagCount, AssertionError)
            typecheck.is_int(maxBladeTagCount, AssertionError)
            typecheck.is_int(mainTagCount, AssertionError)
            typecheck.is_int(bladeTagCount, AssertionError)
            typecheck.is_bool(bladeOverflow, AssertionError)
            typecheck.is_int(rackUnitCount, AssertionError)
            typecheck.is_int(componentCount, AssertionError)
            typecheck.is_enum(
                cascadeState,
                raritan.rpc.assetmgrmodel.AssetStrip.CascadeState,
                AssertionError,
            )

            self.maxMainTagCount = maxMainTagCount
            self.maxBladeTagCount = maxBladeTagCount
            self.mainTagCount = mainTagCount
            self.bladeTagCount = bladeTagCount
            self.bladeOverflow = bladeOverflow
            self.rackUnitCount = rackUnitCount
            self.componentCount = componentCount
            self.cascadeState = cascadeState

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                maxMainTagCount=json["maxMainTagCount"],
                maxBladeTagCount=json["maxBladeTagCount"],
                mainTagCount=json["mainTagCount"],
                bladeTagCount=json["bladeTagCount"],
                bladeOverflow=json["bladeOverflow"],
                rackUnitCount=json["rackUnitCount"],
                componentCount=json["componentCount"],
                cascadeState=raritan.rpc.assetmgrmodel.AssetStrip.CascadeState.decode(
                    json["cascadeState"]
                ),
            )
            return obj

        def encode(self):
            json = {}
            json["maxMainTagCount"] = self.maxMainTagCount
            json["maxBladeTagCount"] = self.maxBladeTagCount
            json["mainTagCount"] = self.mainTagCount
            json["bladeTagCount"] = self.bladeTagCount
            json["bladeOverflow"] = self.bladeOverflow
            json["rackUnitCount"] = self.rackUnitCount
            json["componentCount"] = self.componentCount
            json[
                "cascadeState"
            ] = raritan.rpc.assetmgrmodel.AssetStrip.CascadeState.encode(
                self.cascadeState
            )
            return json

    # structure
    class TagInfo(Structure):
        idlType = "assetmgrmodel.AssetStrip.TagInfo:1.0.0"
        elements = ["rackUnitNumber", "slotNumber", "familyDesc", "rawId"]

        def __init__(self, rackUnitNumber, slotNumber, familyDesc, rawId):
            typecheck.is_int(rackUnitNumber, AssertionError)
            typecheck.is_int(slotNumber, AssertionError)
            typecheck.is_string(familyDesc, AssertionError)
            typecheck.is_string(rawId, AssertionError)

            self.rackUnitNumber = rackUnitNumber
            self.slotNumber = slotNumber
            self.familyDesc = familyDesc
            self.rawId = rawId

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                rackUnitNumber=json["rackUnitNumber"],
                slotNumber=json["slotNumber"],
                familyDesc=json["familyDesc"],
                rawId=json["rawId"],
            )
            return obj

        def encode(self):
            json = {}
            json["rackUnitNumber"] = self.rackUnitNumber
            json["slotNumber"] = self.slotNumber
            json["familyDesc"] = self.familyDesc
            json["rawId"] = self.rawId
            return json

    # structure
    class RackUnitInfo(Structure):
        idlType = "assetmgrmodel.AssetStrip.RackUnitInfo:1.0.0"
        elements = ["rackUnitNumber", "rackUnitPosition", "type", "size", "settings"]

        def __init__(self, rackUnitNumber, rackUnitPosition, type, size, settings):
            typecheck.is_int(rackUnitNumber, AssertionError)
            typecheck.is_int(rackUnitPosition, AssertionError)
            typecheck.is_enum(
                type, raritan.rpc.assetmgrmodel.AssetStrip.TagType, AssertionError
            )
            typecheck.is_int(size, AssertionError)
            typecheck.is_struct(
                settings,
                raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings,
                AssertionError,
            )

            self.rackUnitNumber = rackUnitNumber
            self.rackUnitPosition = rackUnitPosition
            self.type = type
            self.size = size
            self.settings = settings

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                rackUnitNumber=json["rackUnitNumber"],
                rackUnitPosition=json["rackUnitPosition"],
                type=raritan.rpc.assetmgrmodel.AssetStrip.TagType.decode(json["type"]),
                size=json["size"],
                settings=raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings.decode(
                    json["settings"], agent
                ),
            )
            return obj

        def encode(self):
            json = {}
            json["rackUnitNumber"] = self.rackUnitNumber
            json["rackUnitPosition"] = self.rackUnitPosition
            json["type"] = raritan.rpc.assetmgrmodel.AssetStrip.TagType.encode(
                self.type
            )
            json["size"] = self.size
            json[
                "settings"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.RackUnitSettings.encode(
                self.settings
            )
            return json

    # value object
    class StripInfoChangedEvent(raritan.rpc.idl.Event):
        idlType = "assetmgrmodel.AssetStrip.StripInfoChangedEvent:1.0.0"

        def __init__(self, oldInfo, newInfo, source):
            super(
                raritan.rpc.assetmgrmodel.AssetStrip.StripInfoChangedEvent, self
            ).__init__(source)
            typecheck.is_struct(
                oldInfo, raritan.rpc.assetmgrmodel.AssetStrip.StripInfo, AssertionError
            )
            typecheck.is_struct(
                newInfo, raritan.rpc.assetmgrmodel.AssetStrip.StripInfo, AssertionError
            )

            self.oldInfo = oldInfo
            self.newInfo = newInfo

        def encode(self):
            json = super(
                raritan.rpc.assetmgrmodel.AssetStrip.StripInfoChangedEvent, self
            ).encode()
            json["oldInfo"] = raritan.rpc.assetmgrmodel.AssetStrip.StripInfo.encode(
                self.oldInfo
            )
            json["newInfo"] = raritan.rpc.assetmgrmodel.AssetStrip.StripInfo.encode(
                self.newInfo
            )
            return json

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                oldInfo=raritan.rpc.assetmgrmodel.AssetStrip.StripInfo.decode(
                    json["oldInfo"], agent
                ),
                newInfo=raritan.rpc.assetmgrmodel.AssetStrip.StripInfo.decode(
                    json["newInfo"], agent
                ),
                # for idl.Event
                source=Interface.decode(json["source"], agent),
            )
            return obj

        def listElements(self):
            elements = ["oldInfo", "newInfo"]
            elements = (
                elements
                + super(
                    raritan.rpc.assetmgrmodel.AssetStrip.StripInfoChangedEvent, self
                ).listElements()
            )
            return elements

    # value object
    class StateChangedEvent(raritan.rpc.idl.Event):
        idlType = "assetmgrmodel.AssetStrip.StateChangedEvent:1.0.0"

        def __init__(self, oldState, newState, deviceInfo, source):
            super(
                raritan.rpc.assetmgrmodel.AssetStrip.StateChangedEvent, self
            ).__init__(source)
            typecheck.is_enum(
                oldState, raritan.rpc.assetmgrmodel.AssetStrip.State, AssertionError
            )
            typecheck.is_enum(
                newState, raritan.rpc.assetmgrmodel.AssetStrip.State, AssertionError
            )
            typecheck.is_struct(
                deviceInfo,
                raritan.rpc.assetmgrmodel.AssetStrip.DeviceInfo,
                AssertionError,
            )

            self.oldState = oldState
            self.newState = newState
            self.deviceInfo = deviceInfo

        def encode(self):
            json = super(
                raritan.rpc.assetmgrmodel.AssetStrip.StateChangedEvent, self
            ).encode()
            json["oldState"] = raritan.rpc.assetmgrmodel.AssetStrip.State.encode(
                self.oldState
            )
            json["newState"] = raritan.rpc.assetmgrmodel.AssetStrip.State.encode(
                self.newState
            )
            json["deviceInfo"] = raritan.rpc.assetmgrmodel.AssetStrip.DeviceInfo.encode(
                self.deviceInfo
            )
            return json

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                oldState=raritan.rpc.assetmgrmodel.AssetStrip.State.decode(
                    json["oldState"]
                ),
                newState=raritan.rpc.assetmgrmodel.AssetStrip.State.decode(
                    json["newState"]
                ),
                deviceInfo=raritan.rpc.assetmgrmodel.AssetStrip.DeviceInfo.decode(
                    json["deviceInfo"], agent
                ),
                # for idl.Event
                source=Interface.decode(json["source"], agent),
            )
            return obj

        def listElements(self):
            elements = ["oldState", "newState", "deviceInfo"]
            elements = (
                elements
                + super(
                    raritan.rpc.assetmgrmodel.AssetStrip.StateChangedEvent, self
                ).listElements()
            )
            return elements

    # value object
    class RackUnitChangedEvent(raritan.rpc.event.UserEvent):
        idlType = "assetmgrmodel.AssetStrip.RackUnitChangedEvent:1.0.0"

        def __init__(self, rackUnitNumber, rackUnit, actUserName, actIpAddr, source):
            super(
                raritan.rpc.assetmgrmodel.AssetStrip.RackUnitChangedEvent, self
            ).__init__(actUserName, actIpAddr, source)
            typecheck.is_int(rackUnitNumber, AssertionError)
            typecheck.is_struct(
                rackUnit,
                raritan.rpc.assetmgrmodel.AssetStrip.RackUnitInfo,
                AssertionError,
            )

            self.rackUnitNumber = rackUnitNumber
            self.rackUnit = rackUnit

        def encode(self):
            json = super(
                raritan.rpc.assetmgrmodel.AssetStrip.RackUnitChangedEvent, self
            ).encode()
            json["rackUnitNumber"] = self.rackUnitNumber
            json["rackUnit"] = raritan.rpc.assetmgrmodel.AssetStrip.RackUnitInfo.encode(
                self.rackUnit
            )
            return json

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                rackUnitNumber=json["rackUnitNumber"],
                rackUnit=raritan.rpc.assetmgrmodel.AssetStrip.RackUnitInfo.decode(
                    json["rackUnit"], agent
                ),
                # for event.UserEvent
                actUserName=json["actUserName"],
                actIpAddr=json["actIpAddr"],
                # for idl.Event
                source=Interface.decode(json["source"], agent),
            )
            return obj

        def listElements(self):
            elements = ["rackUnitNumber", "rackUnit"]
            elements = (
                elements
                + super(
                    raritan.rpc.assetmgrmodel.AssetStrip.RackUnitChangedEvent, self
                ).listElements()
            )
            return elements

    # structure
    class TagChangeInfo(Structure):
        idlType = "assetmgrmodel.AssetStrip.TagChangeInfo:1.0.0"
        elements = ["tag", "info", "parentBladeTagId", "slotPosition"]

        def __init__(self, tag, info, parentBladeTagId, slotPosition):
            typecheck.is_struct(
                tag, raritan.rpc.assetmgrmodel.AssetStrip.TagInfo, AssertionError
            )
            typecheck.is_struct(
                info, raritan.rpc.assetmgrmodel.AssetStrip.RackUnitInfo, AssertionError
            )
            typecheck.is_string(parentBladeTagId, AssertionError)
            typecheck.is_int(slotPosition, AssertionError)

            self.tag = tag
            self.info = info
            self.parentBladeTagId = parentBladeTagId
            self.slotPosition = slotPosition

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                tag=raritan.rpc.assetmgrmodel.AssetStrip.TagInfo.decode(
                    json["tag"], agent
                ),
                info=raritan.rpc.assetmgrmodel.AssetStrip.RackUnitInfo.decode(
                    json["info"], agent
                ),
                parentBladeTagId=json["parentBladeTagId"],
                slotPosition=json["slotPosition"],
            )
            return obj

        def encode(self):
            json = {}
            json["tag"] = raritan.rpc.assetmgrmodel.AssetStrip.TagInfo.encode(self.tag)
            json["info"] = raritan.rpc.assetmgrmodel.AssetStrip.RackUnitInfo.encode(
                self.info
            )
            json["parentBladeTagId"] = self.parentBladeTagId
            json["slotPosition"] = self.slotPosition
            return json

    # value object
    class TagEvent(raritan.rpc.idl.Event):
        idlType = "assetmgrmodel.AssetStrip.TagEvent:1.0.0"

        def __init__(self, tags, allTags, source):
            super(raritan.rpc.assetmgrmodel.AssetStrip.TagEvent, self).__init__(source)
            for x0 in tags:
                typecheck.is_struct(
                    x0,
                    raritan.rpc.assetmgrmodel.AssetStrip.TagChangeInfo,
                    AssertionError,
                )
            for x0 in allTags:
                typecheck.is_struct(
                    x0, raritan.rpc.assetmgrmodel.AssetStrip.TagInfo, AssertionError
                )

            self.tags = tags
            self.allTags = allTags

        def encode(self):
            json = super(raritan.rpc.assetmgrmodel.AssetStrip.TagEvent, self).encode()
            json["tags"] = [
                raritan.rpc.assetmgrmodel.AssetStrip.TagChangeInfo.encode(x0)
                for x0 in self.tags
            ]
            json["allTags"] = [
                raritan.rpc.assetmgrmodel.AssetStrip.TagInfo.encode(x0)
                for x0 in self.allTags
            ]
            return json

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                tags=[
                    raritan.rpc.assetmgrmodel.AssetStrip.TagChangeInfo.decode(x0, agent)
                    for x0 in json["tags"]
                ],
                allTags=[
                    raritan.rpc.assetmgrmodel.AssetStrip.TagInfo.decode(x0, agent)
                    for x0 in json["allTags"]
                ],
                # for idl.Event
                source=Interface.decode(json["source"], agent),
            )
            return obj

        def listElements(self):
            elements = ["tags", "allTags"]
            elements = (
                elements
                + super(
                    raritan.rpc.assetmgrmodel.AssetStrip.TagEvent, self
                ).listElements()
            )
            return elements

    # value object
    class TagAddedEvent(TagEvent):
        idlType = "assetmgrmodel.AssetStrip.TagAddedEvent:1.0.0"

        def __init__(self, tags, allTags, source):
            super(raritan.rpc.assetmgrmodel.AssetStrip.TagAddedEvent, self).__init__(
                tags, allTags, source
            )

        def encode(self):
            json = super(
                raritan.rpc.assetmgrmodel.AssetStrip.TagAddedEvent, self
            ).encode()
            return json

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                # for assetmgrmodel.AssetStrip_2_0_1.TagEvent
                tags=[
                    raritan.rpc.assetmgrmodel.AssetStrip.TagChangeInfo.decode(x0, agent)
                    for x0 in json["tags"]
                ],
                allTags=[
                    raritan.rpc.assetmgrmodel.AssetStrip.TagInfo.decode(x0, agent)
                    for x0 in json["allTags"]
                ],
                # for idl.Event
                source=Interface.decode(json["source"], agent),
            )
            return obj

        def listElements(self):
            elements = []
            elements = (
                elements
                + super(
                    raritan.rpc.assetmgrmodel.AssetStrip.TagAddedEvent, self
                ).listElements()
            )
            return elements

    # value object
    class TagRemovedEvent(TagEvent):
        idlType = "assetmgrmodel.AssetStrip.TagRemovedEvent:1.0.0"

        def __init__(self, tags, allTags, source):
            super(raritan.rpc.assetmgrmodel.AssetStrip.TagRemovedEvent, self).__init__(
                tags, allTags, source
            )

        def encode(self):
            json = super(
                raritan.rpc.assetmgrmodel.AssetStrip.TagRemovedEvent, self
            ).encode()
            return json

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                # for assetmgrmodel.AssetStrip_2_0_1.TagEvent
                tags=[
                    raritan.rpc.assetmgrmodel.AssetStrip.TagChangeInfo.decode(x0, agent)
                    for x0 in json["tags"]
                ],
                allTags=[
                    raritan.rpc.assetmgrmodel.AssetStrip.TagInfo.decode(x0, agent)
                    for x0 in json["allTags"]
                ],
                # for idl.Event
                source=Interface.decode(json["source"], agent),
            )
            return obj

        def listElements(self):
            elements = []
            elements = (
                elements
                + super(
                    raritan.rpc.assetmgrmodel.AssetStrip.TagRemovedEvent, self
                ).listElements()
            )
            return elements

    # enumeration
    class FirmwareUpdateState(Enumeration):
        idlType = "assetmgrmodel.AssetStrip.FirmwareUpdateState:1.0.0"
        values = ["UPDATE_STARTED", "UPDATE_SUCCESSFUL", "UPDATE_FAILED"]

    FirmwareUpdateState.UPDATE_STARTED = FirmwareUpdateState(0)
    FirmwareUpdateState.UPDATE_SUCCESSFUL = FirmwareUpdateState(1)
    FirmwareUpdateState.UPDATE_FAILED = FirmwareUpdateState(2)

    # value object
    class FirmwareUpdateStateChangedEvent(raritan.rpc.idl.Event):
        idlType = "assetmgrmodel.AssetStrip.FirmwareUpdateStateChangedEvent:1.0.0"

        def __init__(self, state, source):
            super(
                raritan.rpc.assetmgrmodel.AssetStrip.FirmwareUpdateStateChangedEvent,
                self,
            ).__init__(source)
            typecheck.is_enum(
                state,
                raritan.rpc.assetmgrmodel.AssetStrip.FirmwareUpdateState,
                AssertionError,
            )

            self.state = state

        def encode(self):
            json = super(
                raritan.rpc.assetmgrmodel.AssetStrip.FirmwareUpdateStateChangedEvent,
                self,
            ).encode()
            json[
                "state"
            ] = raritan.rpc.assetmgrmodel.AssetStrip.FirmwareUpdateState.encode(
                self.state
            )
            return json

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                state=raritan.rpc.assetmgrmodel.AssetStrip.FirmwareUpdateState.decode(
                    json["state"]
                ),
                # for idl.Event
                source=Interface.decode(json["source"], agent),
            )
            return obj

        def listElements(self):
            elements = ["state"]
            elements = (
                elements
                + super(
                    raritan.rpc.assetmgrmodel.AssetStrip.FirmwareUpdateStateChangedEvent,
                    self,
                ).listElements()
            )
            return elements

    # value object
    class BladeOverflowChangedEvent(raritan.rpc.idl.Event):
        idlType = "assetmgrmodel.AssetStrip.BladeOverflowChangedEvent:1.0.0"

        def __init__(self, overflow, source):
            super(
                raritan.rpc.assetmgrmodel.AssetStrip.BladeOverflowChangedEvent, self
            ).__init__(source)
            typecheck.is_bool(overflow, AssertionError)

            self.overflow = overflow

        def encode(self):
            json = super(
                raritan.rpc.assetmgrmodel.AssetStrip.BladeOverflowChangedEvent, self
            ).encode()
            json["overflow"] = self.overflow
            return json

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                overflow=json["overflow"],
                # for idl.Event
                source=Interface.decode(json["source"], agent),
            )
            return obj

        def listElements(self):
            elements = ["overflow"]
            elements = (
                elements
                + super(
                    raritan.rpc.assetmgrmodel.AssetStrip.BladeOverflowChangedEvent, self
                ).listElements()
            )
            return elements

    # value object
    class OrientationChangedEvent(raritan.rpc.idl.Event):
        idlType = "assetmgrmodel.AssetStrip.OrientationChangedEvent:1.0.0"

        def __init__(self, oldOrientation, newOrientation, source):
            super(
                raritan.rpc.assetmgrmodel.AssetStrip.OrientationChangedEvent, self
            ).__init__(source)
            typecheck.is_enum(
                oldOrientation,
                raritan.rpc.assetmgrmodel.AssetStripConfig.Orientation,
                AssertionError,
            )
            typecheck.is_enum(
                newOrientation,
                raritan.rpc.assetmgrmodel.AssetStripConfig.Orientation,
                AssertionError,
            )

            self.oldOrientation = oldOrientation
            self.newOrientation = newOrientation

        def encode(self):
            json = super(
                raritan.rpc.assetmgrmodel.AssetStrip.OrientationChangedEvent, self
            ).encode()
            json[
                "oldOrientation"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.Orientation.encode(
                self.oldOrientation
            )
            json[
                "newOrientation"
            ] = raritan.rpc.assetmgrmodel.AssetStripConfig.Orientation.encode(
                self.newOrientation
            )
            return json

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                oldOrientation=raritan.rpc.assetmgrmodel.AssetStripConfig.Orientation.decode(
                    json["oldOrientation"]
                ),
                newOrientation=raritan.rpc.assetmgrmodel.AssetStripConfig.Orientation.decode(
                    json["newOrientation"]
                ),
                # for idl.Event
                source=Interface.decode(json["source"], agent),
            )
            return obj

        def listElements(self):
            elements = ["oldOrientation", "newOrientation"]
            elements = (
                elements
                + super(
                    raritan.rpc.assetmgrmodel.AssetStrip.OrientationChangedEvent, self
                ).listElements()
            )
            return elements

    # value object
    class CompositionChangedEvent(raritan.rpc.idl.Event):
        idlType = "assetmgrmodel.AssetStrip.CompositionChangedEvent:1.0.0"

        def __init__(self, oldComponentCount, newComponentCount, source):
            super(
                raritan.rpc.assetmgrmodel.AssetStrip.CompositionChangedEvent, self
            ).__init__(source)
            typecheck.is_int(oldComponentCount, AssertionError)
            typecheck.is_int(newComponentCount, AssertionError)

            self.oldComponentCount = oldComponentCount
            self.newComponentCount = newComponentCount

        def encode(self):
            json = super(
                raritan.rpc.assetmgrmodel.AssetStrip.CompositionChangedEvent, self
            ).encode()
            json["oldComponentCount"] = self.oldComponentCount
            json["newComponentCount"] = self.newComponentCount
            return json

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                oldComponentCount=json["oldComponentCount"],
                newComponentCount=json["newComponentCount"],
                # for idl.Event
                source=Interface.decode(json["source"], agent),
            )
            return obj

        def listElements(self):
            elements = ["oldComponentCount", "newComponentCount"]
            elements = (
                elements
                + super(
                    raritan.rpc.assetmgrmodel.AssetStrip.CompositionChangedEvent, self
                ).listElements()
            )
            return elements

    def getState(self):
        agent = self.agent
        args = {}
        rsp = agent.json_rpc(self.target, "getState", args)
        _ret_ = raritan.rpc.assetmgrmodel.AssetStrip.State.decode(rsp["_ret_"])
        typecheck.is_enum(
            _ret_, raritan.rpc.assetmgrmodel.AssetStrip.State, DecodeException
        )
        return _ret_

    def getDeviceInfo(self):
        agent = self.agent
        args = {}
        rsp = agent.json_rpc(self.target, "getDeviceInfo", args)
        _ret_ = raritan.rpc.assetmgrmodel.AssetStrip.DeviceInfo.decode(
            rsp["_ret_"], agent
        )
        typecheck.is_struct(
            _ret_, raritan.rpc.assetmgrmodel.AssetStrip.DeviceInfo, DecodeException
        )
        return _ret_

    def getStripInfo(self):
        agent = self.agent
        args = {}
        rsp = agent.json_rpc(self.target, "getStripInfo", args)
        _ret_ = raritan.rpc.assetmgrmodel.AssetStrip.StripInfo.decode(
            rsp["_ret_"], agent
        )
        typecheck.is_struct(
            _ret_, raritan.rpc.assetmgrmodel.AssetStrip.StripInfo, DecodeException
        )
        return _ret_

    def getRackUnitInfo(self, rackUnitNumber):
        agent = self.agent
        typecheck.is_int(rackUnitNumber, AssertionError)
        args = {}
        args["rackUnitNumber"] = rackUnitNumber
        rsp = agent.json_rpc(self.target, "getRackUnitInfo", args)
        _ret_ = rsp["_ret_"]
        info = raritan.rpc.assetmgrmodel.AssetStrip.RackUnitInfo.decode(
            rsp["info"], agent
        )
        typecheck.is_int(_ret_, DecodeException)
        typecheck.is_struct(
            info, raritan.rpc.assetmgrmodel.AssetStrip.RackUnitInfo, DecodeException
        )
        return (_ret_, info)

    def getAllRackUnitInfos(self):
        agent = self.agent
        args = {}
        rsp = agent.json_rpc(self.target, "getAllRackUnitInfos", args)
        _ret_ = [
            raritan.rpc.assetmgrmodel.AssetStrip.RackUnitInfo.decode(x0, agent)
            for x0 in rsp["_ret_"]
        ]
        for x0 in _ret_:
            typecheck.is_struct(
                x0, raritan.rpc.assetmgrmodel.AssetStrip.RackUnitInfo, DecodeException
            )
        return _ret_

    def getTag(self, rackUnitNumber, slotNumber):
        agent = self.agent
        typecheck.is_int(rackUnitNumber, AssertionError)
        typecheck.is_int(slotNumber, AssertionError)
        args = {}
        args["rackUnitNumber"] = rackUnitNumber
        args["slotNumber"] = slotNumber
        rsp = agent.json_rpc(self.target, "getTag", args)
        _ret_ = rsp["_ret_"]
        tagInfo = raritan.rpc.assetmgrmodel.AssetStrip.TagInfo.decode(
            rsp["tagInfo"], agent
        )
        typecheck.is_int(_ret_, DecodeException)
        typecheck.is_struct(
            tagInfo, raritan.rpc.assetmgrmodel.AssetStrip.TagInfo, DecodeException
        )
        return (_ret_, tagInfo)

    def getAllTags(self):
        agent = self.agent
        args = {}
        rsp = agent.json_rpc(self.target, "getAllTags", args)
        _ret_ = [
            raritan.rpc.assetmgrmodel.AssetStrip.TagInfo.decode(x0, agent)
            for x0 in rsp["_ret_"]
        ]
        for x0 in _ret_:
            typecheck.is_struct(
                x0, raritan.rpc.assetmgrmodel.AssetStrip.TagInfo, DecodeException
            )
        return _ret_

    def getMainTags(self):
        agent = self.agent
        args = {}
        rsp = agent.json_rpc(self.target, "getMainTags", args)
        _ret_ = [
            raritan.rpc.assetmgrmodel.AssetStrip.TagInfo.decode(x0, agent)
            for x0 in rsp["_ret_"]
        ]
        for x0 in _ret_:
            typecheck.is_struct(
                x0, raritan.rpc.assetmgrmodel.AssetStrip.TagInfo, DecodeException
            )
        return _ret_

    def getExtensionTags(self, rackUnitNumber):
        agent = self.agent
        typecheck.is_int(rackUnitNumber, AssertionError)
        args = {}
        args["rackUnitNumber"] = rackUnitNumber
        rsp = agent.json_rpc(self.target, "getExtensionTags", args)
        _ret_ = rsp["_ret_"]
        tags = [
            raritan.rpc.assetmgrmodel.AssetStrip.TagInfo.decode(x0, agent)
            for x0 in rsp["tags"]
        ]
        typecheck.is_int(_ret_, DecodeException)
        for x0 in tags:
            typecheck.is_struct(
                x0, raritan.rpc.assetmgrmodel.AssetStrip.TagInfo, DecodeException
            )
        return (_ret_, tags)

    def triggerPowercycle(self, hard):
        agent = self.agent
        typecheck.is_bool(hard, AssertionError)
        args = {}
        args["hard"] = hard
        rsp = agent.json_rpc(self.target, "triggerPowercycle", args)


# Do NOT edit this file!
# It was generated by IdlC class idl.json.python.ProxyAsnVisitor.

#
# Section generated from "/home/nb/builds/MEGA/px2-3.0.0-3.0.9-branch-20140613-none-release-none-pdu-raritan/fwcomponents/mkdist/tmp/px2_final/libidl_client/topofw/assetmgr/idl/AssetStripLogger.idl"
#

import raritan.rpc
from raritan.rpc import (
    Interface,
    Structure,
    ValueObject,
    Enumeration,
    typecheck,
    DecodeException,
)
import raritan.rpc.assetmgrmodel


# interface
class AssetStripLogger(Interface):
    idlType = "assetmgrmodel.AssetStripLogger:1.0.2"

    NO_ERROR = 0

    ERR_INVALID_PARAM = 1

    # structure
    class Info(Structure):
        idlType = "assetmgrmodel.AssetStripLogger.Info:1.0.0"
        elements = ["capacity", "oldestRecord", "newestRecord", "totalEventCount"]

        def __init__(self, capacity, oldestRecord, newestRecord, totalEventCount):
            typecheck.is_int(capacity, AssertionError)
            typecheck.is_int(oldestRecord, AssertionError)
            typecheck.is_int(newestRecord, AssertionError)
            typecheck.is_int(totalEventCount, AssertionError)

            self.capacity = capacity
            self.oldestRecord = oldestRecord
            self.newestRecord = newestRecord
            self.totalEventCount = totalEventCount

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                capacity=json["capacity"],
                oldestRecord=json["oldestRecord"],
                newestRecord=json["newestRecord"],
                totalEventCount=json["totalEventCount"],
            )
            return obj

        def encode(self):
            json = {}
            json["capacity"] = self.capacity
            json["oldestRecord"] = self.oldestRecord
            json["newestRecord"] = self.newestRecord
            json["totalEventCount"] = self.totalEventCount
            return json

    # enumeration
    class RecordType(Enumeration):
        idlType = "assetmgrmodel.AssetStripLogger.RecordType:1.0.0"
        values = [
            "EMPTY",
            "ASSET_TAG_CONNECTED",
            "ASSET_TAG_DISCONNECTED",
            "ASSET_STRIP_STATE_CHANGED",
        ]

    RecordType.EMPTY = RecordType(0)
    RecordType.ASSET_TAG_CONNECTED = RecordType(1)
    RecordType.ASSET_TAG_DISCONNECTED = RecordType(2)
    RecordType.ASSET_STRIP_STATE_CHANGED = RecordType(3)

    # structure
    class Record(Structure):
        idlType = "assetmgrmodel.AssetStripLogger.Record:1.0.0"
        elements = [
            "timestamp",
            "type",
            "assetStripNumber",
            "rackUnitNumber",
            "rackUnitPosition",
            "slotNumber",
            "tagId",
            "parentBladeId",
            "state",
        ]

        def __init__(
            self,
            timestamp,
            type,
            assetStripNumber,
            rackUnitNumber,
            rackUnitPosition,
            slotNumber,
            tagId,
            parentBladeId,
            state,
        ):
            typecheck.is_time(timestamp, AssertionError)
            typecheck.is_enum(
                type,
                raritan.rpc.assetmgrmodel.AssetStripLogger.RecordType,
                AssertionError,
            )
            typecheck.is_int(assetStripNumber, AssertionError)
            typecheck.is_int(rackUnitNumber, AssertionError)
            typecheck.is_int(rackUnitPosition, AssertionError)
            typecheck.is_int(slotNumber, AssertionError)
            typecheck.is_string(tagId, AssertionError)
            typecheck.is_string(parentBladeId, AssertionError)
            typecheck.is_enum(
                state, raritan.rpc.assetmgrmodel.AssetStrip.State, AssertionError
            )

            self.timestamp = timestamp
            self.type = type
            self.assetStripNumber = assetStripNumber
            self.rackUnitNumber = rackUnitNumber
            self.rackUnitPosition = rackUnitPosition
            self.slotNumber = slotNumber
            self.tagId = tagId
            self.parentBladeId = parentBladeId
            self.state = state

        @classmethod
        def decode(cls, json, agent):
            obj = cls(
                timestamp=raritan.rpc.Time.decode(json["timestamp"]),
                type=raritan.rpc.assetmgrmodel.AssetStripLogger.RecordType.decode(
                    json["type"]
                ),
                assetStripNumber=json["assetStripNumber"],
                rackUnitNumber=json["rackUnitNumber"],
                rackUnitPosition=json["rackUnitPosition"],
                slotNumber=json["slotNumber"],
                tagId=json["tagId"],
                parentBladeId=json["parentBladeId"],
                state=raritan.rpc.assetmgrmodel.AssetStrip.State.decode(json["state"]),
            )
            return obj

        def encode(self):
            json = {}
            json["timestamp"] = raritan.rpc.Time.encode(self.timestamp)
            json["type"] = raritan.rpc.assetmgrmodel.AssetStripLogger.RecordType.encode(
                self.type
            )
            json["assetStripNumber"] = self.assetStripNumber
            json["rackUnitNumber"] = self.rackUnitNumber
            json["rackUnitPosition"] = self.rackUnitPosition
            json["slotNumber"] = self.slotNumber
            json["tagId"] = self.tagId
            json["parentBladeId"] = self.parentBladeId
            json["state"] = raritan.rpc.assetmgrmodel.AssetStrip.State.encode(
                self.state
            )
            return json

    def getInfo(self):
        agent = self.agent
        args = {}
        rsp = agent.json_rpc(self.target, "getInfo", args)
        _ret_ = raritan.rpc.assetmgrmodel.AssetStripLogger.Info.decode(
            rsp["_ret_"], agent
        )
        typecheck.is_struct(
            _ret_, raritan.rpc.assetmgrmodel.AssetStripLogger.Info, DecodeException
        )
        return _ret_

    def getRecords(self, id, count):
        agent = self.agent
        typecheck.is_int(id, AssertionError)
        typecheck.is_int(count, AssertionError)
        args = {}
        args["id"] = id
        args["count"] = count
        rsp = agent.json_rpc(self.target, "getRecords", args)
        _ret_ = rsp["_ret_"]
        records = [
            raritan.rpc.assetmgrmodel.AssetStripLogger.Record.decode(x0, agent)
            for x0 in rsp["records"]
        ]
        typecheck.is_int(_ret_, DecodeException)
        for x0 in records:
            typecheck.is_struct(
                x0, raritan.rpc.assetmgrmodel.AssetStripLogger.Record, DecodeException
            )
        return (_ret_, records)
