-- ****************************************************************************
--
--      Compaq SANworks Management Appliance
--		HSG80 Controller Information
--      Management Information Base for SNMP Network Management
-- 
--      Copyright 2001, Compaq Computer Corporation.
--      All Rights Reserved.
--
--      The information in this document is subject to change without notice
--     
--      COMPAQ COMPUTER CORPORATION SHALL NOT BE LIABLE FOR TECHNICAL
--      OR EDITORIAL ERRORS OR OMISSIONS CONATINED HEREIN; NOR FOR INCIDENTAL
--      OR CONSEQUENTIAL DAMAGES RESULTING FROM THE FURNISHING, PERFORMANCE,
--      OR USE OF THIS MATERIAL.
--
--      Refer to the READMIB.RDM file for more information about the 
--      organization of the information in the Compaq Enterprise.
--
--      The Compaq Enterprise number is 232.
--      The ASN.1 prefix to, and including the Compaq Enterprise is:
--           1.3.6.1.4.1.232
--
-- ****************************************************************************

CPQAPPG80-MIB DEFINITIONS ::= BEGIN

    IMPORTS
--      If you get errors from your MIB compiler because of multiple
--      definitions of the Compaq enterprise, then you should uncomment
--      the next statement and comment out the the compaq object
--      identifier definition below.
        enterprises             FROM RFC1155-SMI
        Counter                 FROM RFC1155-SMI
        DisplayString           FROM RFC1213-MIB
        OBJECT-TYPE             FROM RFC-1212
        TRAP-TYPE               FROM RFC-1215;
        compaq                  OBJECT IDENTIFIER ::= { enterprises 232 }  

-- version 1 of SMA MIB
cpqSanAppliance			OBJECT IDENTIFIER ::= { compaq 151 } 

cpqsmav1			OBJECT IDENTIFIER ::= { cpqSanAppliance 100 }

cpqSMAAgent			OBJECT IDENTIFIER ::= { cpqsmav1 1 } 
cpqSMASubsystem			OBJECT IDENTIFIER ::= { cpqsmav1 2 } 
cpqSMAController		OBJECT IDENTIFIER ::= { cpqsmav1 3 } 
cpqSMALogicalDisk		OBJECT IDENTIFIER ::= { cpqsmav1 4 } 
cpqSMAPhysicalDisk		OBJECT IDENTIFIER ::= { cpqsmav1 5 } 
cpqSMAStorageSet		OBJECT IDENTIFIER ::= { cpqsmav1 6 } 
cpqSMAPartition			OBJECT IDENTIFIER ::= { cpqsmav1 7 } 
cpqSMAConnection		OBJECT IDENTIFIER ::= { cpqsmav1 8 } 
cpqSMASnapshot			OBJECT IDENTIFIER ::= { cpqsmav1 9 } 


--
-- agent data
--
-- ****************************************************************************
--   HSG80 Controller MIB Revision
--  ==============================
--
-- The compaq enterprise               (1.3.6.1.4.1.232)
--      cpqsmav1 Group		            (1.3.6.1.4.1.232.151.100)
--       cpqSMAAgent Group	            (1.3.6.1.4.1.232.151.100.1)
--
--      An SNMP agent conforming to this document will return a
--      cpqSMAAgentVersionMajor of one (1) and a cpqSMAAgentVersionMinor of one (1).
--
--      Implementation of the cpqSMAAgent group is mandatory for all agents
--      supporting the Compaq HSG80 MIB.
--
-- ****************************************************************************

cpqSMAAgentVersionMajor OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The version of the agent"
	::= { cpqSMAAgent 1 }

cpqSMAAgentVersionMinor OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The version of the agent"
	::= { cpqSMAAgent 2 }

cpqSMAAgentActive OBJECT-TYPE
	SYNTAX INTEGER {
			inactive(1),
			active(2)
			}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The state of the agent"
	::= { cpqSMAAgent 3 }

cpqSMAAgentRefreshTime OBJECT-TYPE
	SYNTAX	INTEGER
	ACCESS	read-write
	STATUS	mandatory
	DESCRIPTION
		"The time interval before the next data collection.
		
		The information about the HSG80 is collected periodically.
		A thread gathers the information and stores it in
		memory. This variable is used to specify the time interval
		in minutes (MINUTES) between each update."
	::= { cpqSMAAgent 4 }

cpqSMAAgentHostName OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The name of the local machine where the agent is running."
	::= { cpqSMAAgent 5 }

--
-- HSG80 Subsystem table
--

cpqSMASubsystemTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF cpqSMASubsystemEntry
	ACCESS	not-accessible
	STATUS mandatory
	DESCRIPTION
		"The table of Subsystems"
	::= { cpqSMASubsystem 1 }

cpqSMASubsystemEntry OBJECT-TYPE
	SYNTAX cpqSMASubsystemEntry
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION
		"A table entry for a Subsystem"
    INDEX   { cpqSMASubsystemIndex }
	::= { cpqSMASubsystemTable 1 }

	cpqSMASubsystemEntry ::= SEQUENCE {
		cpqSMASubsystemIndex			INTEGER,
		cpqSMASubsystemName			DisplayString,
		cpqSMASubsystemControllerOne		INTEGER,
		cpqSMASubsystemControllerTwo		INTEGER,
		cpqSMASubsystemEMUState			INTEGER,
		cpqSMASubsystemEMUVersion		DisplayString,
		cpqSMASubsystemEMUSensor1		INTEGER,
		cpqSMASubsystemEMUSensor2		INTEGER,
		cpqSMASubsystemEMUSensor3		INTEGER,
		cpqSMASubsystemEMUFanspeed		INTEGER,
		cpqSMASubsystemEMUAlarm			INTEGER,
		cpqSMASubsystemState			INTEGER,
		cpqSMASubsystemAlias			DisplayString
	}

cpqSMASubsystemIndex	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The Subsystem index"
	::= { cpqSMASubsystemEntry 1 }

cpqSMASubsystemName OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The name of the Subsystem."
		::= { cpqSMASubsystemEntry 2 }

cpqSMASubsystemControllerOne OBJECT-TYPE
    SYNTAX  INTEGER(0..9999)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "The index of controller one thats belongs to this subsytem.
		If the value is -1 then either the controller is not installed
		or not operational."
    ::= { cpqSMASubsystemEntry 3 }

cpqSMASubsystemControllerTwo OBJECT-TYPE
    SYNTAX  INTEGER(0..9999)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "The index of controller two thats belongs to this subsytem.
		If the value is -1 then either the controller is not installed
		or not operational."
    ::= { cpqSMASubsystemEntry 4 }

cpqSMASubsystemEMUState OBJECT-TYPE
    SYNTAX  INTEGER
	{
        nooper(1),
        oper(2),
        unknown(3)
	}
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Subsystem Environmental Monitoring Unit (EMU) State.
		
		nooper(1) - EMU is either not installed or not operational.
		oper(2) - EMU is operational."
    ::= { cpqSMASubsystemEntry 5 }

cpqSMASubsystemEMUVersion OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"Subsystem Environmental Monitoring Unit (EMU) Microcode verion."
	::= { cpqSMASubsystemEntry 6 }

cpqSMASubsystemEMUSensor1 OBJECT-TYPE
    SYNTAX  INTEGER(0..49)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Subsystem Environmental Monitoring Unit (EMU) Sensor1 value (in Celsius).
		
		Sensor1 sets the maximum operating temperature for
		the primary subsystem cabinet."
    ::= { cpqSMASubsystemEntry 7 }

cpqSMASubsystemEMUSensor2 OBJECT-TYPE
    SYNTAX  INTEGER(0..49)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Subsystem Environmental Monitoring Unit (EMU) Sensor2 value (in Celsius).
		
		Sensor2 also sets the maximum operating temperature for
		the primary subsystem cabinet."
    ::= { cpqSMASubsystemEntry 8 }

cpqSMASubsystemEMUSensor3 OBJECT-TYPE
    SYNTAX  INTEGER(0..49)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Subsystem Environmental Monitoring Unit (EMU) Sensor3 value (in Celsius).
		
		Sensor3 sets the maximum operating temperature for
		the EMU unit."
    ::= { cpqSMASubsystemEntry 9 }

cpqSMASubsystemEMUFanspeed OBJECT-TYPE
    SYNTAX  INTEGER
	{
        high(1),
        automatic(2),
        unknown(3)
	}
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Subsystem Fanspeed.
		
		FANSPEED=HIGH forces the fans in all connected cabinets to operate at
		high speed continuously.
		
		FANSPEED=AUTOMATIC allows the EMU to control the fan speed for
		the fans in all connected cabinets.
		
		The EMU instructs the fans to operate at high speed when any of the temperature
		setpoints are exceeded or when one or more fans are not functioning."
    ::= { cpqSMASubsystemEntry 10 }

cpqSMASubsystemEMUAlarm OBJECT-TYPE
    SYNTAX  INTEGER
	{
        silent(1),
        audible(2),
        unknown(3)
	}
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Subsystem Environmental Monitoring Unit Alarm.

		Determines whether or not the audible alarm of the EMU will
		sound in the following cases:		
		drive failure
		controller restart
		
		The EMU alarm will still sound in the event of an adverse 
		environmental condition, such as a power failure or an over-temperature condition."
    ::= { cpqSMASubsystemEntry 11 }

cpqSMASubsystemState  OBJECT-TYPE
	SYNTAX 	INTEGER 
	{
		unknown(1),
		ok(2),
		degraded(3),
		offline(4)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION 
		"Gives us the overall state of the HSG80 subsystem."
	::= { cpqSMASubsystemEntry 12 }

cpqSMASubsystemAlias OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The Subsystem Alias."
	::= { cpqSMASubsystemEntry 13 }

--
-- Controller table
--

cpqSMAControllerTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF cpqSMAControllerEntry
	ACCESS	not-accessible
	STATUS mandatory
	DESCRIPTION
		"The table of controllers"
	::= { cpqSMAController 1 }

cpqSMAControllerEntry OBJECT-TYPE
	SYNTAX cpqSMAControllerEntry
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION
		"A table entry for a controller"
    INDEX   { cpqSMAControllerIndex }
	::= { cpqSMAControllerTable 1 }

	cpqSMAControllerEntry ::= SEQUENCE {
		cpqSMAControllerIndex				INTEGER,
		cpqSMAControllerName				DisplayString,
		cpqSMAControllerSerialNumber			DisplayString,
		cpqSMAControllerFirmware			DisplayString,
		cpqSMAControllerHardware			DisplayString,
		cpqSMAControllerNodeID				DisplayString,
		cpqSMAControllerIdentifier			DisplayString,
		cpqSMAControllerAllocationClass			INTEGER,
		cpqSMAControllerScsiVersion			INTEGER,
		cpqSMAControllerRedundancy			INTEGER,
		cpqSMAControllerScsiID				INTEGER,
		cpqSMAControllerCacheSize			INTEGER,
		cpqSMAControllerCacheType			INTEGER,
		cpqSMAControllerCacheVersion			DisplayString,
		cpqSMAControllerCacheFlushTimer			INTEGER,
		cpqSMAControllerMirrorCache			INTEGER,
		cpqSMAControllerPort_1_ID			DisplayString,
		cpqSMAControllerPort_1_Topology			INTEGER,
		cpqSMAControllerPort_1_State			INTEGER,
		cpqSMAControllerPort_2_ID			DisplayString,
		cpqSMAControllerPort_2_Topology			INTEGER,
		cpqSMAControllerPort_2_State			INTEGER,
		cpqSMAControllerPairIndex			INTEGER,
		cpqSMAControllerCacheState			INTEGER,
		cpqSMAControllerBatteryCheckState		INTEGER,
		cpqSMAControllerBatteryChargeState		INTEGER,
		cpqSMAControllerBatteryExpiryDate		DisplayString,
		cpqSMAControllerSubsystemIndex			INTEGER,
		cpqSMAControllerPort_1_Address			DisplayString,
		cpqSMAControllerPort_2_Address			DisplayString,
		cpqSMAControllerLogicalDiskIndexes		DisplayString,
		cpqSMAControllerSnapshotIndexes			DisplayString
	}

cpqSMAControllerIndex	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The controller index"
	::= { cpqSMAControllerEntry 1 }

cpqSMAControllerName OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The name of the controller."
		::= { cpqSMAControllerEntry 2 }

cpqSMAControllerSerialNumber OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The serial number of the controller."
		::= { cpqSMAControllerEntry 3 }

cpqSMAControllerFirmware OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The firmware of the controller."
		::= { cpqSMAControllerEntry 4 }

cpqSMAControllerHardware OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The hardware revision of the controller."
		::= { cpqSMAControllerEntry 5 }

cpqSMAControllerNodeID OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"Manufacturer assigned ID of the controller."
		::= { cpqSMAControllerEntry 6 }

cpqSMAControllerIdentifier OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The user assigned identifier if any of the controller."
		::= { cpqSMAControllerEntry 7 }

cpqSMAControllerAllocationClass	OBJECT-TYPE
	SYNTAX	INTEGER(0..4294967295)
    ACCESS  read-only
    STATUS  mandatory
	DESCRIPTION
		"The controller allocation class"
	::= { cpqSMAControllerEntry 8 }

cpqSMAControllerScsiVersion	OBJECT-TYPE
	SYNTAX	INTEGER
    {
        scsi-2(1),
        scsi-3(2),
        unknown(3)
    }
    ACCESS  read-only
    STATUS  mandatory
	DESCRIPTION
		"The scsi version of the controller"
	::= { cpqSMAControllerEntry 9 }

cpqSMAControllerRedundancy OBJECT-TYPE
	SYNTAX	INTEGER
    {
        single(1),
		dual(2),
        multibus(3),
		transparent(4),
		unknown(5)
    }
    ACCESS  read-only
    STATUS  mandatory
	DESCRIPTION
		"The redundancy type of the controller"
	::= { cpqSMAControllerEntry 10 }

cpqSMAControllerScsiID OBJECT-TYPE
	SYNTAX	INTEGER(0..15)
    ACCESS  read-only
    STATUS  mandatory
	DESCRIPTION
		"The device port scsi address of the controller"
	::= { cpqSMAControllerEntry 11 }

cpqSMAControllerCacheSize OBJECT-TYPE
	SYNTAX	INTEGER(64..512)
    ACCESS  read-only
    STATUS  mandatory
	DESCRIPTION
		"The cache size in megabytes.
		
		Can be either 64, 128, 256 or 512 MB."
	::= { cpqSMAControllerEntry 12 }

cpqSMAControllerCacheType OBJECT-TYPE
	SYNTAX	INTEGER
    {
        read(1),
        write(2),
		read-ahead(3),
		write-through(4),
		write-back(5),
		unknown(6)
    }
    ACCESS  read-only
    STATUS  mandatory
	DESCRIPTION
		"The cache type of this controller"
	::= { cpqSMAControllerEntry 13 }

cpqSMAControllerCacheVersion OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The version of this controllers cache."
		::= { cpqSMAControllerEntry 14 }

cpqSMAControllerCacheFlushTimer OBJECT-TYPE
	SYNTAX	INTEGER(0..65535)
    ACCESS  read-only
    STATUS  mandatory
	DESCRIPTION
		"The cache flush timer in sec"
	::= { cpqSMAControllerEntry 15 }

cpqSMAControllerMirrorCache OBJECT-TYPE
	SYNTAX	INTEGER
    {
        enable(1),
        disable(2),
		unknown(3)
    }
    ACCESS  read-only
    STATUS  mandatory
	DESCRIPTION
		"The mirror cache state of this controller"
	::= { cpqSMAControllerEntry 16 }

cpqSMAControllerPort_1_ID OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The ID of port 1."
		::= { cpqSMAControllerEntry 17 }

cpqSMAControllerPort_1_Topology OBJECT-TYPE
	SYNTAX	INTEGER
    {
        fabric(1),
        loop_hard(2),
		loop_soft(3),
		offline(4),
		unknown(5)
    }
    ACCESS  read-only
    STATUS  mandatory
	DESCRIPTION
		"The topology of this controller"
	::= { cpqSMAControllerEntry 18 }

cpqSMAControllerPort_1_State OBJECT-TYPE
	SYNTAX	INTEGER
    {
        fabricup(1),
        standby(2),
		connectiondown(3),
		unknown(4)
    }
    ACCESS  read-only
    STATUS  mandatory
	DESCRIPTION
		"The state of this port"
	::= { cpqSMAControllerEntry 19 }

cpqSMAControllerPort_2_ID OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The ID of port 2."
		::= { cpqSMAControllerEntry 20 }

cpqSMAControllerPort_2_Topology OBJECT-TYPE
	SYNTAX	INTEGER
    {
        fabric(1),
        loop_hard(2),
		loop_soft(3),
		offline(4),
		unknown(5)
    }
    ACCESS  read-only
    STATUS  mandatory
	DESCRIPTION
		"The topology of this controller"
	::= { cpqSMAControllerEntry 21 }

cpqSMAControllerPort_2_State OBJECT-TYPE
	SYNTAX	INTEGER
    {
        fabricup(1),
        standby(2),
		connectiondown(3),
		unknown(4)
    }
    ACCESS  read-only
    STATUS  mandatory
	DESCRIPTION
		"The state of this port"
	::= { cpqSMAControllerEntry 22 }

cpqSMAControllerPairIndex	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The index of this controller's pair if
		FAILOVER mode (cpqSMAControllerRedundancy)
		is mutlibus or transparent.

		If there is no FAILOVER mode (cpqSMAControllerRedundancy
		is single or unknown) then the value is -1."
	::= { cpqSMAControllerEntry 23 }

cpqSMAControllerCacheState	OBJECT-TYPE
	SYNTAX	INTEGER
	{
        good(1),
        bad(2),
		unknown(3)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The state of the controller cache."
	::= { cpqSMAControllerEntry 24 }

cpqSMAControllerBatteryCheckState	OBJECT-TYPE
	SYNTAX	INTEGER
	{
        ups(1),
        noups(2),
		unknown(3)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"Battery check state.
		
		Specifies whether the controller should perform regular battery condition checks.
		If CACHE_UPS (ups) the controller does not check the condition of the cache batteries
		and ignores the battery's state.
		If NOCACHE_UPS (noups) the controller performs regular cache battery checks and evaluates
		the condition of the cache batteries."
	::= { cpqSMAControllerEntry 25 }

cpqSMAControllerBatteryChargeState	OBJECT-TYPE
	SYNTAX	INTEGER(0..100)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"This is the value in % (percentage) of the amount the 
		controller battery is charged.
		
		A value of 0 (zero) means DANGER: BATTERY LIFETIME HAS EXPIRED, REPLACE BATTERY NOW!."
	::= { cpqSMAControllerEntry 26 }

cpqSMAControllerBatteryExpiryDate	OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The expiry date of the controller battery."
	::= { cpqSMAControllerEntry 27 }

cpqSMAControllerSubsystemIndex	OBJECT-TYPE
	SYNTAX	INTEGER(0..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The index of the subsystem to which this
		controller belongs."
	::= { cpqSMAControllerEntry 28 }

cpqSMAControllerPort_1_Address OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The Host_Port1 Address."
		::= { cpqSMAControllerEntry 29 }

cpqSMAControllerPort_2_Address OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The Host_Port2 Address."
		::= { cpqSMAControllerEntry 30 }

cpqSMAControllerLogicalDiskIndexes OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The indexes of all the logical disks associated with the controller.
		Each index is seperated by a ':' ."
	::= { cpqSMAControllerEntry 31 }

cpqSMAControllerSnapshotIndexes OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The indexes of all the snapshots associated with the controller.
		Each index is seperated by a ':' ."
	::= { cpqSMAControllerEntry 32 }

--
-- LogicalDisk table
--

cpqSMALogicalDiskTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF cpqSMALogicalDiskEntry
	ACCESS	not-accessible
	STATUS mandatory
	DESCRIPTION
		"The table of LogicalDisks"
	::= { cpqSMALogicalDisk 1 }

cpqSMALogicalDiskEntry OBJECT-TYPE
	SYNTAX cpqSMALogicalDiskEntry
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION
		"A table entry for a LogicalDisk"
    INDEX   { cpqSMALogicalDiskIndex }
	::= { cpqSMALogicalDiskTable 1 }

	cpqSMALogicalDiskEntry ::= SEQUENCE {
		cpqSMALogicalDiskIndex				INTEGER,
		cpqSMALogicalDiskName				DisplayString,
		cpqSMALogicalDiskSize				INTEGER,
		cpqSMALogicalDiskCreatedFromIndex		INTEGER,
		cpqSMALogicalDiskReadCache			INTEGER,
		cpqSMALogicalDiskWriteBackCache			INTEGER,
		cpqSMALogicalDiskWriteProtectCache  		INTEGER,
		cpqSMALogicalDiskReadAheadCache			INTEGER,
		cpqSMALogicalDiskRunState			INTEGER,
		cpqSMALogicalDiskState				INTEGER,
		cpqSMALogicalDiskCachedTransferSize 		INTEGER,
		cpqSMALogicalDiskPreferredPath			INTEGER,
		cpqSMALogicalDiskHostAccess			DisplayString,
		cpqSMALogicalDiskIdentifier			DisplayString,
		cpqSMALogicalDiskHeads				INTEGER,
		cpqSMALogicalDiskCylinders			INTEGER,
		cpqSMALogicalDiskSectors			INTEGER,
		cpqSMALogicalDiskControllerInstance		INTEGER,
		cpqSMALogicalDiskCreatedFromType 		INTEGER,
		cpqSMALogicalDiskIdentifierSwitch		INTEGER,
		cpqSMALogicalDiskSnapped			INTEGER,
		cpqSMALogicalDiskSnapshotInstance		INTEGER,
		cpqSMALogicalDiskSubsystemIndex			INTEGER
	}

cpqSMALogicalDiskIndex	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The LogicalDisk index.
		
		This is just a ordered sequence done by the agent,
		has no relationship to the unit offset or unit name/number."
	::= { cpqSMALogicalDiskEntry 1 }

cpqSMALogicalDiskName OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The name of the LogicalDisk."
		::= { cpqSMALogicalDiskEntry 2 }

cpqSMALogicalDiskSize OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Logical Drive Size.

        This is the size of the logical drive in blocks.  One block 
		equals 512 bytes (1 block = 512 bytes)."
	::= { cpqSMALogicalDiskEntry 3 }

cpqSMALogicalDiskCreatedFromIndex OBJECT-TYPE
    SYNTAX  INTEGER
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Logical Drive Created From Instance.

        This gives us the instance of the storageset or physical disk
		from which this LUN was created."
    ::= { cpqSMALogicalDiskEntry 4 }

cpqSMALogicalDiskReadCache OBJECT-TYPE
    SYNTAX  INTEGER
    {
        enable(1),
        disable(2),
        unknown(3)
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
		"Logical Drive Read Cache.

        The state of the read cache for the associated logical drives."
    ::= { cpqSMALogicalDiskEntry 5 }

cpqSMALogicalDiskWriteBackCache OBJECT-TYPE
    SYNTAX  INTEGER
    {
        enable(1),
        disable(2),
        unknown(3)
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
		"Logical Drive WriteBack Cache.

        The state of the writeback cache for the associated logical drives."
    ::= { cpqSMALogicalDiskEntry 6 }

cpqSMALogicalDiskWriteProtectCache OBJECT-TYPE
    SYNTAX  INTEGER
    {
        enable(1),
        disable(2),
        unknown(3)
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
		"Logical Drive WriteProtect Cache.

        The state of the write protect cache for the associated logical drives."
    ::= { cpqSMALogicalDiskEntry 7 }

cpqSMALogicalDiskReadAheadCache OBJECT-TYPE
    SYNTAX  INTEGER
    {
        enable(1),
        disable(2),
        unknown(3)
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
		"Logical Drive ReadAhead Cache.

        The state of the readahead cache for the associated logical drives."
    ::= { cpqSMALogicalDiskEntry 8 }

cpqSMALogicalDiskRunState OBJECT-TYPE
    SYNTAX  INTEGER
    {
        enable(1),
        disable(2),
        unknown(3)
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
		"Logical Drive Run State.

        The run state for the associated logical drives. you specify RUN
		to make a unit available to the host."
    ::= { cpqSMALogicalDiskEntry 9 }

cpqSMALogicalDiskState OBJECT-TYPE
    SYNTAX  INTEGER
    {
        online(1),
        available(2),
        unknown(3)
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
		"Logical Drive State.

        The state of the associated logical drive."
    ::= { cpqSMALogicalDiskEntry 10 }

cpqSMALogicalDiskCachedTransferSize OBJECT-TYPE
	SYNTAX  INTEGER (1..2048)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Logical Drive CachedTransferSize.

        The largest number of write blocks to be cached by the 
		controller. The controller will not cache any transfers over 
		the specified size."
    ::= { cpqSMALogicalDiskEntry 11 }

cpqSMALogicalDiskPreferredPath OBJECT-TYPE
	SYNTAX  INTEGER
    {
        this(1),
        other(2),
        none(3)
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Logical Drive PreferredPath.

        May be set only when dual redundant controllers are operating in a
		multiple-bus failover configuration."
    ::= { cpqSMALogicalDiskEntry 12 }

cpqSMALogicalDiskHostAccess OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 

		"Logical Drive Host Access.
		Specifies the access path."
	::= { cpqSMALogicalDiskEntry 13 }

cpqSMALogicalDiskIdentifier OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"Logical Drive ID (Lun_ID)

		This ID consists of the controller node ID plus a 64-bit unit ID
		generated by the subsystem."
	::= { cpqSMALogicalDiskEntry 14 }

cpqSMALogicalDiskHeads OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Number of Heads."
    ::= { cpqSMALogicalDiskEntry 15 }

cpqSMALogicalDiskCylinders OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Number of Cylinders."
    ::= { cpqSMALogicalDiskEntry 16 }

cpqSMALogicalDiskSectors OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Number of Sectors."
    ::= { cpqSMALogicalDiskEntry 17 }

cpqSMALogicalDiskControllerInstance OBJECT-TYPE
    SYNTAX  INTEGER(0..10000)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Logical Drive Controller Instance.

        This gives us the instance of the controller to which this LUN is online."
    ::= { cpqSMALogicalDiskEntry 18 }

cpqSMALogicalDiskCreatedFromType OBJECT-TYPE
    SYNTAX  INTEGER
	{
		physicaldisk(1),
		storageset(2),
		partition(3)
	}
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Logical Drive Created from type.

        Tells us whether the LUN was created from an entire physical disk, entire storageset
		or from a partition(logical or physical). cpqSMALogicalDiskCreatedFromIndex gives us
		the instance of the object."
    ::= { cpqSMALogicalDiskEntry 19 }

cpqSMALogicalDiskIdentifierSwitch OBJECT-TYPE
    SYNTAX  INTEGER(0..9999)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Logical Drive Identifier switch.

        This is used with the SCSI_VERSION switch when the SCSI version
		is set to SCSI-3 mode. The IDENTIFIER switch creates a unique 
		unit identifier makes the unit visible to the host.This number can
		be a value between 1-9999. The value 0 means NOIDENTIFIER."
    ::= { cpqSMALogicalDiskEntry 20 }

cpqSMALogicalDiskSnapped OBJECT-TYPE
    SYNTAX  INTEGER
	{
		no(1),
		yes(2),
		unknown(3)
	}
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Logical Drive Snapped.

        This tells us if a snapshot of this disk
		exists."
    ::= { cpqSMALogicalDiskEntry 21 }

cpqSMALogicalDiskSnapshotInstance OBJECT-TYPE
    SYNTAX  INTEGER(0..9999)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Logical Drive Snapshot instance.

        If the disk has a snapshot ie. cpqSMALogicalDiskSnapped is yes,
		then this gives us the instance of the snapshot else -1."
    ::= { cpqSMALogicalDiskEntry 22 }

cpqSMALogicalDiskSubsystemIndex	OBJECT-TYPE
	SYNTAX	INTEGER(0..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The index of the subsystem where this logical
		disk resides."
	::= { cpqSMALogicalDiskEntry 23 }

--
-- PhysicalDisk table
--

cpqSMAPhysicalDiskTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF cpqSMAPhysicalDiskEntry
	ACCESS	not-accessible
	STATUS mandatory
	DESCRIPTION
		"The table of PhysicalDisks"
	::= { cpqSMAPhysicalDisk 1 }

cpqSMAPhysicalDiskEntry OBJECT-TYPE
	SYNTAX cpqSMAPhysicalDiskEntry
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION
		"A table entry for a PhysicalDisk"
    INDEX   { cpqSMAPhysicalDiskIndex }
	::= { cpqSMAPhysicalDiskTable 1 }

	cpqSMAPhysicalDiskEntry ::= SEQUENCE {
		cpqSMAPhysicalDiskIndex				INTEGER,
		cpqSMAPhysicalDiskName				DisplayString,
		cpqSMAPhysicalDiskModel				DisplayString,
		cpqSMAPhysicalDiskPort				INTEGER,
		cpqSMAPhysicalDiskTarget			INTEGER,
		cpqSMAPhysicalDiskLun				INTEGER,
		cpqSMAPhysicalDiskSize				INTEGER,
		cpqSMAPhysicalDiskTransportable			INTEGER,
		cpqSMAPhysicalDiskTransferRate			INTEGER,
		cpqSMAPhysicalDiskState				INTEGER,
		cpqSMAPhysicalDiskUsedByIndex			INTEGER,
		cpqSMAPhysicalDiskNoofPartitions		INTEGER,
		cpqSMAPhysicalDiskUsedByType			INTEGER,
		cpqSMAPhysicalDiskSubsystemIndex		INTEGER
	}

cpqSMAPhysicalDiskIndex	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The PhysicalDisk index"
	::= { cpqSMAPhysicalDiskEntry 1 }

cpqSMAPhysicalDiskName OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The name of the PhysicalDisk."
		::= { cpqSMAPhysicalDiskEntry 2 }

cpqSMAPhysicalDiskModel OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The model of the PhysicalDisk."
		::= { cpqSMAPhysicalDiskEntry 3 }

cpqSMAPhysicalDiskPort	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The PhysicalDisk Port"
	::= { cpqSMAPhysicalDiskEntry 4 }

cpqSMAPhysicalDiskTarget  OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The PhysicalDisk target"
	::= { cpqSMAPhysicalDiskEntry 5 }

cpqSMAPhysicalDiskLun  OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The PhysicalDisk LUN"
	::= { cpqSMAPhysicalDiskEntry 6 }

cpqSMAPhysicalDiskSize OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Physical Disk Size.

        This is the size of the physical disk in megabytes.  This value
        is calculated using the value 1,048,576 (2^20) as a megabyte.
        Drive manufacturers sometimes use the number 1,000,000 as a
        megabyte when giving drive capacities so this value may
        differ from the advertised size of a drive."
    ::= { cpqSMAPhysicalDiskEntry 7 }

cpqSMAPhysicalDiskTransportable  OBJECT-TYPE
	SYNTAX	INTEGER
	{
        disable(1),
        enable(2),
		unknown(3)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"PhysicalDisk Transportable.
		
		Indicates whether a disk drive can be accessed exclusively by StorageWorks."
	::= { cpqSMAPhysicalDiskEntry 8 }

cpqSMAPhysicalDiskTransferRate  OBJECT-TYPE
	SYNTAX	INTEGER
	{
		asynchronous(1),
		mhz20(2),
		mhz10(3),
		mhz5(4),
		unknown(5)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"PhysicalDisk Transportable.
		
		Indicates whether a disk drive can be accessed exclusively by StorageWorks."
	::= { cpqSMAPhysicalDiskEntry 9 }

cpqSMAPhysicalDiskState  OBJECT-TYPE
	SYNTAX	INTEGER
	{
        free(1),
        assigned(2),
		unknown(3)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"PhysicalDisk State.
		
		Indicates whether a disk drive has been assigend to a storageset, lun or not."
	::= { cpqSMAPhysicalDiskEntry 10 }

cpqSMAPhysicalDiskUsedByIndex  OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"PhysicalDisk Used by index.
		
        This is the index of the lun or storageset that was created by using this physical disk.
		If the disk is unassigned or free ie. cpqSMAPhysicalDiskState = 1 then the index 
		is of the this controller."
	::= { cpqSMAPhysicalDiskEntry 11 }

cpqSMAPhysicalDiskNoofPartitions  OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The number of partitions on this PhysicalDisk."
	::= { cpqSMAPhysicalDiskEntry 12 }

cpqSMAPhysicalDiskUsedByType  OBJECT-TYPE
	SYNTAX	INTEGER
	{
        none(1),
        storageset(2),
		lun(3)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"PhysicalDisk UsedByType.
		
		If this disk has been assigned ie. cpqSMAPhysicalDiskState = 2, then this indicates 
		the type of object that was created using this disk ie. whether it is a storageset or 
		a lun and cpqSMAPhysicalDiskUsedByIndex gives you the instance of that object."
	::= { cpqSMAPhysicalDiskEntry 13 }

cpqSMAPhysicalDiskSubsystemIndex	OBJECT-TYPE
	SYNTAX	INTEGER(0..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The index of the subsystem where this physical
		disk resides."
	::= { cpqSMAPhysicalDiskEntry 14 }

--
-- StorageSet table
--

cpqSMAStorageSetTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF cpqSMAStorageSetEntry
	ACCESS	not-accessible
	STATUS mandatory
	DESCRIPTION
		"The table of StorageSets"
	::= { cpqSMAStorageSet 1 }

cpqSMAStorageSetEntry OBJECT-TYPE
	SYNTAX cpqSMAStorageSetEntry
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION
		"A table entry for a StorageSet"
    INDEX   { cpqSMAStorageSetIndex }
	::= { cpqSMAStorageSetTable 1 }

	cpqSMAStorageSetEntry ::= SEQUENCE {
		cpqSMAStorageSetIndex				INTEGER,
		cpqSMAStorageSetName				DisplayString,
		cpqSMAStorageSetRaidType			INTEGER,
		cpqSMAStorageSetSize				INTEGER,
		cpqSMAStorageSetPolicy				INTEGER,
		cpqSMAStorageSetReconstruct			INTEGER,
		cpqSMAStorageSetCopy				INTEGER,
		cpqSMAStorageSetReadSource			DisplayString,
		cpqSMAStorageSetAutospare			INTEGER,
		cpqSMAStorageSetChunkSize			INTEGER,
		cpqSMAStorageSetNoOfDisks			INTEGER,
		cpqSMAStorageSetDisksIndex			DisplayString,
		cpqSMAStorageSetState				INTEGER,
		cpqSMAStorageSetUsedByIndex			INTEGER,
		cpqSMAStorageSetNoofPartitions			INTEGER,
		cpqSMAStorageSetSubsystemIndex			INTEGER,
		cpqSMAStorageSetUsedByType			INTEGER
	}

cpqSMAStorageSetIndex	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The StorageSet index"
	::= { cpqSMAStorageSetEntry 1 }

cpqSMAStorageSetName OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The name of the StorageSet."
		::= { cpqSMAStorageSetEntry 2 }

cpqSMAStorageSetRaidType OBJECT-TYPE
	SYNTAX	INTEGER
	{
		stripeset(1),
		mirrorset(2),
		raidset(3),
		raid10(4),
		spareset(5),
		failedset(6),
		unknown(7)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The StorageSet Raid Type"
	::= { cpqSMAStorageSetEntry 3 }

cpqSMAStorageSetSize OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Storageset Size.

        This is the size of the storagset disk in megabytes.  This value
        is calculated using the value 1,048,576 (2^20) as a megabyte.
        Drive manufacturers sometimes use the number 1,000,000 as a
        megabyte when giving drive capacities so this value may
        differ from the advertised size of a drive."
    ::= { cpqSMAStorageSetEntry 4 }

cpqSMAStorageSetPolicy OBJECT-TYPE
	SYNTAX	INTEGER
    {
        best_fit(1),
        best_performance(2),
		nopolicy(3),
		unknown(4)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The StorageSet Policy switch.
		
		Sets the selection criteria the contoller uses to choose a replacement
		disk from the spareset. This policy only pertains to MIRRORSETs
		and RAIDSETs. 
		For the other types it will be set to unknown."
	::= { cpqSMAStorageSetEntry 5 }

cpqSMAStorageSetReconstruct OBJECT-TYPE
	SYNTAX	INTEGER
    {
        fast(1),
        normal(2),
		unknown(3)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The StorageSet Reconstruct switch.
		
		Sets the speed at which the contoller reconstructs data ti a new RAIDset
		disk that replaces the failed disk. This policy only pertains to RAIDSETs.
		For the other types it will be set to unknown."
	::= { cpqSMAStorageSetEntry 6 }

cpqSMAStorageSetCopy OBJECT-TYPE
	SYNTAX	INTEGER
    {
        fast(1),
        normal(2),
		unknown(3)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The StorageSet Copy switch.
		
		Sets the speed at which the controller copies data to a new member from
		normal mirrorset members when data is being mirrored to the storageset's
		disk drives. This policy only pertains to MIRRORSETs. 
		For the other types it will be set to unknown."
	::= { cpqSMAStorageSetEntry 7 }

cpqSMAStorageSetReadSource OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The Storageset ReadSource switch.
		
		Selects the mirrorset member used by the controller to satisfy a read
		request. The values will be either
		- disk-name (name of the specific member to which you want the controller
		to direct all read requests)
		- least_busy
		- round_robin
		This policy only pertains to MIRRORSETs. 
		For the other types it will be set to unknown."
		::= { cpqSMAStorageSetEntry 8 }

cpqSMAStorageSetAutospare  OBJECT-TYPE
	SYNTAX	INTEGER
    {
        enable(1),
        disable(2),
		unknown(3)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The StorageSet Autospare switch.
		
		With autospare enabled on a failedset, any new disk drive that is inserted
		into the PTL location of a failed dusk drive is automatically initialized and
		placed into the spareset. This policy only pertains to FAILEDSET. 
		For the other types it will be set to unknown."
	::= { cpqSMAStorageSetEntry 9 }

cpqSMAStorageSetChunkSize  OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The StorageSet ChunkSize switch.
		
		Specify a chunk size to control the stripesize used for RAIDsets
		and stripesets in blocks. This policy only pertains to RAIDSETs and
		STRIPESETs. 
		For the other types it will be set to zero."
	::= { cpqSMAStorageSetEntry 10 }

cpqSMAStorageSetNoOfDisks  OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The number of the physical disks that was used to create this StorageSet."
	::= { cpqSMAStorageSetEntry 11 }

cpqSMAStorageSetDisksIndex  OBJECT-TYPE
	SYNTAX	DisplayString
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The indexes of the physical disks from which this StorageSet was created.
		Each index is seperated by a ':' ."
	::= { cpqSMAStorageSetEntry 12 }

cpqSMAStorageSetState  OBJECT-TYPE
	SYNTAX	INTEGER
	{
        free(1),
        assigned(2),
		unknown(3)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"Storageset State.
		
		Indicates whether a lun has been created from the storageset."
	::= { cpqSMAStorageSetEntry 13 }

cpqSMAStorageSetUsedByIndex  OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"Storageset Used by index.
		
        This is the index of the lun or snapshot that was created from this storageset. 
		
		If the storageset is unassigned or free ie. cpqSMAStorageSetState = 1 then the index 
		is of the this controller.
		
		If the storageset has multiple (>1) partitions then the value is -1."
	::= { cpqSMAStorageSetEntry 14 }

cpqSMAStorageSetNoofPartitions  OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The number of partitions on this Storageset."
	::= { cpqSMAStorageSetEntry 15 }

cpqSMAStorageSetSubsystemIndex	OBJECT-TYPE
	SYNTAX	INTEGER(0..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The index of the subsystem where this storageset resides."
	::= { cpqSMAStorageSetEntry 16 }

cpqSMAStorageSetUsedByType	OBJECT-TYPE
	SYNTAX	INTEGER
	{
		lun(1),
		snapshot(2)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"Storageset Used by index.
		
        This tells us whether the type of disk created from this storageset is a lun
		or a snapshot. ie. if cpqSMAStorageSetState = 2 (assigned) then this
		tells you the type (lun or snapshot) and cpqSMAStorageSetUsedByIndex gives
		the index of that object."
	::= { cpqSMAStorageSetEntry 17 }


--
-- Partition table
--

cpqSMAPartitionTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF cpqSMAPartitionEntry
	ACCESS	not-accessible
	STATUS mandatory
	DESCRIPTION
		"The table of Partitions"
	::= { cpqSMAPartition 1 }

cpqSMAPartitionEntry OBJECT-TYPE
	SYNTAX cpqSMAPartitionEntry
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION
		"A table entry for a Partition"
    INDEX   { cpqSMAPartitionIndex }
	::= { cpqSMAPartitionTable 1 }

	cpqSMAPartitionEntry ::= SEQUENCE {
		cpqSMAPartitionIndex			INTEGER,
		cpqSMAPartitionName			DisplayString,
		cpqSMAPartitionNumber			INTEGER,
		cpqSMAPartitionDeviceIndex		INTEGER,
		cpqSMAPartitionState			INTEGER,
		cpqSMAPartitionUsedByIndex		INTEGER,
		cpqSMAPartitionSize			INTEGER,
		cpqSMAPartitionType			INTEGER,
		cpqSMAPartitionSubsystemIndex		INTEGER
	}

cpqSMAPartitionIndex	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The Partition index"
	::= { cpqSMAPartitionEntry 1 }

cpqSMAPartitionName OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The name of the Partition."
		::= { cpqSMAPartitionEntry 2 }

cpqSMAPartitionNumber	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The Partition number"
	::= { cpqSMAPartitionEntry 3 }

cpqSMAPartitionDeviceIndex	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The Partition Device Index.

        This is the index of the device (physical) or storageset (logical)
		from which this partition was created."
	::= { cpqSMAPartitionEntry 4 }

cpqSMAPartitionState OBJECT-TYPE
	SYNTAX	INTEGER
	{
       free(1),
       assigned(2),
	   unknown(3)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The Partition number"
	::= { cpqSMAPartitionEntry 5 }

cpqSMAPartitionUsedByIndex	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The Partition Used By Index.

        This is the index of the lun that was created from this partition. If the parition
		is unassigned or free ie. cpqSMAPartitionDeviceState = 1 then the index 
		is of the this controller."
	::= { cpqSMAPartitionEntry 6 }

cpqSMAPartitionSize OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Partition Size.

        This is the size of the partition in megabytes.  This value
        is calculated using the value 1,048,576 (2^20) as a megabyte.
        Drive manufacturers sometimes use the number 1,000,000 as a
        megabyte when giving drive capacities so this value may
        differ from the advertised size of a drive."
    ::= { cpqSMAPartitionEntry 7 }

cpqSMAPartitionType OBJECT-TYPE
	SYNTAX	INTEGER
	{
       physical(1),
       logical(2)
	}
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The type of Partition.
		
		If its a partition created from a device(disk) its a physical partition
		if its created from a storageset then its a logical partition."
	::= { cpqSMAPartitionEntry 8 }


cpqSMAPartitionSubsystemIndex	OBJECT-TYPE
	SYNTAX	INTEGER(0..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The index of the subsystem where this partition resides."
	::= { cpqSMAPartitionEntry 9 }


--
-- Connection table
--

cpqSMAConnectionTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF cpqSMAConnectionEntry
	ACCESS	not-accessible
	STATUS mandatory
	DESCRIPTION
		"The table of Connections"
	::= { cpqSMAConnection 1 }

cpqSMAConnectionEntry OBJECT-TYPE
	SYNTAX cpqSMAConnectionEntry
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION
		"A table entry for a Connection"
    INDEX   { cpqSMAConnectionIndex }
	::= { cpqSMAConnectionTable 1 }

	cpqSMAConnectionEntry ::= SEQUENCE {
		cpqSMAConnectionIndex				INTEGER,
		cpqSMAConnectionName				DisplayString,
		cpqSMAConnectionOSName				DisplayString,
		cpqSMAConnectionController			INTEGER,
		cpqSMAConnectionControllerPortNum		INTEGER,
		cpqSMAConnectionStatus				INTEGER,
		cpqSMAConnectionOnlineTo			INTEGER,
		cpqSMAConnectionLunOffset			INTEGER,
		cpqSMAConnectionHostID				DisplayString,
		cpqSMAConnectionAdapterID			DisplayString,
		cpqSMAConnectionUnitAddress			DisplayString,
		cpqSMAConnectionSubsystemIndex			INTEGER
	}

cpqSMAConnectionIndex	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The Connection index"
	::= { cpqSMAConnectionEntry 1 }

cpqSMAConnectionName OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The name of the Connection."
		::= { cpqSMAConnectionEntry 2 }

cpqSMAConnectionOSName OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The Operating System name. "
		::= { cpqSMAConnectionEntry 3 }

cpqSMAConnectionController	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The instance of the controller to which there is a connection."
	::= { cpqSMAConnectionEntry 4 }

cpqSMAConnectionControllerPortNumber OBJECT-TYPE
	SYNTAX	INTEGER(1..2)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The port number on the controller to which there is a connection."
	::= { cpqSMAConnectionEntry 5 }

cpqSMAConnectionStatus OBJECT-TYPE
    SYNTAX  INTEGER
    {
        online(1),
        offline(2),
		unknown(3)
    }
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The status of connection."
	::= { cpqSMAConnectionEntry 6 }

cpqSMAConnectionOnlineTo	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The instance of the controller to which it is online."
	::= { cpqSMAConnectionEntry 7 }

cpqSMAConnectionLunOffset	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The LUN offset for this connection."
	::= { cpqSMAConnectionEntry 8 }

cpqSMAConnectionHostID OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The HOST ID."
		::= { cpqSMAConnectionEntry 9 }

cpqSMAConnectionAdapterID OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The Adapter ID."
		::= { cpqSMAConnectionEntry 10 }

cpqSMAConnectionUnitAddress OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The Unit Address."
		::= { cpqSMAConnectionEntry 11 }

cpqSMAConnectionSubsystemIndex	OBJECT-TYPE
	SYNTAX	INTEGER(0..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The index of the subsystem where this connection exists."
	::= { cpqSMAConnectionEntry 12 }

--
-- Snapshot table
--

cpqSMASnapshotTable OBJECT-TYPE
	SYNTAX  SEQUENCE OF cpqSMASnapshotEntry
	ACCESS	not-accessible
	STATUS mandatory
	DESCRIPTION
		"The table of Snapshots"
	::= { cpqSMASnapshot 1 }

cpqSMASnapshotEntry OBJECT-TYPE
	SYNTAX cpqSMASnapshotEntry
	ACCESS not-accessible
	STATUS mandatory
	DESCRIPTION
		"A table entry for a Snapshot"
    INDEX   { cpqSMASnapshotIndex }
	::= { cpqSMASnapshotTable 1 }

	cpqSMASnapshotEntry ::= SEQUENCE {
		cpqSMASnapshotIndex				INTEGER,
		cpqSMASnapshotName				DisplayString,
		cpqSMASnapshotSize				INTEGER,
		cpqSMASnapshotCreatedFromIndex			INTEGER,
		cpqSMASnapshotOf				INTEGER,
		cpqSMASnapshotState				INTEGER,
		cpqSMASnapshotPreferredPath			INTEGER,
		cpqSMASnapshotHostAccess			DisplayString,
		cpqSMASnapshotIdentifier			DisplayString,
		cpqSMASnapshotHeads				INTEGER,
		cpqSMASnapshotCylinders				INTEGER,
		cpqSMASnapshotSectors				INTEGER,
		cpqSMASnapshotControllerInstance		INTEGER,
		cpqSMASnapshotIdentifierSwitch			INTEGER,
		cpqSMASnapshotSubsystemIndex			INTEGER
	}

cpqSMASnapshotIndex	OBJECT-TYPE
	SYNTAX	INTEGER(1..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The Snapshot index"
	::= { cpqSMASnapshotEntry 1 }

cpqSMASnapshotName OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"The name of the Snapshot."
		::= { cpqSMASnapshotEntry 2 }

cpqSMASnapshotSize OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Snapshot Drive Size.

        This is the size of the snapshot in blocks.  One block 
		equals 512 bytes (1 block = 512 bytes)."
	::= { cpqSMASnapshotEntry 3 }

cpqSMASnapshotCreatedFromIndex OBJECT-TYPE
    SYNTAX  INTEGER
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Snapshot Created From Instance.

        This gives us the instance of the storageset 
		from which this snapshot was created."
    ::= { cpqSMASnapshotEntry 4 }

cpqSMASnapshotOf OBJECT-TYPE
    SYNTAX  INTEGER
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "This is the instance of the logical disk for which this is a snapshot."
    ::= { cpqSMASnapshotEntry 5 }

cpqSMASnapshotState OBJECT-TYPE
    SYNTAX  INTEGER
    {
        online(1),
        available(2),
        unknown(3)
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
		"Snapshot State.

        The state of the snapshot."
    ::= { cpqSMASnapshotEntry 6 }

cpqSMASnapshotPreferredPath OBJECT-TYPE
	SYNTAX  INTEGER
    {
        this(1),
        other(2),
        none(3)
    }
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Snapshot PreferredPath.

        May be set only when dual redundant controllers are operating in a
		multiple-bus failover configuration."
    ::= { cpqSMASnapshotEntry 7 }

cpqSMASnapshotHostAccess OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 

		"Snapshot Host Access.
		Specifies the access path."
	::= { cpqSMASnapshotEntry 8 }

cpqSMASnapshotIdentifier OBJECT-TYPE
	SYNTAX DisplayString
	ACCESS read-only
	STATUS mandatory
	DESCRIPTION 
		"Snapshot ID
		
		This ID consists of the controller node ID plus a 64-bit unit ID
		generated by the subsystem."
	::= { cpqSMASnapshotEntry 9 }

cpqSMASnapshotHeads OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Number of Heads."
    ::= { cpqSMASnapshotEntry 10 }

cpqSMASnapshotCylinders OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Number of Cylinders."
    ::= { cpqSMASnapshotEntry 11 }

cpqSMASnapshotSectors OBJECT-TYPE
    SYNTAX  INTEGER (0..2147483647)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Number of Sectors."
    ::= { cpqSMASnapshotEntry 12 }

cpqSMASnapshotControllerInstance OBJECT-TYPE
    SYNTAX  INTEGER(0..10000)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Snapshot Controller Instance.

        This gives us the instance of the controller to which this snapshot is online."
    ::= { cpqSMASnapshotEntry 13 }

cpqSMASnapshotIdentifierSwitch OBJECT-TYPE
    SYNTAX  INTEGER(0..9999)
    ACCESS  read-only
    STATUS  mandatory
    DESCRIPTION
        "Snapshot Identifier switch.

        This is used with the SCSI_VERSION switch when the SCSI version
		is set to SCSI-3 mode. The IDENTIFIER switch creates a unique 
		unit identifier makes the unit visible to the host.This number can
		be a value between 1-9999. The value 0 means NOIDENTIFIER."
    ::= { cpqSMASnapshotEntry 14 }

cpqSMASnapshotSubsystemIndex	OBJECT-TYPE
	SYNTAX	INTEGER(0..10000)
	ACCESS	read-only
	STATUS	mandatory
	DESCRIPTION
		"The index of the subsystem where this snapshot resides."
	::= { cpqSMASnapshotEntry 15 }



END
