-- CISCO-SAN-BASE-SVC-MIB.my: Common MIB for storage services
--   
-- June 2009, Vijay Chander, Anand Parthasarathy
-- and Arpakorn Boonkongchuen
--   
-- Copyright (c) 2009 by Cisco Systems Inc.
-- All rights reserved.
--   
-- ********************************************************************

CISCO-SAN-BASE-SVC-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    NOTIFICATION-TYPE
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    OBJECT-GROUP,
    NOTIFICATION-GROUP
        FROM SNMPv2-CONF
    TEXTUAL-CONVENTION,
    TruthValue,
    TimeStamp,
    RowStatus,
    StorageType
        FROM SNMPv2-TC
    InterfaceIndex,
    ifDescr
        FROM IF-MIB
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
    InetAddressType,
    InetAddress
        FROM INET-ADDRESS-MIB
    FcNameId
        FROM CISCO-ST-TC
    ciscoMgmt
        FROM CISCO-SMI;


ciscoSanBaseSvcMIB MODULE-IDENTITY
    LAST-UPDATED    "200906110000Z"
    ORGANIZATION    "Cisco Systems Inc."
    CONTACT-INFO
            "Cisco Systems
            Customer Service
            Postal: 170 W Tasman Drive
            San Jose, CA  95134
            USA
            Tel: +1 800 553 -NETS
            E-mail: cs-san@cisco.com"
    DESCRIPTION
        "Common MIB module to manage services in Storage Area
        Network (SAN).  Service is deployed on service
        nodes on multiple switches forming a cluster.  
        Nodes in the same cluster pick up the workload of 
        a failed node to provide fault tolerance.  An example 
        of service that can be deployed is 
        IO Acceleration (IOA) service.

        Glossary:
        The following terms are used in this MIB: 
        pWWN:
        Port World Wide Name is a identifier assigned to a 
        port in a Fibre Channel fabric. They perform a function
        equivalent to the MAC address in Ethernet protocol,
        as it is supposed to be unique identifier in the 
        network.

        Nx_port:
        Nx_port is a storage port in Fibre Channel fabric 
        that belongs to host or target."
    REVISION        "200906110000Z"
    DESCRIPTION
        "Initial version"
    ::= { ciscoMgmt 702 }


ciscoSanBaseSvcMIBNotifs  OBJECT IDENTIFIER
    ::= { ciscoSanBaseSvcMIB 0 }

ciscoSanBaseSvcMIBObjects  OBJECT IDENTIFIER
    ::= { ciscoSanBaseSvcMIB 1 }

ciscoSanBaseSvcMIBConform  OBJECT IDENTIFIER
    ::= { ciscoSanBaseSvcMIB 2 }

cSanBaseSvcConfig  OBJECT IDENTIFIER
    ::= { ciscoSanBaseSvcMIBObjects 1 }

cSanBaseSvcInterface  OBJECT IDENTIFIER
    ::= { ciscoSanBaseSvcMIBObjects 2 }


-- Textual Conventions

CiscoSanBaseSvcInterfaceStatus ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "Operational state of the service interface.
        'unknown(1)' -- interface is in an unknown state
        'initializing(2)' -- interface is being initialized
        'offline(3)' -- interface is not active
        'online(4)' -- interface is online and can be used"
    SYNTAX          INTEGER  {
                        unknown(1),
                        initializing(2),
                        offline(3),
                        online(4)
                    }

CiscoSanBaseSvcClusterStatus ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "Operational state of the service cluster
        'unknown(1)' -- cluster is in an unknown state
        'inactive(2)' -- cluster is not active
        'degraded(3)' -- cluster has lost some of its members
        'recovery(4)' -- cluster is recovering from membership lost
        'active(5)'   -- cluster is active"
    SYNTAX          INTEGER  {
                        unknown(1),
                        inactive(2),
                        degraded(3),
                        recovery(4),
                        active(5)
                    }

CiscoSanBaseSvcClusterIndex ::= TEXTUAL-CONVENTION
    STATUS          current
    DESCRIPTION
        "This denotes the globally unique index for a service
        cluster. The value of the CiscoSanBaseSvcClusterIndex is
        an eight-octet unsigned integer value encoded in
        a network-byte order."
    SYNTAX          OCTET STRING (SIZE (8))
-- SAN Base Service Configuration Group
--   

-- SAN Base Service Cluster Table

cSanBaseSvcClusterTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CSanBaseSvcClusterEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table lists all the service clusters that are configured
        on this device. It is important that any service is provided 
        in a fault-tolerant manner. Base Service provides this by 
        allowing service nodes to be grouped into cluster. Nodes in 
        the same cluster immediately pick up the work of any failed 
        node so user does not see service disruption."
    ::= { cSanBaseSvcConfig 1 }

cSanBaseSvcClusterEntry OBJECT-TYPE
    SYNTAX          CSanBaseSvcClusterEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row in the cSanBaseSvcClusterTable. Each
        row represents a service cluster in the system and 
        provides the runtime and configuration information
        of a cluster."
    INDEX           { cSanBaseSvcClusterId } 
    ::= { cSanBaseSvcClusterTable 1 }

CSanBaseSvcClusterEntry ::= SEQUENCE {
        cSanBaseSvcClusterId                 CiscoSanBaseSvcClusterIndex,
        cSanBaseSvcClusterName               SnmpAdminString,
        cSanBaseSvcClusterState              CiscoSanBaseSvcClusterStatus,
        cSanBaseSvcClusterMasterInetAddrType InetAddressType,
        cSanBaseSvcClusterMasterInetAddr     InetAddress,
        cSanBaseSvcClusterStorageType        StorageType,
        cSanBaseSvcClusterRowStatus          RowStatus,
        cSanBaseSvcClusterApplication        SnmpAdminString
}

cSanBaseSvcClusterId OBJECT-TYPE
    SYNTAX          CiscoSanBaseSvcClusterIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Globally unique index that identifies a service cluster.
        This index must be generated in such a way that the 
        same value is never reused even after cluster has been 
        deleted." 
    ::= { cSanBaseSvcClusterEntry 1 }

cSanBaseSvcClusterName OBJECT-TYPE
    SYNTAX          SnmpAdminString (SIZE  (0..32))
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The name of the service cluster."
    DEFVAL          { "" } 
    ::= { cSanBaseSvcClusterEntry 2 }

cSanBaseSvcClusterState OBJECT-TYPE
    SYNTAX          CiscoSanBaseSvcClusterStatus
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The operational state of the service cluster." 
    ::= { cSanBaseSvcClusterEntry 3 }

cSanBaseSvcClusterMasterInetAddrType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The type of Internet address of the service cluster
        master.  The Internet address of service cluster master is
        specified by the value of the corresponding instance
        of cSanBaseSvcClusterMasterInetAddr." 
    ::= { cSanBaseSvcClusterEntry 4 }

cSanBaseSvcClusterMasterInetAddr OBJECT-TYPE
    SYNTAX          InetAddress
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The Internet address of the service cluster master
        device. The type of this Internet address is
        determined by the value of the corresponding
        instance of cSanBaseSvcClusterMasterInetAddrType." 
    ::= { cSanBaseSvcClusterEntry 5 }

cSanBaseSvcClusterStorageType OBJECT-TYPE
    SYNTAX          StorageType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the storage type for this conceptual
        row." 
    ::= { cSanBaseSvcClusterEntry 6 }

cSanBaseSvcClusterRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The status of this conceptual row.

        There is no restriction on the value of other columns
        before a newly created row can be made active." 
    ::= { cSanBaseSvcClusterEntry 7 }

cSanBaseSvcClusterApplication OBJECT-TYPE
    SYNTAX          SnmpAdminString
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object represents the name of the application
        that is enabled on this cluster." 
    ::= { cSanBaseSvcClusterEntry 8 }
 

-- SAN Base Service Cluster Member Switch Table

cSanBaseSvcClusterMembersTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CSanBaseSvcClusterMembersEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table lists the information of devices, local or
        remote, which are members of a service cluster configured 
        on a device."
    ::= { cSanBaseSvcConfig 2 }

cSanBaseSvcClusterMembersEntry OBJECT-TYPE
    SYNTAX          CSanBaseSvcClusterMembersEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row in the cSanBaseSvcClusterMembersTable.
        Each row represents a member device within a 
        specified service Cluster."
    INDEX           {
                        cSanBaseSvcClusterId,
                        cSanBaseSvcClusterMemberInetAddrType,
                        cSanBaseSvcClusterMemberInetAddr
                    } 
    ::= { cSanBaseSvcClusterMembersTable 1 }

CSanBaseSvcClusterMembersEntry ::= SEQUENCE {
        cSanBaseSvcClusterMemberInetAddrType InetAddressType,
        cSanBaseSvcClusterMemberInetAddr     InetAddress,
        cSanBaseSvcClusterMemberFabric       SnmpAdminString,
        cSanBaseSvcClusterMemberIsLocal      TruthValue,
        cSanBaseSvcClusterMemberIsMaster     TruthValue,
        cSanBaseSvcClusterMemberStorageType  StorageType,
        cSanBaseSvcClusterMemberRowStatus    RowStatus
}

cSanBaseSvcClusterMemberInetAddrType OBJECT-TYPE
    SYNTAX          InetAddressType
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The type of Internet address of a cluster member within
        a specified service cluster. The Internet address of this
        device is specified by the value of the corresponding
        instance of cSanBaseSvcMemberInetAddr." 
    ::= { cSanBaseSvcClusterMembersEntry 1 }

cSanBaseSvcClusterMemberInetAddr OBJECT-TYPE
    SYNTAX          InetAddress (SIZE  (0..32))
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The Internet address of the cluster member device
        within a specified service cluster.
        The type of this Internet address is determined
        by the value of the corresponding instance of 
        cSanBaseSvcClusterMemberInetAddrType." 
    ::= { cSanBaseSvcClusterMembersEntry 2 }

cSanBaseSvcClusterMemberFabric OBJECT-TYPE
    SYNTAX          SnmpAdminString (SIZE  (1..32))
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object represents the name of the physical fibre
        channel fabric in the SAN. A typical SAN deployment 
        consists of a dual fabric topology which corresponds 
        to two physical fabrics. 
        In such a deployment, a cluster is configured 
        in both fabrics to allow multi-pathing and redundancy.

        The user specifies the physical fabric to which a device 
        belongs to when the cluster is configured." 
    ::= { cSanBaseSvcClusterMembersEntry 3 }

cSanBaseSvcClusterMemberIsLocal OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Identifies if the device is a local or remote member of
        this cluster.
        'true' means this device is a local device.
        'false' means this device is a remote device." 
    ::= { cSanBaseSvcClusterMembersEntry 4 }

cSanBaseSvcClusterMemberIsMaster OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Indicates if this device is currently the master of
        the service cluster.

        The value 'true' means this device is the master.
        The value 'false' means this device is not the master.

        Devices in a cluster select one of the cluster member 
        to be a master.  The master is responsible for 
        handling cluster membership." 
    ::= { cSanBaseSvcClusterMembersEntry 5 }

cSanBaseSvcClusterMemberStorageType OBJECT-TYPE
    SYNTAX          StorageType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the storage type for this conceptual
        row." 
    ::= { cSanBaseSvcClusterMembersEntry 6 }

cSanBaseSvcClusterMemberRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The status of this conceptual row.

        There is no restriction on the value of other columns
        before a newly created row can be made active.

        When a cluster is deleted, all entries in this table
        should be purged automatically." 
    ::= { cSanBaseSvcClusterMembersEntry 7 }
 

-- Base Service Local Interface Table

cSanBaseSvcInterfaceTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CSanBaseSvcInterfaceEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table lists all service interfaces on the local device and
        its corresponding information."
    ::= { cSanBaseSvcConfig 3 }

cSanBaseSvcInterfaceEntry OBJECT-TYPE
    SYNTAX          CSanBaseSvcInterfaceEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row in the cSanBaseSvcInterfaceTable.
        Each row represents a particular service interface on 
        a local device."
    INDEX           { cSanBaseSvcInterfaceIndex } 
    ::= { cSanBaseSvcInterfaceTable 1 }

CSanBaseSvcInterfaceEntry ::= SEQUENCE {
        cSanBaseSvcInterfaceIndex       InterfaceIndex,
        cSanBaseSvcInterfaceState       CiscoSanBaseSvcInterfaceStatus,
        cSanBaseSvcInterfaceClusterId   CiscoSanBaseSvcClusterIndex,
        cSanBaseSvcInterfaceStorageType StorageType,
        cSanBaseSvcInterfaceRowStatus   RowStatus
}

cSanBaseSvcInterfaceIndex OBJECT-TYPE
    SYNTAX          InterfaceIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A unique Interface index for a service interface on this
        device. This is the same as ifIndex of the ifTable of 
        RFC1213." 
    ::= { cSanBaseSvcInterfaceEntry 1 }

cSanBaseSvcInterfaceState OBJECT-TYPE
    SYNTAX          CiscoSanBaseSvcInterfaceStatus
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Operational state of this service interface." 
    ::= { cSanBaseSvcInterfaceEntry 2 }

cSanBaseSvcInterfaceClusterId OBJECT-TYPE
    SYNTAX          CiscoSanBaseSvcClusterIndex
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "Identifies the cluster to which this service interface
        belongs." 
    ::= { cSanBaseSvcInterfaceEntry 3 }

cSanBaseSvcInterfaceStorageType OBJECT-TYPE
    SYNTAX          StorageType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the storage type for this conceptual
        row." 
    ::= { cSanBaseSvcInterfaceEntry 4 }

cSanBaseSvcInterfaceRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The status of this conceptual row.

        There is no restriction on the value of other columns
        before a newly created row can be made active.
        For example, cSanBaseSvcInterfaceClusterId column can be set
        independently later." 
    ::= { cSanBaseSvcInterfaceEntry 5 }
 

-- Base Service Device Port Table

cSanBaseSvcDevicePortTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CSanBaseSvcDevicePortEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table lists the devices that are configured to
        receive storage service."
    ::= { cSanBaseSvcConfig 4 }

cSanBaseSvcDevicePortEntry OBJECT-TYPE
    SYNTAX          CSanBaseSvcDevicePortEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row in the cSanBaseSvcDevicePortTable.
        Each row represents a particular device configured to
        receive storage service in a particular cluster."
    INDEX           { cSanBaseSvcDevicePortName } 
    ::= { cSanBaseSvcDevicePortTable 1 }

CSanBaseSvcDevicePortEntry ::= SEQUENCE {
        cSanBaseSvcDevicePortName        FcNameId,
        cSanBaseSvcDevicePortClusterId   CiscoSanBaseSvcClusterIndex,
        cSanBaseSvcDevicePortStorageType StorageType,
        cSanBaseSvcDevicePortRowStatus   RowStatus
}

cSanBaseSvcDevicePortName OBJECT-TYPE
    SYNTAX          FcNameId
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object represents Fibre-channel Port name
        (pWWN) of the Device Nx_Port." 
    ::= { cSanBaseSvcDevicePortEntry 1 }

cSanBaseSvcDevicePortClusterId OBJECT-TYPE
    SYNTAX          CiscoSanBaseSvcClusterIndex
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object represents the cluster identifier
        of the cluster to which this port belongs." 
    ::= { cSanBaseSvcDevicePortEntry 2 }

cSanBaseSvcDevicePortStorageType OBJECT-TYPE
    SYNTAX          StorageType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the storage type for this conceptual
        row." 
    ::= { cSanBaseSvcDevicePortEntry 3 }

cSanBaseSvcDevicePortRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "The status of this conceptual row.

        There is no restriction on the value of other columns
        before a newly created row can be made active." 
    ::= { cSanBaseSvcDevicePortEntry 4 }
 


-- Time last changed for the agents to know if they have to look at
-- these tables.

cSanBaseSvcConfigTableLastChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The value of sysUpTime when a change to
        any Base Service MIB table other than the 
        cSanBaseSvcDevicePortTable last occurred." 
    ::= { cSanBaseSvcConfig 5 }

cSanBaseSvcDevicePortTableLastChanged OBJECT-TYPE
    SYNTAX          TimeStamp
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The value of sysUpTime when a change to
        cSanBaseSvcDevicePortTable last occurred." 
    ::= { cSanBaseSvcConfig 6 }

-- Notification control object

cSanBaseSvcNotifyEnable OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies if the service notifications
        should be generated or not.

        If the value of this object is 'true', then
        the notifications are generated.

        If the value of this object is 'false', then
        the notifications are not generated."
    DEFVAL          { true } 
    ::= { cSanBaseSvcConfig 7 }
-- SAN Base Service Interface Group
--   

-- Base Service Cluster Member Interface Table

cSanBaseSvcClusterMemberIfTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CSanBaseSvcClusterMemberIfEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table lists the information of service interfaces on all
        devices, local or remote, which are members of a service cluster
        configured on a device."
    ::= { cSanBaseSvcInterface 1 }

cSanBaseSvcClusterMemberIfEntry OBJECT-TYPE
    SYNTAX          CSanBaseSvcClusterMemberIfEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row in the cSanBaseSvcClusterMemberIfTable.
        Each row represents a participating interface on 
        local/remote device member within the specified 
        service cluster."
    INDEX           {
                        cSanBaseSvcClusterId,
                        cSanBaseSvcClusterMemberInetAddrType,
                        cSanBaseSvcClusterMemberInetAddr,
                        cSanBaseSvcClusterInterfaceIndex
                    } 
    ::= { cSanBaseSvcClusterMemberIfTable 1 }

CSanBaseSvcClusterMemberIfEntry ::= SEQUENCE {
        cSanBaseSvcClusterInterfaceIndex InterfaceIndex,
        cSanBaseSvcClusterInterfaceState CiscoSanBaseSvcInterfaceStatus
}

cSanBaseSvcClusterInterfaceIndex OBJECT-TYPE
    SYNTAX          InterfaceIndex
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A unique Interface index for a service interface on a device
        in this cluster.  This is the same as ifIndex of the 
        ifTable of RFC1213." 
    ::= { cSanBaseSvcClusterMemberIfEntry 1 }

cSanBaseSvcClusterInterfaceState OBJECT-TYPE
    SYNTAX          CiscoSanBaseSvcInterfaceStatus
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The operational state of this service interface." 
    ::= { cSanBaseSvcClusterMemberIfEntry 2 }
 


-- Notifications

ciscoSanBaseSvcInterfaceCreate NOTIFICATION-TYPE
    OBJECTS         { ifDescr }
    STATUS          current
    DESCRIPTION
        "This notification is generated when a service interface
        associated with a local device is created.  The generation 
        of this notification is controlled by 
        cSanBaseSvcNotifyEnable"
   ::= { ciscoSanBaseSvcMIBNotifs 1 }

ciscoSanBaseSvcInterfaceDelete NOTIFICATION-TYPE
    OBJECTS         { ifDescr }
    STATUS          current
    DESCRIPTION
        "This notification is generated when a service interface
        associated with a local device is deleted. The generation 
        of this notification is controlled by 
        cSanBaseSvcNotifyEnable"
   ::= { ciscoSanBaseSvcMIBNotifs 2 }

ciscoSanBaseSvcClusterNewMaster NOTIFICATION-TYPE
    OBJECTS         {
                        cSanBaseSvcClusterName,
                        cSanBaseSvcClusterMasterInetAddrType,
                        cSanBaseSvcClusterMasterInetAddr
                    }
    STATUS          current
    DESCRIPTION
        "This notification is generated when the sending device
        who is participating in a service cluster has transitioned 
        to be the master of the cluster. The generation 
        of this notification is controlled by 
        cSanBaseSvcNotifyEnable"
   ::= { ciscoSanBaseSvcMIBNotifs 3 }
-- Conformance

ciscoSanBaseSvcMIBCompliances  OBJECT IDENTIFIER
    ::= { ciscoSanBaseSvcMIBConform 1 }

ciscoSanBaseSvcMIBGroups  OBJECT IDENTIFIER
    ::= { ciscoSanBaseSvcMIBConform 2 }


-- Compliance Statements

ciscoSanBaseSvcMIBCompliance MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "The compliance statement for entities that implement
        this base service."
    MODULE          -- this module
    MANDATORY-GROUPS {
                        ciscoSanBaseSvcConfigGroup,
                        ciscoSanBaseSvcNotifControlGroup,
                        ciscoSanBaseSvcNotifsGroup,
                        ciscoSanBaseSvcInterfaceGroup
                    }
    ::= { ciscoSanBaseSvcMIBCompliances 1 }

ciscoSanBaseSvcConfigGroup OBJECT-GROUP
    OBJECTS         {
                        cSanBaseSvcClusterState,
                        cSanBaseSvcClusterMasterInetAddrType,
                        cSanBaseSvcClusterMasterInetAddr,
                        cSanBaseSvcClusterMemberIsLocal,
                        cSanBaseSvcInterfaceState,
                        cSanBaseSvcInterfaceClusterId,
                        cSanBaseSvcDevicePortClusterId,
                        cSanBaseSvcConfigTableLastChanged,
                        cSanBaseSvcClusterMemberFabric,
                        cSanBaseSvcClusterName,
                        cSanBaseSvcInterfaceRowStatus,
                        cSanBaseSvcClusterRowStatus,
                        cSanBaseSvcClusterMemberIsMaster,
                        cSanBaseSvcClusterMemberRowStatus,
                        cSanBaseSvcClusterStorageType,
                        cSanBaseSvcClusterMemberStorageType,
                        cSanBaseSvcInterfaceStorageType,
                        cSanBaseSvcDevicePortStorageType,
                        cSanBaseSvcDevicePortRowStatus,
                        cSanBaseSvcClusterApplication,
                        cSanBaseSvcDevicePortTableLastChanged
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects for storage service configuration."
    ::= { ciscoSanBaseSvcMIBGroups 1 }

ciscoSanBaseSvcNotifControlGroup OBJECT-GROUP
    OBJECTS         { cSanBaseSvcNotifyEnable }
    STATUS          current
    DESCRIPTION
        "A collection of objects for controlling storage service
        notification."
    ::= { ciscoSanBaseSvcMIBGroups 2 }

ciscoSanBaseSvcNotifsGroup NOTIFICATION-GROUP
   NOTIFICATIONS    {
                        ciscoSanBaseSvcInterfaceCreate,
                        ciscoSanBaseSvcInterfaceDelete,
                        ciscoSanBaseSvcClusterNewMaster
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects for notification of storage
        service events."
    ::= { ciscoSanBaseSvcMIBGroups 3 }

ciscoSanBaseSvcInterfaceGroup OBJECT-GROUP
    OBJECTS         { cSanBaseSvcClusterInterfaceState }
    STATUS          current
    DESCRIPTION
        "A collection of storage service interface."
    ::= { ciscoSanBaseSvcMIBGroups 4 }

END
