-- ===========================================================
-- 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 h3cRaidName MAX-ACCESS to accessible-for-notify for simlint
--        Delete raid run status stopped(3) in h3cRaidRunState
-- =================================================================
H3C-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
        H3cStorageOwnerType, H3cStorageEnableState, H3cStorageActionType,
        H3cRaidIDType, h3cStorageRef
    FROM H3C-STORAGE-REF-MIB;

h3cRaid 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."
    ::= { h3cStorageRef 4 }

h3cRaidMibObjects OBJECT IDENTIFIER ::= { h3cRaid 1 }


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


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

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

    ::= { h3cRaidTable 1 }

H3cRaidEntry ::= SEQUENCE
    {
        h3cRaidName         OCTET STRING,
        h3cRaidId           Integer32,
        h3cRaidUuid         H3cRaidIDType,
        h3cRaidLevel        INTEGER,
        h3cRaidTimestamp    DateAndTime,
        h3cRaidDiskList     OCTET STRING,
        h3cRaidOwner        H3cStorageOwnerType,
        h3cRaidSize         Integer32,
        h3cRaidFreeSize     Integer32,
        h3cRaidAutoSync     TruthValue,
        h3cRaidRowStatus    RowStatus
    }

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

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

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

h3cRaidLevel 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."
    ::= { h3cRaidEntry 4 }

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

h3cRaidDiskList 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."
    ::= { h3cRaidEntry 6 }

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

h3cRaidSize 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."
    ::= { h3cRaidEntry 8 }

h3cRaidFreeSize 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."
    ::= { h3cRaidEntry 9 }

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

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



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

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

    ::= { h3cRaidManageTable 1 }

H3cRaidManageEntry ::= SEQUENCE
    {
        h3cRaidLocationState    H3cStorageEnableState,
        h3cRaidAction           INTEGER,
        h3cRaidRunState         INTEGER,
        h3cRaidAutoRebuild      H3cStorageEnableState,
        h3cRaidSyncPercentage   Integer32,
        h3cRaidHideState        H3cStorageEnableState,
        h3cRaidLvRestore        H3cStorageActionType,
        h3cRaidType             INTEGER
    }

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

h3cRaidAction 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'."
    ::= { h3cRaidManageEntry 2 }

h3cRaidRunState 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."
    ::= { h3cRaidManageEntry 3 }

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

h3cRaidSyncPercentage 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."
    ::= { h3cRaidManageEntry 5 }

h3cRaidHideState OBJECT-TYPE
    SYNTAX      H3cStorageEnableState
    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 }
    ::= { h3cRaidManageEntry 6 }


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

h3cRaidType 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."
    ::= { h3cRaidManageEntry 8 }



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

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

    ::= { h3cRaidCacheTable 1 }

H3cRaidCacheEntry ::= SEQUENCE
    {
        h3cRaidReadCache                H3cStorageEnableState,
        h3cRaidReadCacheHitPeriod       Integer32,
        h3cRaidReadCacheAverageRate     Integer32,
        h3cRaidReadCachePhaseRate       Integer32,
        h3cRaidWriteCache               H3cStorageEnableState,
        h3cRaidWriteCacheHitPeriod      Integer32,
        h3cRaidWriteCacheAverageRate    Integer32,
        h3cRaidWriteCachePhaseRate      Integer32,
        h3cRaidWriteCacheFlush          H3cStorageActionType
    }

h3cRaidReadCache OBJECT-TYPE
    SYNTAX      H3cStorageEnableState
    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 }
    ::= { h3cRaidCacheEntry 1 }

h3cRaidReadCacheHitPeriod 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."
    ::= { h3cRaidCacheEntry 2 }

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

h3cRaidReadCachePhaseRate 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 h3cRaidReadCacheHitPeriod object."
    ::= { h3cRaidCacheEntry 4 }

h3cRaidWriteCache OBJECT-TYPE
    SYNTAX      H3cStorageEnableState
    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 }
    ::= { h3cRaidCacheEntry 5 }

h3cRaidWriteCacheHitPeriod 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."
    ::= { h3cRaidCacheEntry 6 }

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

h3cRaidWriteCachePhaseRate 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 h3cRaidWriteCacheHitPeriod object."
    ::= { h3cRaidCacheEntry 8 }

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



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

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

    ::= { h3cRaidSpareDiskTable 1 }

H3cRaidSpareDiskEntry ::= SEQUENCE
    {
        h3cRaidSpareDiskRowStatus    RowStatus
    }

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

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

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

    ::= { h3cFreezeRaidTable 1 }

H3cFreezeRaidEntry ::= SEQUENCE
    {
        h3cFreezeRaidUuid         H3cRaidIDType,
        h3cFreezeRaidName         OCTET STRING,
        h3cFreezeRaidRowStatus    RowStatus
    }

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


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

h3cFreezeRaidRowStatus 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."
    ::= { h3cFreezeRaidEntry 3 }

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

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

    ::= { h3c3rdRaidTable 1 }

H3c3rdRaidEntry ::= SEQUENCE
    {
        h3c3rdRaidUuid         H3cRaidIDType,
        h3c3rdRaidName         OCTET STRING,
        h3c3rdRaidOwner        OCTET STRING,
        h3c3rdRaidImport       H3cStorageOwnerType,
        h3c3rdRaidRowStatus    RowStatus
    }

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

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

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

h3c3rdRaidImport OBJECT-TYPE
    SYNTAX      H3cStorageOwnerType
    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."
    ::= { h3c3rdRaidEntry 4 }

h3c3rdRaidRowStatus 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."
    ::= { h3c3rdRaidEntry 5 }

END
