ARISTA-DAEMON-MIB DEFINITIONS ::= BEGIN

IMPORTS
   MODULE-COMPLIANCE, 
   OBJECT-GROUP                         FROM SNMPv2-CONF
   MODULE-IDENTITY, OBJECT-TYPE         FROM SNMPv2-SMI        -- [RFC2578]
   TruthValue,  TEXTUAL-CONVENTION      FROM SNMPv2-TC         -- [RFC2579]
   aristaMibs                           FROM ARISTA-SMI-MIB;

aristaDaemonMIB MODULE-IDENTITY
   LAST-UPDATED "201504270000Z"       -- 27 April 2015
   ORGANIZATION "Arista Networks, Inc."
   CONTACT-INFO
      "Arista Networks, Inc.

       Postal: 5453 Great America Parkway
               Santa Clara, CA 95054

       Tel: +1 408 547-5500

       E-mail: snmp@arista.com"
   DESCRIPTION  "The MIB module for managing the state of custom agents for Arista EOS."
   REVISION     "201504270000Z"
   DESCRIPTION  "Initial version of this MIB."
   ::= { aristaMibs 17 }

-- Textual Conventions
AgentName ::= TEXTUAL-CONVENTION
   DISPLAY-HINT "32a"
   STATUS       current
   DESCRIPTION
      "A custom agent name (as a string)."
   SYNTAX       OCTET STRING (SIZE(1..32))

AgentAttributeKey ::= TEXTUAL-CONVENTION
   DISPLAY-HINT "64a"
   STATUS       current
   DESCRIPTION
      "A custom attribute of an agent (as a string)."
   SYNTAX       OCTET STRING (SIZE(1..64))

AgentAttributeValue ::= TEXTUAL-CONVENTION
   DISPLAY-HINT "10240a"
   STATUS       current
   DESCRIPTION
      "A value of a custom attribute of an agent (as a string)."
   SYNTAX       OCTET STRING (SIZE(1..10240))

--
-- ARISTA EOS SDK MIB Objects
-- 

aristaDaemonConfig              OBJECT IDENTIFIER ::= { aristaDaemonMIB 1 }
aristaDaemonStatus              OBJECT IDENTIFIER ::= { aristaDaemonMIB 2 }

aristaDaemonEnabledTable        OBJECT-TYPE
   SYNTAX       SEQUENCE OF AristaDaemonEnabledEntry
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION  
      "A table that contains the enabled configurations for custom daemons."
   ::= { aristaDaemonConfig 1 }

aristaDaemonEnabledEntry        OBJECT-TYPE
   SYNTAX       AristaDaemonEnabledEntry
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION  
      "The enabled configuration of a daemon."
   INDEX { aristaDaemonEnabledAgentName }
   ::= { aristaDaemonEnabledTable 1 }

AristaDaemonEnabledEntry ::= SEQUENCE {
      aristaDaemonEnabledAgentName      AgentName,
      aristaDaemonEnabled               TruthValue
}

aristaDaemonEnabledAgentName    OBJECT-TYPE
   SYNTAX       AgentName
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION
      "The name of the agent."
   ::= { aristaDaemonEnabledEntry 1 }

aristaDaemonEnabled             OBJECT-TYPE
   SYNTAX       TruthValue
   MAX-ACCESS   read-only
   STATUS       current
   DESCRIPTION
      "This attribute has value 'true(1)' if the agent is enabled and value 'false(2)' if it is disabled."
   ::= { aristaDaemonEnabledEntry 2 }

aristaDaemonOptionTable         OBJECT-TYPE
   SYNTAX       SEQUENCE OF AristaDaemonOptionEntry
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION  
      "A table that contains user-configured options for daemons."
   ::= { aristaDaemonConfig 2 }

aristaDaemonOptionEntry         OBJECT-TYPE
   SYNTAX       AristaDaemonOptionEntry
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION  
      "A user-configured daemon option entry."
   INDEX { aristaDaemonOptionAgentName, aristaDaemonOptionKey }
   ::= { aristaDaemonOptionTable 1 }

AristaDaemonOptionEntry ::= SEQUENCE {
      aristaDaemonOptionAgentName       AgentName,
      aristaDaemonOptionKey             AgentAttributeKey,
      aristaDaemonOptionValue           AgentAttributeValue
}

aristaDaemonOptionAgentName     OBJECT-TYPE
   SYNTAX       AgentName
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION
      "The name of the agent."
   ::= { aristaDaemonOptionEntry 1 }

aristaDaemonOptionKey           OBJECT-TYPE
   SYNTAX       AgentAttributeKey
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION
      "The name of a user-configured option."
   ::= { aristaDaemonOptionEntry 2 }

aristaDaemonOptionValue         OBJECT-TYPE
   SYNTAX       AgentAttributeValue
   MAX-ACCESS   read-only
   STATUS       current
   DESCRIPTION
      "The value of a user-configured option."
   ::= { aristaDaemonOptionEntry 3 }

aristaDaemonRunningTable        OBJECT-TYPE
   SYNTAX       SEQUENCE OF AristaDaemonRunningEntry
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION  
      "A table that contains the running statuses for custom daemons."
   ::= { aristaDaemonStatus 1 }

aristaDaemonRunningEntry        OBJECT-TYPE
   SYNTAX       AristaDaemonRunningEntry
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION  
      "The running status of a daemon."
   INDEX { aristaDaemonRunningAgentName }
   ::= { aristaDaemonRunningTable 1 }

AristaDaemonRunningEntry ::= SEQUENCE {
      aristaDaemonRunningAgentName      AgentName,
      aristaDaemonRunning               TruthValue
}

aristaDaemonRunningAgentName    OBJECT-TYPE
   SYNTAX       AgentName
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION
      "The name of the agent."
   ::= { aristaDaemonRunningEntry 1 }

aristaDaemonRunning             OBJECT-TYPE
   SYNTAX       TruthValue
   MAX-ACCESS   read-only
   STATUS       current
   DESCRIPTION
      "This attribute has value 'true(1)' if the agent is running and value 'false(2)' if it is not running."
   ::= { aristaDaemonRunningEntry 2 }

aristaDaemonDataTable           OBJECT-TYPE
   SYNTAX       SEQUENCE OF AristaDaemonDataEntry
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION  
      "A table that contains status data for daemons."
   ::= { aristaDaemonStatus 2 }

aristaDaemonDataEntry           OBJECT-TYPE
   SYNTAX       AristaDaemonDataEntry
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION  
      "A daemon data entry about its status."
   INDEX { aristaDaemonDataAgentName, aristaDaemonDataKey }
   ::= { aristaDaemonDataTable 1 }

AristaDaemonDataEntry ::= SEQUENCE {
      aristaDaemonDataAgentName         AgentName,
      aristaDaemonDataKey               AgentAttributeKey,
      aristaDaemonDataValue             AgentAttributeValue
}

aristaDaemonDataAgentName       OBJECT-TYPE
   SYNTAX       AgentName
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION
      "The name of the agent."
   ::= { aristaDaemonDataEntry 1 }

aristaDaemonDataKey             OBJECT-TYPE
   SYNTAX       AgentAttributeKey
   MAX-ACCESS   not-accessible
   STATUS       current
   DESCRIPTION
      "The name of a status data entry."
   ::= { aristaDaemonDataEntry 2 }

aristaDaemonDataValue           OBJECT-TYPE
   SYNTAX       AgentAttributeValue
   MAX-ACCESS   read-only
   STATUS       current
   DESCRIPTION
      "The value of a status data."
   ::= { aristaDaemonDataEntry 3 }

-- Conformance

aristaDaemonConformance OBJECT IDENTIFIER ::= { aristaDaemonMIB 3 }

aristaDaemonGroups OBJECT IDENTIFIER ::= { aristaDaemonConformance 1 }

aristaDaemonCompliances OBJECT IDENTIFIER ::= { aristaDaemonConformance 2 }

aristaDaemonBaseGroup OBJECT-GROUP
   OBJECTS {
      aristaDaemonEnabled,
      aristaDaemonOptionValue,
      aristaDaemonRunning,
      aristaDaemonDataValue
   }
   STATUS       current
   DESCRIPTION
      "A collection of objects providing information about the custom agent."
   ::= { aristaDaemonGroups 1 }


-- compliance statements

aristaDaemonCompliance MODULE-COMPLIANCE
   STATUS       current
   DESCRIPTION
      "The compliance statement for Arista switches that support EOS SDK custom agents."

   MODULE
      MANDATORY-GROUPS {
         aristaDaemonBaseGroup
      }
   ::= { aristaDaemonCompliances 1 }

END