-- Copyright 2017 BlueCat Networks. All rights reserved.
-- *****************************************************************
-- BCN-LICENSE-MIB.mib:  BlueCat Networks License services
--
--
-- December 2010, Fabian Ischia
--
-- All rights reserved.
-- 
-- *****************************************************************

BCN-LICENSE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, NOTIFICATION-TYPE, OBJECT-IDENTITY,
    OBJECT-TYPE, Unsigned32
        FROM SNMPv2-SMI
    DisplayString, TruthValue, DateAndTime
        FROM SNMPv2-TC
    OBJECT-GROUP, MODULE-COMPLIANCE, NOTIFICATION-GROUP
        FROM SNMPv2-CONF
    BcnAlarmSeverity
        FROM BCN-TC-MIB
    bcnServices
        FROM BCN-SMI-MIB;

bcnLicenseMIB MODULE-IDENTITY
    LAST-UPDATED	"201011301200Z"
    ORGANIZATION	"BlueCat Networks"
    CONTACT-INFO
        "BlueCat Networks. Customer Care.

        North America
        Call: +1.866.491.2228
        Europe
        Call: +44.8081.011.306
        Other
        Call: +1.416.646.8433
        
        Email: support@bluecatnetworks.com"
    DESCRIPTION
        "This module provides information and status about features that
         are licensed to run on the system."
    REVISION "201011301200Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { bcnLicense 1 }

bcnLicense OBJECT IDENTIFIER  ::= { bcnServices 6 }

-- Organization

bcnLicenseObjects OBJECT IDENTIFIER 
    ::= { bcnLicense 2 }

bcnLicenseNotification OBJECT IDENTIFIER 
    ::= { bcnLicense 3 }

bcnLicenseConformance OBJECT IDENTIFIER 
    ::= { bcnLicense 4 }


-- Data objects

bcnLicenseInformation OBJECT-IDENTITY
    STATUS current
    DESCRIPTION
        "General state of the License Service."
    ::= { bcnLicenseObjects 1 }

bcnLicenseTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF BcnLicenseEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table keeps the information about the licenses installed"
    ::= { bcnLicenseInformation 2 }

bcnLicenseEntry OBJECT-TYPE
    SYNTAX      BcnLicenseEntry
    MAX-ACCESS  not-accessible
    STATUS      current
	DESCRIPTION "A logical row in the bcnLicenseTable."
    INDEX { bcnLicenseTableIndex }
    ::= { bcnLicenseTable 1 }

BcnLicenseEntry ::=
    SEQUENCE {
        bcnLicenseTableIndex          Unsigned32,
        bcnLicenseType                INTEGER,
        bcnLicenseDescription         DisplayString,
        bcnLicenseInstalled           DateAndTime,
        bcnLicenseExpiry              DateAndTime,
        bcnLicenseGracePeriod         Unsigned32,
        bcnLicenseValid               TruthValue,
        bcnLicenseItemsGranted        Unsigned32,
        bcnLicenseItemsUsed           Unsigned32
    }

bcnLicenseTableIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
       "A unique running value greater than 0, used as index into the
       table. The values of this index are assigned contiguously
       starting normally from 1."
    ::= { bcnLicenseEntry 1 }

bcnLicenseType OBJECT-TYPE
    SYNTAX      INTEGER {
      singleServer(1),
      multiServer(2)
    }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Type of license. The possible states are:
        singleServer(1)  The license affects a single server, normally the
                         server in which it is installed.
        multiServer(2)   The license affects multiple servers. This is common
                         for licenses that limit managed units.
        "
    ::= { bcnLicenseEntry 2 }

bcnLicenseDescription OBJECT-TYPE
    SYNTAX      DisplayString
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "A text value describing the type of license installed."
    ::= { bcnLicenseEntry 3 }

bcnLicenseInstalled OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The date when the license was installedon the system."
    ::= { bcnLicenseEntry 4 }

bcnLicenseExpiry OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "The expiration date for the license."
    ::= { bcnLicenseEntry 5 }

bcnLicenseGracePeriod OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "Number of days after the license has expired the functionality
       will continue to work. In case this is not applicable the value
       is 0."
    ::= { bcnLicenseEntry 6 }

bcnLicenseValid OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "Number of days after the license has expired the functionality
       will continue to work. In case this is not applicable the value
       is 0."
    ::= { bcnLicenseEntry 7 }

bcnLicenseItemsGranted OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "Number of items granted with this license. On a multiServer license
        this is normally the number of units allowed to be managed under
        this license. On a singleServer license, this value is undefined.
        If the license is of type multiServer and bcnLicenseItemsGranted
        is zero, that indicates that the license is unlimited."
    ::= { bcnLicenseEntry 8 }

bcnLicenseItemsUsed OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
       "Number of items consumed under this license. On a multiServer
        license this is the number of units that have already been allocated.
        On a singleServer license, this value is undefined."
    ::= { bcnLicenseEntry 9 }

-- Notification definitions

bcnLicenseNotificationEvents OBJECT IDENTIFIER 
    ::= { bcnLicenseNotification 0 }

bcnLicenseNotificationData OBJECT IDENTIFIER 
    ::= { bcnLicenseNotification 1 }

-- Notification data

bcnLicenseAlarmSeverity OBJECT-TYPE
    SYNTAX          BcnAlarmSeverity
    MAX-ACCESS      accessible-for-notify
    STATUS          current
    DESCRIPTION
        "Severity classification for the alarm."
    ::= { bcnLicenseNotificationData 1 }


-- Notification events

bcnLicenseExpiryNotif NOTIFICATION-TYPE
    OBJECTS {   
                bcnLicenseType,
                bcnLicenseAlarmSeverity,
                bcnLicenseExpiry,
                bcnLicenseGracePeriod,
                bcnLicenseValid
            }
    STATUS          current
    DESCRIPTION
        "A bcnLicenseAlarmNotif signifies that the License service has transitioned
        state or a particular event has been detected on the service."
   ::= { bcnLicenseNotificationEvents 1 }

-- Conformance

bcnLicenseServiceCompliances OBJECT IDENTIFIER 
    ::= { bcnLicenseConformance 1 }

bcnLicenseServiceGroups OBJECT IDENTIFIER 
    ::= { bcnLicenseConformance 2 }


bcnLicenseServiceStatusGroup OBJECT-GROUP
    OBJECTS { 
        bcnLicenseType,
        bcnLicenseDescription,
        bcnLicenseInstalled,
        bcnLicenseExpiry,
        bcnLicenseGracePeriod,
        bcnLicenseValid,
        bcnLicenseItemsGranted,
        bcnLicenseItemsUsed
    }
    STATUS current
    DESCRIPTION "Status conformance."
    ::= { bcnLicenseServiceGroups 1 }


bcnLicenseNotificationEventGroup NOTIFICATION-GROUP
    NOTIFICATIONS { 
          bcnLicenseExpiryNotif
    }
    STATUS current
    DESCRIPTION "Server statistics conformance."
    ::= { bcnLicenseServiceGroups 2 }

bcnLicenseNotificationDataGroup OBJECT-GROUP
    OBJECTS { 
          bcnLicenseAlarmSeverity
    }
    STATUS current
    DESCRIPTION "Server statistics conformance."
    ::= { bcnLicenseServiceGroups 3 }


bcnLicenseStatusCompliance MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION "Basic conformance"
    MODULE -- This module
    MANDATORY-GROUPS {
        bcnLicenseServiceStatusGroup,
        bcnLicenseNotificationEventGroup, 
        bcnLicenseNotificationDataGroup }
    ::= {bcnLicenseServiceCompliances 1 }


END