VENTURI-SERVER-SYSTEM-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-IDENTITY,
    OBJECT-TYPE,
    Counter32,
    Counter64,
    Gauge32,
    Integer32,
    TimeTicks,
    Unsigned32
        FROM SNMPv2-SMI
    vServerMgmt
        FROM VENTURI-SERVER-MIB
    VenturiConditionState,
    VenturiConditionType,
    VenturiBooleanType
        FROM VENTURI-TC
    TEXTUAL-CONVENTION,
    DisplayString
        FROM SNMPv2-TC
;


-- ------------------------------------------------
-- Module Identity
-- ------------------------------------------------
vServerSystem MODULE-IDENTITY
    LAST-UPDATED    "201302220000Z"
    ORGANIZATION    "Venturi Wireless"
    CONTACT-INFO
       "Contact:  Customer Support

        Postal:   Venturi Wireless
                  490 North McCarthy Boulevard
                  Milpitas, CA  95035

        Phone:    408-215-5100
        FAX:      408-215-5105

        Web:      www.venturiwireless.com

        E-mail:   VenturiCustomerOps@venturiwireless.com"

    DESCRIPTION
        "Venturi Server system information

          Copyright 2004-2013 Venturi Wireless
          All rights reserved.

          This MIB module general system information available
          from Venturi servers. "

    REVISION    "201302220000Z"
        DESCRIPTION 
            "1.6 Change vServerFscOverrideClientId syntax to Display String."

    REVISION    "201301270000Z"
        DESCRIPTION 
            "1.5 Add vServerFscOverrideTable."

    REVISION    "201101030000Z"
        DESCRIPTION 
            "1.4 - Updated copyright date to 2011"

    REVISION    "201001060000Z"
        DESCRIPTION 
            "1.3 - Updated copyright date to 2010"

    REVISION    "200804290000Z"
        DESCRIPTION
            "1.2 - Add detail to DESCRIPTION clauses."

    REVISION    "200803110000Z"
        DESCRIPTION
            "1.1 - The following columns in the vServerConditionTable
                   have been made read-write:

                      vServerConditionHighThreshold
                      vServerConditionLowThreshold
                      vServerConditionSetSeverity"

    REVISION    "200502170000Z"
        DESCRIPTION
            "1.0 - Initial document."

    ::= { vServerMgmt 2 }

-- ------------------------------------------------
--  Divisions within system
-- ------------------------------------------------

vServerGeneral OBJECT IDENTIFIER ::= { vServerSystem 1 }
vServerAlarms  OBJECT IDENTIFIER ::= { vServerSystem 2 }
vServerActions OBJECT IDENTIFIER ::= { vServerSystem 3 }

-- ------------------------------------------------
-- General Information
-- ------------------------------------------------
vServerGeneralScalars OBJECT IDENTIFIER ::= { vServerGeneral 1 }
vServerGeneralTables  OBJECT IDENTIFIER ::= { vServerGeneral 2 }

vServerType OBJECT-TYPE
    SYNTAX        BITS {vServer(0), client(1)}
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Indicates whether the software is running as a client,
         a vServer, or both.
         Note:  The BITS syntax describes an object implemented
                as an OCTET STRING where each of the bits have a
                meaning.  So, vServerType will be returned as a single
                octet.  The most significant bit of this octet
                indicates whether the system is a Venturi vServer
                and the next bit indicates whether it is a client.
                The value returned for a vServer will be x80, for
                a client x40, and for a system acting as both client
                and vServer xC0.  The values in parentheses next to
                'client' and 'vServer' in the definition above indicate
                the bit number."
    ::= { vServerGeneralScalars 1 }

vServerVersion OBJECT-TYPE
    SYNTAX        OCTET STRING (SIZE(1..128))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Venturi software version string. This will normally
        be of the form X.Y.Z where
           X = major release number
           Y = minor release number
           Z = fix release number"
    ::= { vServerGeneralScalars 2 }

vServerStartTime OBJECT-TYPE
    SYNTAX        Integer32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Time the Venturi software started execution in seconds
         since midnight, January 1, 1970 GMT."
    ::= { vServerGeneralScalars 3 }

vServerUpTime OBJECT-TYPE
    SYNTAX        TimeTicks
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Time since the Venturi software was started.  This will
        often be the time since last boot, but may be shorter if
        the Venturi software was restarted for some reason, such
        as to clear an error condition.  The units of this object
        are TimeTicks, which are 1/100 of a second."
    ::= { vServerGeneralScalars 4 }

vServerBuildId OBJECT-TYPE
    SYNTAX        OCTET STRING (SIZE(1..128))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The software build identifier.  General releases normally
        use a build number as the value for this object, but this
        value is not guaranteed to be numeric in all cases.  It may
        include alpha characters to indicate special builds."
    ::= { vServerGeneralScalars 5 }

vServerMaxClients OBJECT-TYPE
    SYNTAX        Integer32
    MAX-ACCESS    read-only
    STATUS        current
--    UNITS         "licenses"
    DESCRIPTION
        "This is the maximum number of simultaneous client connections
        supportable by this server.  Attempts to connect clients in
        excess of this number will be rejected.  A count of the number
        of such rejections is available in the object
        vServerClientLimitExceeded in the VENTURI-STATS-MIB."
    ::= { vServerGeneralScalars 6 }

vServerMaxClientless OBJECT-TYPE
    SYNTAX        Integer32
    MAX-ACCESS    read-only
    STATUS        current
--    UNITS       "licenses"
    DESCRIPTION
        "Maximum number of simultaneous clientless connections supportable
        by this server."
    ::= { vServerGeneralScalars 7 }

vServerSerialNumber OBJECT-TYPE
    SYNTAX        OCTET STRING (SIZE(1..128))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Opaque string uniquely identifying the server."
    ::= { vServerGeneralScalars 8 }

vServerNumCPUs OBJECT-TYPE
    SYNTAX        Integer32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Number of physical CPUs in this server.  Due to 
        technologies used by CPU manufacturers, this may be
        less than the number of logical CPUs."
    ::= { vServerGeneralScalars 9 }

vServerMaxTcpBandwidth OBJECT-TYPE
    SYNTAX        Integer32
    MAX-ACCESS    read-only
    STATUS        current
--    UNITS       "kbps"
    DESCRIPTION
        "Maximum TCP bandwidth."
    ::= { vServerGeneralScalars 10 }

vServerClientUpdateVersion OBJECT-TYPE
    SYNTAX        DisplayString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "If set, clients below this version should be upgraded."
    ::= { vServerGeneralScalars 11 }

vServerMemoryRAM OBJECT-TYPE
    SYNTAX        Integer32
    UNITS         "KBytes"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The amount of RAM."
    ::= { vServerGeneralScalars 12 }

vServerMemorySwap OBJECT-TYPE
    SYNTAX        Integer32
    UNITS         "KBytes"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The amout of swap space."
    ::= { vServerGeneralScalars 13 }


--
-- CPU Table
--
vServerCPUTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ServerCPUEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A table of information about the physical CPUs of 
            the system."
    ::= { vServerGeneralTables 1 }

vServerCPUEntry OBJECT-TYPE
    SYNTAX      ServerCPUEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry in the CPU table."
    INDEX       { vServerCPUId }
    ::= { vServerCPUTable 1 }

ServerCPUEntry ::=
    SEQUENCE {
        vServerCPUId            Integer32,
        vServerCPUClockSpeed    Integer32,
        vServerCPUCacheSize     Integer32,
        vServerCPUVendorName    OCTET STRING,
        vServerCPUModelName     OCTET STRING
    }

vServerCPUId OBJECT-TYPE
    SYNTAX        Integer32 (1..16)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "A number identifying the CPU."
    ::= { vServerCPUEntry 1 }

vServerCPUClockSpeed OBJECT-TYPE
    SYNTAX        Integer32
    UNITS         "Hz"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The clock speed of the CPU."
    ::= { vServerCPUEntry 2 }

vServerCPUCacheSize OBJECT-TYPE
    SYNTAX        Integer32
    UNITS         "KBytes"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The size of the CPU's on-board cache in kilobytes."
    ::= { vServerCPUEntry 3 }

vServerCPUVendorName OBJECT-TYPE
    SYNTAX        OCTET STRING (SIZE(1..32))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The CPU's Manufacturer."
    ::= { vServerCPUEntry 4 }

vServerCPUModelName OBJECT-TYPE
    SYNTAX        OCTET STRING (SIZE(1..64))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The CPU's model name."
    ::= { vServerCPUEntry 5 }


--
-- Storage Table
--
vServerStorageTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ServerStorageEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A table of information about the physical Storages of 
            the system."
    ::= { vServerGeneralTables 2 }

vServerStorageEntry OBJECT-TYPE
    SYNTAX      ServerStorageEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry in the Storage table."
    INDEX       { vServerStorageId }
    ::= { vServerStorageTable 1 }

ServerStorageEntry ::=
    SEQUENCE {
        vServerStorageId            Integer32,
        vServerStorageDeviceName    OCTET STRING,
        vServerStorageModelName     OCTET STRING,
        vServerStorageSize          Integer32
    }

vServerStorageId OBJECT-TYPE
    SYNTAX        Integer32 (1..16)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "A number identifying the storage device."
    ::= { vServerStorageEntry 1 }

vServerStorageDeviceName OBJECT-TYPE
    SYNTAX        OCTET STRING (SIZE(1..64))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The Storage's Manufacturer."
    ::= { vServerStorageEntry 2 }

vServerStorageModelName OBJECT-TYPE
    SYNTAX        OCTET STRING (SIZE(1..32))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The Storage's model name."
    ::= { vServerStorageEntry 3 }

vServerStorageSize OBJECT-TYPE
    SYNTAX        Integer32
    UNITS         "KBytes"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The size of the Storage's on-board cache in kilobytes."
    ::= { vServerStorageEntry 4 }


-- ------------------------------------------------
-- Alarm Information
-- ------------------------------------------------
vServerAlarmScalars OBJECT IDENTIFIER ::= { vServerAlarms 1 }
vServerAlarmTables  OBJECT IDENTIFIER ::= { vServerAlarms 2 }

vServerConditionTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF ServerConditionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "A table of reportable conditions.  The entry into
            or exit from one of these conditions may be reported
            in a number of ways, including an entry in the log 
            file, a syslog event, an SNMP trap and/or and email
            message.  (See the vServerAlertRoutingTbl in the
            VENTURI-SERVER-CONFIG-MIB for the current alert
            routing.)  
            
            Note that the alerts tied to conditions
            in this table are grouped into set/clear pairs.
            There are also informational alerts which are not
            tied to these conditions and merely report the
            occurance of some event."
    ::= { vServerAlarmTables 1 }

vServerConditionEntry OBJECT-TYPE
    SYNTAX      ServerConditionEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry in the condition table."
    INDEX       { vServerConditionType }
    ::= { vServerConditionTable 1 }

ServerConditionEntry ::=
    SEQUENCE {
        vServerConditionType                VenturiConditionType,
        vServerConditionSetTrapNum          Unsigned32,
        vServerConditionClearTrapNum        Unsigned32,
        vServerConditionState               VenturiConditionState,
        vServerConditionThresholdApplicable VenturiBooleanType,
        vServerConditionHighThreshold       Unsigned32,
        vServerConditionLowThreshold        Unsigned32,
        vServerConditionCurValue            Unsigned32,
        vServerConditionSetSeverity         Unsigned32
    }

vServerConditionType OBJECT-TYPE
    SYNTAX        VenturiConditionType
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "A number identifying the condition by its row number in
        the Condition Table."
    ::= { vServerConditionEntry 1 }

vServerConditionSetTrapNum OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This is the SNMP trap number associated with entering the
        condition.  Condition alerts are in SET/CLEAR pairs.  This
        is the trap number associated with the SET."
    ::= { vServerConditionEntry 2 }

vServerConditionClearTrapNum OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This is the SNMP trap number associated with exiting the
        condition.  Condition alerts are in SET/CLEAR pairs.  This
        is the trap number associated with the CLEAR."
    ::= { vServerConditionEntry 3 }

vServerConditionState OBJECT-TYPE
    SYNTAX        VenturiConditionState
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The state of the condition.  A value of yes(2) indicates
        the condition is in the SET state.  A value of no(1) 
        indicates the condition is in the CLEAR state. Polling 
        this object can be used as an alternative to receiving
        SET and CLEAR traps, or it can be used to verify the 
        state of the condition periodically in case a trap may
        have been missed. (SNMP traps are sent in UDP datagrams
        which are inherently unreliable.)"
    ::= { vServerConditionEntry 4 }

vServerConditionThresholdApplicable OBJECT-TYPE
    SYNTAX        VenturiBooleanType
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "A yes(2) value for this object indicates the condition
        represented by that row in the table is governed by the
        high and low thresholds in that table row.  A no(1) value
        indicates the thresholds in that row of the Condition Table
        are not relevant to the triggering or clearing of that 
        condition."
    ::= { vServerConditionEntry 5 }

-- ================================================================ --
-- NOTE:                                                            --
--     In SNMP, the MAX-ACCESS of a table column is defined for the --
--     whole column at once.  But in the vServerConditionTable, the --
--     high and low thresholds are only write-able in certain rows. --
--     Only the rows where vServerConditionType is tcpOverload,     --
--     cacheOverload, logOverload or swapOverload are set-able.     --
--     Attempts to set these objects in other rows of this table    --
--     will be rejected as errors.                                  --
-- ================================================================ --

vServerConditionHighThreshold OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "Represents the high threshold of the condition. If threshold is not
        applicable, the value will be 0."
    ::= { vServerConditionEntry 6 }

vServerConditionLowThreshold OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "Represents the low threshold of the condition. If threshold is not
        applicable, the value will be 0."
    ::= { vServerConditionEntry 7 }

vServerConditionCurValue OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Represents the current value of the measure tested against the 
        thresholds to set or clear this condition. If threshold is not 
        applicable, the value will be 0."
    ::= { vServerConditionEntry 8 }

vServerConditionSetSeverity OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "Represents the trap severity configured for the set trap for this
        condition.  Do not confuse this with the log priority for this event,
        which is compared against the overall log threshold to decide whether
        to generate an alert when this condition enters the SET state. This
        object merely indicates the value that will be sent as the varbind 
        'trapServerity' with the SET trap for this condition."
    ::= { vServerConditionEntry 9 }

-- ------------------------------------------------
-- Actions
-- ------------------------------------------------
vServerActionScalars OBJECT IDENTIFIER ::= { vServerActions 1 }
vServerActionTables  OBJECT IDENTIFIER ::= { vServerActions 2 }



vServerActionReboot OBJECT-TYPE
    SYNTAX        VenturiBooleanType
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "Set to yes(2) to trigger a server reboot."
    ::= { vServerActionScalars 1 }

vServerActionPushNow OBJECT-TYPE
    SYNTAX        VenturiBooleanType
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "Set to yes(2) to trigger a push of all files
         ready for push to an FTP or SCP server."
    ::= { vServerActionScalars 2 }

vServerActionSendTestTrap OBJECT-TYPE
    SYNTAX        VenturiBooleanType
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "Set to yes(2) to send an SNMP test trap."
    ::= { vServerActionScalars 3 }


vServerActionSendAllTraps OBJECT-TYPE
    SYNTAX        VenturiBooleanType
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "Set to yes(2) to send test versions of all traps
        in the Venturi Trap MIB currently supported on
        the server."
    ::= { vServerActionScalars 4 }


vServerActionSendEnabledTraps OBJECT-TYPE
    SYNTAX        VenturiBooleanType
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "Set to yes(2) to send test versions of all traps 
        in the Venturi Trap MIB which would be sent at 
        currently configured priorities.  In the Venturi 
        server, all traps are generated from logs.  Each 
        log has a configured priority which is compared 
        against a configured log threshold before recording.  
        This object will cause traps to be sent only if the
        associated log would be recorded. The intention 
        is to give the user a way to check that priorities
        and threshold are configured as intended."
        
       
    ::= { vServerActionScalars 5 }


-- --------------------------------
-- vServerFscOverrideTable
-- --------------------------------

vServerFscOverrideTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF VServerFscOverrideEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "This is a single row table grouping together the
             Client Id identifying the row in the vServerClientInfoTable
             and the new Fsc value for that row."

    ::= { vServerActionTables 1 }

vServerFscOverrideEntry OBJECT-TYPE
    SYNTAX      VServerFscOverrideEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
            "An entry in the scaling table.
            "
    INDEX       { vServerFscOverrideRowId }
    ::= { vServerFscOverrideTable 1 }

VServerFscOverrideEntry ::=
    SEQUENCE {
        vServerFscOverrideRowId                Unsigned32,
        vServerFscOverrideClientId             DisplayString,
        vServerFscOverrideFsc                  DisplayString
    }

vServerFscOverrideRowId OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "The row number in this table."
    ::= { vServerFscOverrideEntry 1 }
        
vServerFscOverrideClientId OBJECT-TYPE
    SYNTAX        DisplayString (SIZE (0..16))
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The Client Id identifying the row in the ClientInfo table."
    ::= { vServerFscOverrideEntry 2 }

vServerFscOverrideFsc OBJECT-TYPE
    SYNTAX        DisplayString (SIZE (0..16))
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The new Fsc value to apply to the row in the vServerClientInfoTable
         idicated by the Client Id."
    ::= { vServerFscOverrideEntry 3 }

END
