-- ===========================================================
-- Copyright (C) 2004 by H3C Technologies. All rights reserved.
-- Description: The MIB is designed to manage the raid.
-- Reference:
-- Version: V1.1
-- History:
--   V1.0 2007-09-04 created by lizhicheng
--   V1.1 2009-10-20 modified by zhanglei
--        Modify hh3cRaidName MAX-ACCESS to accessible-for-notify for simlint
--        Delete raid run status stopped(3) in hh3cRaidRunState
-- =================================================================
HH3C-RAID-MIB DEFINITIONS ::= BEGIN
IMPORTS
        Counter32, Integer32,
        OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE
    FROM SNMPv2-SMI
        RowStatus, DateAndTime, TruthValue, TEXTUAL-CONVENTION
    FROM SNMPv2-TC
        entPhysicalIndex
    FROM ENTITY-MIB
        Hh3cStorageOwnerType, Hh3cStorageEnableState, Hh3cStorageActionType,
        Hh3cRaidIDType, hh3cStorageRef
    FROM HH3C-STORAGE-REF-MIB;

hh3cRaid MODULE-IDENTITY
    LAST-UPDATED "200709041452Z"
    ORGANIZATION
        "H3C Technologies Co., Ltd."
    CONTACT-INFO
        "Platform Team H3C Technologies Co., Ltd.
         Hai-Dian District Beijing P.R. China
         Http://www.h3c.com
         Zip:100085"
    DESCRIPTION
        "This MIB describes the general information of raid."
    ::= { hh3cStorageRef 4 }

hh3cRaidMibObjects OBJECT IDENTIFIER ::= { hh3cRaid 1 }


hh3cRaidCapacityTable  OBJECT IDENTIFIER ::= { hh3cRaidMibObjects 1 }
hh3cPrimaryRaidCount OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object identifies the maximal number of primary raids supported."
    ::= { hh3cRaidCapacityTable 1 }


-- Raid Resource Create Table
-- This table described the information of create server's array resource.
hh3cRaidTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cRaidEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table containing some property information of the array."
    ::= { hh3cRaidMibObjects 2 }

hh3cRaidEntry OBJECT-TYPE
    SYNTAX      Hh3cRaidEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing management information applicable
        to create array resource."
    INDEX
        {
            hh3cRaidName
        }

    ::= { hh3cRaidTable 1 }

Hh3cRaidEntry ::= SEQUENCE
    {
        hh3cRaidName         OCTET STRING,
        hh3cRaidId           Integer32,
        hh3cRaidUuid         Hh3cRaidIDType,
        hh3cRaidLevel        INTEGER,
        hh3cRaidTimestamp    DateAndTime,
        hh3cRaidDiskList     OCTET STRING,
        hh3cRaidOwner        Hh3cStorageOwnerType,
        hh3cRaidSize         Integer32,
        hh3cRaidFreeSize     Integer32,
        hh3cRaidAutoSync     TruthValue,
        hh3cRaidRowStatus    RowStatus
    }

hh3cRaidName OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..31))
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "This object identifies the name of the array."
    ::= { hh3cRaidEntry 1 }

hh3cRaidId OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object describes the identification of the array."
    ::= { hh3cRaidEntry 2 }

hh3cRaidUuid OBJECT-TYPE
    SYNTAX      Hh3cRaidIDType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object describes the UUID of the array."
    ::= { hh3cRaidEntry 3 }

hh3cRaidLevel OBJECT-TYPE
    SYNTAX      INTEGER
        {
            jbod(1),
            raid0(2),
            raid1(3),
            raid2(4),
            raid3(5),
            raid4(6),
            raid5(7),
            raid6(8),
            raid10(9),
            raid50(10)
        }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object identifies the type of array.
        The value 'jbod' means just a bunch of disks,
        the value 'raid0' means RAID Level 0, and so on."
    ::= { hh3cRaidEntry 4 }

hh3cRaidTimestamp OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object identifies the system time when the array is created."
    ::= { hh3cRaidEntry 5 }

hh3cRaidDiskList OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(2..256))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object describes a list of the disk composed the array,
        each two bytes with network-byte order means a single entity index
        of the disk."
    ::= { hh3cRaidEntry 6 }

hh3cRaidOwner OBJECT-TYPE
    SYNTAX      Hh3cStorageOwnerType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object identifies the owner of the array."
    ::= { hh3cRaidEntry 7 }

hh3cRaidSize OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object describes the size of array's total space. The
        units is million bytes."
    ::= { hh3cRaidEntry 8 }

hh3cRaidFreeSize OBJECT-TYPE
    SYNTAX      Integer32
    UNITS       "MB"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object describes the size of array's vacancy space. The
        units is million bytes."
    ::= { hh3cRaidEntry 9 }

hh3cRaidAutoSync OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object identifies if the raid should be synchro automatically
        when created."
    ::= { hh3cRaidEntry 10 }

hh3cRaidRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object describes the actions to crate or delete an array."
    ::= { hh3cRaidEntry 11 }



-- Raid Resource Manage Table
-- This table described the information about how to manage the server's array
-- resource.
hh3cRaidManageTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cRaidManageEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table containing some management information of the array."
    ::= { hh3cRaidMibObjects 3 }

hh3cRaidManageEntry OBJECT-TYPE
    SYNTAX      Hh3cRaidManageEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing management information applicable
        to particular array resource."
    INDEX
        {
            hh3cRaidUuid
        }

    ::= { hh3cRaidManageTable 1 }

Hh3cRaidManageEntry ::= SEQUENCE
    {
        hh3cRaidLocationState    Hh3cStorageEnableState,
        hh3cRaidAction           INTEGER,
        hh3cRaidRunState         INTEGER,
        hh3cRaidAutoRebuild      Hh3cStorageEnableState,
        hh3cRaidSyncPercentage   Integer32,
        hh3cRaidHideState        Hh3cStorageEnableState,
        hh3cRaidLvRestore        Hh3cStorageActionType,
        hh3cRaidType             INTEGER
    }

hh3cRaidLocationState OBJECT-TYPE
    SYNTAX      Hh3cStorageEnableState
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object identifies if the array can be located."
    DEFVAL { enable }
    ::= { hh3cRaidManageEntry 1 }

hh3cRaidAction OBJECT-TYPE
    SYNTAX      INTEGER
        {
            run(1),
            pause(2),
            rebuild(3),
            invalid(4)
        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object identifies the actions to operating the array. When
        read, this object always returns the value 'invalid'."
    ::= { hh3cRaidManageEntry 2 }

hh3cRaidRunState OBJECT-TYPE
    SYNTAX      INTEGER
        {
            normal(1),
            degraded(2),
            failed(3)
        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object identifies the state of the array.
        The value 'normal' means array works well.
        The value 'degraded' means array has degraded.
        The value 'failed' means some disks met failure and array has failed."
    ::= { hh3cRaidManageEntry 3 }

hh3cRaidAutoRebuild OBJECT-TYPE
    SYNTAX      Hh3cStorageEnableState
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object identifies if the array can be auto rebuild."
    DEFVAL { disable }
    ::= { hh3cRaidManageEntry 4 }

hh3cRaidSyncPercentage OBJECT-TYPE
    SYNTAX      Integer32(0..100)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object describes the percentage of progress when the array
        is synchronizing. The value is equal to '100' when the progress
        has finished."
    ::= { hh3cRaidManageEntry 5 }

hh3cRaidHideState OBJECT-TYPE
    SYNTAX      Hh3cStorageEnableState
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object identifies if the array is hided. When the value of
        this object is equal to 'enable', the array will be hided and the
        files on it can not be accessed by any user."
    DEFVAL { disable }
    ::= { hh3cRaidManageEntry 6 }


hh3cRaidLvRestore OBJECT-TYPE
    SYNTAX      Hh3cStorageActionType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object identifies an action to restore all the logic volume
        resources."
    ::= { hh3cRaidManageEntry 7 }

hh3cRaidType OBJECT-TYPE
    SYNTAX      INTEGER
        {
            virtualDevice(1),
            directDevice(2),
            serviceEnabledDevice(3),
            unassigned(4)
        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object identifies the physical type of an array.
         The value 'virtualDevice' means if a array is prepared for virtual device,
         it can be used to create LV, for exampe, it is can be split into a lot of LV,
         or be a part of LV.
         The value 'directDevice' means if a array is prepared for direct device,
         it can be used to create a LV which type is direct.
         Unlike virtual devices, they cannot be combined or split into multiple logical devices.
         The value 'serviceEnabledDevice' means if a array is prepared for service-enabled device,
         it can be used to create a LV which type is service-enabled.
         Unlike virtual devices, they cannot be combined or split into multiple logical devices.
         The value 'unassigned' means it is the original status of a array,
         if a array is unassigned, it can't be used to create LV."
    ::= { hh3cRaidManageEntry 8 }



-- Raid Cache Table
-- This table described the information of server's array cache resource.
hh3cRaidCacheTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cRaidCacheEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table containing some property information and management
        information of the array cache."
    ::= { hh3cRaidMibObjects 4 }

hh3cRaidCacheEntry OBJECT-TYPE
    SYNTAX      Hh3cRaidCacheEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing management information applicable to particular
        array cache resource."
    INDEX
        {
            hh3cRaidUuid
        }

    ::= { hh3cRaidCacheTable 1 }

Hh3cRaidCacheEntry ::= SEQUENCE
    {
        hh3cRaidReadCache                Hh3cStorageEnableState,
        hh3cRaidReadCacheHitPeriod       Integer32,
        hh3cRaidReadCacheAverageRate     Integer32,
        hh3cRaidReadCachePhaseRate       Integer32,
        hh3cRaidWriteCache               Hh3cStorageEnableState,
        hh3cRaidWriteCacheHitPeriod      Integer32,
        hh3cRaidWriteCacheAverageRate    Integer32,
        hh3cRaidWriteCachePhaseRate      Integer32,
        hh3cRaidWriteCacheFlush          Hh3cStorageActionType
    }

hh3cRaidReadCache OBJECT-TYPE
    SYNTAX      Hh3cStorageEnableState
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object identifies the state of read cache. If the value of
        this object is set to 'disable', the associated percentage of cache
        hit may be invalid."
    DEFVAL { enable }
    ::= { hh3cRaidCacheEntry 1 }

hh3cRaidReadCacheHitPeriod OBJECT-TYPE
    SYNTAX      Integer32(1..60)
    UNITS       "minute"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object describes the period during which how often the
        date matched with the cache when read. The units is minute."
    ::= { hh3cRaidCacheEntry 2 }

hh3cRaidReadCacheAverageRate OBJECT-TYPE
    SYNTAX      Integer32(0..100)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object describes the average percentage of cache hit when read."
    ::= { hh3cRaidCacheEntry 3 }

hh3cRaidReadCachePhaseRate OBJECT-TYPE
    SYNTAX      Integer32(0..100)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object describes the percentage of cache hit when read during
        the period set by the hh3cRaidReadCacheHitPeriod object."
    ::= { hh3cRaidCacheEntry 4 }

hh3cRaidWriteCache OBJECT-TYPE
    SYNTAX      Hh3cStorageEnableState
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object identifies the state of write cache. If the value of
        this object is set to 'disable', the associated percentage of cache
        hit may be invalid."
    DEFVAL { enable }
    ::= { hh3cRaidCacheEntry 5 }

hh3cRaidWriteCacheHitPeriod OBJECT-TYPE
    SYNTAX      Integer32(1..60)
    UNITS       "minute"
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object describes the period during which how often the
        date matched with the cache when writed. The units is minute."
    ::= { hh3cRaidCacheEntry 6 }

hh3cRaidWriteCacheAverageRate OBJECT-TYPE
    SYNTAX      Integer32(0..100)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object describes the average percentage of cache hit when writed."
    ::= { hh3cRaidCacheEntry 7 }

hh3cRaidWriteCachePhaseRate OBJECT-TYPE
    SYNTAX      Integer32(0..100)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object describes the percentage of cache hit when write during
        the period set by the hh3cRaidWriteCacheHitPeriod object."
    ::= { hh3cRaidCacheEntry 8 }

hh3cRaidWriteCacheFlush OBJECT-TYPE
    SYNTAX      Hh3cStorageActionType
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This object identifies an action to flushing the write cache."
    ::= { hh3cRaidCacheEntry 9 }



-- Spare Hot Disk Table
-- This table described the spare hot disk information.
hh3cRaidSpareDiskTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cRaidSpareDiskEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table described the spare hot disk information."
    ::= { hh3cRaidMibObjects 5 }

hh3cRaidSpareDiskEntry OBJECT-TYPE
    SYNTAX      Hh3cRaidSpareDiskEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing management information applicable to a spare
        hot disk."
    INDEX
        {
            hh3cRaidUuid,
            entPhysicalIndex
        }

    ::= { hh3cRaidSpareDiskTable 1 }

Hh3cRaidSpareDiskEntry ::= SEQUENCE
    {
        hh3cRaidSpareDiskRowStatus    RowStatus
    }

hh3cRaidSpareDiskRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object describes the actions to create or delete spare hot
        disk."
    ::= { hh3cRaidSpareDiskEntry 1 }

-- Freezed Raid Management Table
-- This table described the freezed raid management.
hh3cFreezeRaidTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3cFreezeRaidEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table described the freezed raid management."
    ::= { hh3cRaidMibObjects 6 }

hh3cFreezeRaidEntry OBJECT-TYPE
    SYNTAX      Hh3cFreezeRaidEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing management information applicable to manage
        the freezed raid."
    INDEX
        {
            hh3cFreezeRaidUuid
        }

    ::= { hh3cFreezeRaidTable 1 }

Hh3cFreezeRaidEntry ::= SEQUENCE
    {
        hh3cFreezeRaidUuid         Hh3cRaidIDType,
        hh3cFreezeRaidName         OCTET STRING,
        hh3cFreezeRaidRowStatus    RowStatus
    }

hh3cFreezeRaidUuid OBJECT-TYPE
    SYNTAX      Hh3cRaidIDType
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object describes the uuid of the freezed raid."
    ::= { hh3cFreezeRaidEntry 1 }


hh3cFreezeRaidName OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..31))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object describes the name of the freezed raid."
    ::= { hh3cFreezeRaidEntry 2 }

hh3cFreezeRaidRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object describes the actions to manage the freezed raid.
        Only the value 'destroy' is supported."
    ::= { hh3cFreezeRaidEntry 3 }

-- 3rd Raid Management Table
-- This table described the 3rd raid management.
hh3c3rdRaidTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF Hh3c3rdRaidEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table described the 3rd raid management."
    ::= { hh3cRaidMibObjects 7 }

hh3c3rdRaidEntry OBJECT-TYPE
    SYNTAX      Hh3c3rdRaidEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry containing management information applicable to manage
        the 3rd raid."
    INDEX
        {
            hh3c3rdRaidUuid
        }

    ::= { hh3c3rdRaidTable 1 }

Hh3c3rdRaidEntry ::= SEQUENCE
    {
        hh3c3rdRaidUuid         Hh3cRaidIDType,
        hh3c3rdRaidName         OCTET STRING,
        hh3c3rdRaidOwner        OCTET STRING,
        hh3c3rdRaidImport       Hh3cStorageOwnerType,
        hh3c3rdRaidRowStatus    RowStatus
    }

hh3c3rdRaidUuid OBJECT-TYPE
    SYNTAX      Hh3cRaidIDType
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This object describes the uuid of the 3rd raid."
    ::= { hh3c3rdRaidEntry 1 }

hh3c3rdRaidName OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..31))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object describes the name of the 3rd raid."
    ::= { hh3c3rdRaidEntry 2 }

hh3c3rdRaidOwner OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object describes the owner of the 3rd raid."
    ::= { hh3c3rdRaidEntry 3 }

hh3c3rdRaidImport OBJECT-TYPE
    SYNTAX      Hh3cStorageOwnerType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object describes the owner for the 3rd raid. When read,
        the value 'none' will be get.
        If the action is executed successfully, the 3rd raid will become
        a primary raid, and this entry will be deleted automatically."
    ::= { hh3c3rdRaidEntry 4 }

hh3c3rdRaidRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object describes the actions to manage the 3rd raid.
        Only the value 'destroy' is supported."
    ::= { hh3c3rdRaidEntry 5 }

END
