idnits 2.17.1 draft-entitydt-netmod-entity-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- The document date (October 19, 2015) is 3111 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) No issues found here. Summary: 0 errors (**), 0 flaws (~~), 2 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group A. Bierman 3 Internet-Draft YumaWorks 4 Intended status: Standards Track M. Bjorklund 5 Expires: April 21, 2016 Tail-f Systems 6 J. Dong 7 Huawei Technologies 8 D. Romascanu 9 Avaya 10 October 19, 2015 12 A YANG Data Model for Entity Managemet 13 draft-entitydt-netmod-entity-00 15 Abstract 17 This document defines a YANG data model for the management of 18 multiple physical entities managed by a single server. 20 Status of This Memo 22 This Internet-Draft is submitted in full conformance with the 23 provisions of BCP 78 and BCP 79. 25 Internet-Drafts are working documents of the Internet Engineering 26 Task Force (IETF). Note that other groups may also distribute 27 working documents as Internet-Drafts. The list of current Internet- 28 Drafts is at http://datatracker.ietf.org/drafts/current/. 30 Internet-Drafts are draft documents valid for a maximum of six months 31 and may be updated, replaced, or obsoleted by other documents at any 32 time. It is inappropriate to use Internet-Drafts as reference 33 material or to cite them other than as "work in progress." 35 This Internet-Draft will expire on April 21, 2016. 37 Copyright Notice 39 Copyright (c) 2015 IETF Trust and the persons identified as the 40 document authors. All rights reserved. 42 This document is subject to BCP 78 and the IETF Trust's Legal 43 Provisions Relating to IETF Documents 44 (http://trustee.ietf.org/license-info) in effect on the date of 45 publication of this document. Please review these documents 46 carefully, as they describe your rights and restrictions with respect 47 to this document. Code Components extracted from this document must 48 include Simplified BSD License text as described in Section 4.e of 49 the Trust Legal Provisions and are provided without warranty as 50 described in the Simplified BSD License. 52 Table of Contents 54 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 55 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 2 56 1.1.1. Tree Diagrams . . . . . . . . . . . . . . . . . . . . 2 57 2. Objectives . . . . . . . . . . . . . . . . . . . . . . . . . 3 58 3. Entity Data Model . . . . . . . . . . . . . . . . . . . . . . 3 59 3.1. The Physical Entry Lists . . . . . . . . . . . . . . . . 5 60 4. Relationship to ENTITY-MIB . . . . . . . . . . . . . . . . . 5 61 5. Relationship to ENTITY-SENSOR-MIB . . . . . . . . . . . . . . 6 62 6. Relationship to ENTITY-STATE-MIB . . . . . . . . . . . . . . 6 63 7. Entity YANG Module . . . . . . . . . . . . . . . . . . . . . 6 64 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 34 65 9. Security Considerations . . . . . . . . . . . . . . . . . . . 35 66 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 35 67 11. Normative References . . . . . . . . . . . . . . . . . . . . 35 68 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35 70 1. Introduction 72 This document defines a YANG data model for the management of 73 multiple physical entities managed by a single server. 75 The data model includes configuration data and state data (status 76 information and counters for the collection of statistics). 78 1.1. Terminology 80 The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 81 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 82 "OPTIONAL" in this document are to be interpreted as described in BCP 83 14, [RFC2119]. 85 1.1.1. Tree Diagrams 87 A simplified graphical representation of the data model is used in 88 this document. The meaning of the symbols in these diagrams is as 89 follows: 91 o Brackets "[" and "]" enclose list keys. 93 o Abbreviations before data node names: "rw" means configuration 94 data (read-write) and "ro" state data (read-only). 96 o Symbols after data node names: "?" means an optional node, "!" 97 means a presence container, and "*" denotes a list and leaf-list. 99 o Parentheses enclose choice and case nodes, and case nodes are also 100 marked with a colon (":"). 102 o Ellipsis ("...") stands for contents of subtrees that are not 103 shown. 105 2. Objectives 107 This section describes some of the design objectives for the entity 108 model. 110 o There are many common properties used to identify the entities, 111 which need to be supported in the entity data module. 113 o There are many important information and states about the 114 entities, which needs to be collected from the devices which 115 support the entity data model. 117 o The entity data model SHOULD be suitable for new implementations 118 to use as is. 120 o The entity data model defined in this document can be implemented 121 on a system that also implements ENTITY-MIB, thus the mapping 122 between the entity data model and ENTITY-MIB SHOULD be clear. 124 3. Entity Data Model 126 This document defines the YANG module "ietf-entity", which has the 127 following structure: 129 module: ietf-entity 130 +--ro entity-state 131 | +--ro last-change? yang:date-and-time 132 | +--ro physical-entity* [name] 133 | +--ro name string 134 | +--ro class? identityref 135 | +--ro physical-index? int32 {entity-mib}? 136 | +--ro description? string 137 | +--ro contained-in* -> ../../physical-entity/name 138 | +--ro contains-child* -> ../../physical-entity/name 139 | +--ro parent-rel-pos? int32 140 | +--ro hardware-rev? string 141 | +--ro firmware-rev? string 142 | +--ro software-rev? string 143 | +--ro serial-num? string 144 | +--ro mfg-name? string 145 | +--ro model-name? string 146 | +--ro alias? string 147 | +--ro asset-id? string 148 | +--ro is-fru? boolean 149 | +--ro mfg-date? yang:date-and-time 150 | +--ro uri* inet:uri 151 | +--ro uuid? yang:uuid 152 | +--ro state {entity-state}? 153 | | +--ro state-last-changed? yang:date-and-time 154 | | +--ro admin-state? entity-admin-state 155 | | +--ro oper-state? entity-oper-state 156 | | +--ro usage-state? entity-usage-state 157 | | +--ro alarm-status? entity-alarm-status 158 | | +--ro standby-status? entity-standby-status 159 | +--ro sensor-data {entity-sensor}? 160 | +--ro data-type? entity-sensor-data-type 161 | +--ro data-scale? entity-sensor-data-scale 162 | +--ro precision? entity-sensor-precision 163 | +--ro value? entity-sensor-value 164 | +--ro oper-status? entity-sensor-status 165 | +--ro sensor-units-display? string 166 | +--ro value-timestamp? yang:date-and-time 167 | +--ro value-update-rate? uint32 168 +--rw entity {entity-config}? 169 +--rw physical-entity* [name] 170 +--rw name string 171 +--rw serial-num? string 172 +--rw alias? string 173 +--rw asset-id? string 174 +--rw uri* inet:uri 175 +--rw admin-state? entity-admin-state {entity-state}? 177 notifications: 178 +---n ent-config-change 179 +---n ent-state-oper-enabled {entity-state}? 180 | +--ro name? -> /entity-state/physical-entity 181 /name 182 | +--ro admin-state? -> /entity-state/physical-entity 183 /state/admin-state 184 | +--ro alarm-status? -> /entity-state/physical-entity 185 /state/alarm-status 186 +---n ent-state-oper-disabled {entity-state}? 187 +--ro name? -> /entity-state/physical-entity 188 /name 189 +--ro admin-state? -> /entity-state/physical-entity 190 /state/admin-state 191 +--ro alarm-status? -> /entity-state/physical-entity 192 /state/alarm-status 194 3.1. The Physical Entry Lists 196 The data model for physical entities presented in this document uses 197 a flat list of entities. Each entity in the list is identified by 198 its name. Furthermore, each entity has a mandatory "class" leaf. 200 The "iana-entity" module defines YANG identities for the hardware 201 types in the IANA-maintained "IANA-ENTITY-MIB" registry. 203 The "class" leaf is a YANG identity that describes the type of the 204 hardware. Vendors are encouraged to either directly use one of the 205 common IANA-defined identities, or derive a more specific identity 206 from one of them. 208 There is one optional list of configured physical entities ("/entity/ 209 physical-entity"), and a separate list for the operational state of 210 all physical entities ("/entity-state/physical-entity"). 212 4. Relationship to ENTITY-MIB 214 If the device implements the ENTITY-MIB [RFC6933], each entry in the 215 /entity-state/physical-entity list is mapped to one EntPhysicalEntry. 216 Objects that are writable in the MIB are mapped to nodes in the 217 /entity/physical-entity list. 219 The "physical-index" leaf MUST contain the value of the corresponding 220 entPhysicalEntry's entPhysicalIndex. 222 The "class" leaf is mapped to both entPhysicalClass and 223 entPhysicalVendorType. If the value of the "class" leaf is an 224 identity that is either derived from or is one of the identities in 225 the "iana-entity" module, then entPhysicalClass contains the 226 corresponding IANAPhysicalClass enumeration value. Otherwise, 227 entPhysicalClass contains the IANAPhysicalClass value "other(1)". 228 Vendors are encouraged to define an identity (derived from an 229 identity in "iana-entity" if possible) for each enterprise-specific 230 registration identifier used for entPhysicalVendorType, and use that 231 identity for the "class" leaf. 233 The following tables list the YANG data nodes with corresponding 234 objects in the ENTITY-MIB. 236 +------------------------------------+------------------------------+ 237 | YANG data node in /entity-state | ENTITY-MIB object | 238 | /physical-entity | | 239 +------------------------------------+------------------------------+ 240 | name | entPhysicalName | 241 | class | entPhysicalClass | 242 | | entPhysicalVendorType | 243 | physical-index | entPhysicalIndex | 244 | description | entPhysicalDescr | 245 | contained-in | entPhysicalContainedIn | 246 | contains-child | entPhysicalChildIndex | 247 | parent-rel-pos | entPhysicalParentRelPos | 248 | hardware-rev | entPhysicalHardwareRev | 249 | firmware-rev | entPhysicalFirmwareRev | 250 | software-rev | entPhysicalSoftwareRev | 251 | serial-num | entPhysicalSerialNum | 252 | mfg-name | entPhysicalMfgName | 253 | model-name | entPhysicalModelName | 254 | alias | entPhysicalAlias | 255 | asset-id | entPhysicalAssetID | 256 | is-fru | entPhysicalIsFRU | 257 | mfg-date | entPhysicalMfgDate | 258 | uri | entPhysicalUris | 259 | uuid | entPhysicalUUID | 260 +------------------------------------+------------------------------+ 262 YANG data nodes and related ENTITY-MIB objects 264 5. Relationship to ENTITY-SENSOR-MIB 266 TBD relationship to [RFC3433]. 268 6. Relationship to ENTITY-STATE-MIB 270 TBD relationship to [RFC4268]. 272 7. Entity YANG Module 274 file "ietf-entity@2015-10-19.yang" 276 module ietf-entity { 277 yang-version 1.1; 278 namespace "urn:ietf:params:xml:ns:yang:ietf-entity"; 279 prefix ent; 281 import ietf-inet-types { 282 prefix inet; 283 } 284 import ietf-yang-types { 285 prefix yang; 286 } 288 organization 289 "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; 291 contact 292 "WG Web: 293 WG List: 295 WG Chair: Thomas Nadeau 296 298 WG Chair: Juergen Schoenwaelder 299 301 WG Chair: Kent Watsen 302 304 Editor: Andy Bierman 305 307 Editor: Martin Bjorklund 308 310 Editor: "; 312 // RFC Ed.: replace XXXX with actual RFC number and remove this 313 // note. 315 description 316 "This module contains a collection of YANG definitions for 317 managing physical entities. 319 Copyright (c) 2015 IETF Trust and the persons identified as 320 authors of the code. All rights reserved. 322 Redistribution and use in source and binary forms, with or 323 without modification, is permitted pursuant to, and subject 324 to the license terms contained in, the Simplified BSD License 325 set forth in Section 4.c of the IETF Trust's Legal Provisions 326 Relating to IETF Documents 327 (http://trustee.ietf.org/license-info). 329 This version of this YANG module is part of RFC XXXX; see 330 the RFC itself for full legal notices."; 332 // RFC Ed.: update the date below with the date of RFC publication 333 // and remove this note. 334 revision 2015-10-19 { 335 description 336 "Initial revision."; 337 reference 338 "RFC XXXX: A YANG Data Model for Entity Managemet"; 339 } 341 /* 342 * Features 343 */ 345 feature entity-mib { 346 description 347 "This feature indicates that the device implements 348 the ENTITY-MIB."; 349 reference "RFC 6933: Entity MIB (Version 4)"; 350 } 352 feature entity-config { 353 description 354 "Indicates that the server supports configuration of 355 physical entities."; 356 } 358 feature entity-state { 359 description 360 "Indicates the ENTITY-STATE-MIB objects are supported"; 361 reference "RFC 4268: Entity State MIB"; 362 } 364 feature entity-sensor { 365 description 366 "Indicates the ENTITY-SENSOR-MIB objects are supported"; 367 reference "RFC 3433: Entity Sensor MIB"; 368 } 370 /* 371 * Typedefs 372 */ 374 typedef entity-admin-state { 375 type enumeration { 376 enum unknown { 377 value 1; 378 description 379 "The resource is unable to report administrative state."; 381 } 382 enum locked { 383 value 2; 384 description 385 "The resource is administratively prohibited from use."; 386 } 387 enum shutting-down { 388 value 3; 389 description 390 "The resource usage is administratively limited to current 391 instances of use."; 392 } 393 enum unlocked { 394 value 4; 395 description 396 "The resource is not administratively prohibited from use."; 397 } 398 } 399 description 400 "Represents the various possible administrative states."; 401 reference "RFC 4268: EntityAdminState"; 402 } 404 typedef entity-oper-state { 405 type enumeration { 406 enum unknown { 407 value 1; 408 description 409 "The resource is unable to report operational state."; 410 } 411 enum disabled { 412 value 2; 413 description 414 "The resource is totally inoperable."; 415 } 416 enum enabled { 417 value 3; 418 description 419 "The resource is partially or fully operable."; 420 } 421 enum testing { 422 value 4; 423 description 424 "The resource is currently being tested and cannot 425 therefore report whether it is operational or not."; 426 } 427 } 428 description 429 "Represents the possible values of operational states."; 430 reference "RFC 4268: EntityOperState"; 431 } 433 typedef entity-usage-state { 434 type enumeration { 435 enum unknown { 436 value 1; 437 description 438 "The resource is unable to report usage state."; 439 } 440 enum idle { 441 value 2; 442 description 443 "The resource is servicing no users."; 444 } 445 enum active { 446 value 3; 447 description 448 "The resource is currently in use and it has sufficient 449 spare capacity to provide for additional users."; 450 } 451 enum busy { 452 value 4; 453 description 454 "The resource is currently in use, but it currently has 455 no spare capacity to provide for additional users."; 456 } 457 } 458 description 459 "Represents the possible values of usage states."; 460 reference "RFC 4268, EntityUsageState"; 461 } 463 typedef entity-alarm-status { 464 type bits { 465 bit unknown { 466 position 0; 467 description 468 "The resource is unable to report alarm state."; 469 } 470 bit under-repair { 471 position 1; 472 description 473 "The resource is currently being repaired, which, depending 474 on the implementation, may make the other values in this 475 bit string not meaningful."; 476 } 477 bit critical { 478 position 2; 479 description 480 "One or more critical alarms are active against the 481 resource."; 482 } 483 bit major { 484 position 3; 485 description 486 "One or more major alarms are active against the resource."; 487 } 488 bit minor { 489 position 4; 490 description 491 "One or more minor alarms are active against the resource."; 492 } 493 bit warning { 494 position 5; 495 description 496 "One or more warning alarms are active against the resource. 497 This alarm status is not defined in X.733."; 498 } 499 bit indeterminate { 500 position 6; 501 description 502 "One or more alarms of whose perceived severity cannot be 503 determined are active against this resource. 504 This alarm status is not defined in X.733."; 505 } 506 } 507 description 508 "Represents the possible values of alarm status. 509 An Alarm [RFC3877] is a persistent indication of an error or 510 warning condition. 512 When no bits of this attribute are set, then no active 513 alarms are known against this entity and it is not under 514 repair."; 515 reference "RFC 4268: EntityAlarmStatus"; 516 } 518 typedef entity-standby-status { 519 type enumeration { 520 enum unknown { 521 value 1; 522 description 523 "The resource is unable to report standby state."; 524 } 525 enum hot-standby { 526 value 2; 527 description 528 "The resource is not providing service, but it will be 529 immediately able to take over the role of the resource 530 to be backed up, without the need for initialization 531 activity, and will contain the same information as the 532 resource to be backed up."; 533 } 534 enum cold-standby { 535 value 3; 536 description 537 "The resource is to back up another resource, but will not 538 be immediately able to take over the role of a resource 539 to be backed up, and will require some initialization 540 activity."; 541 } 542 enum providing-service { 543 value 4; 544 description 545 "The resource is providing service."; 546 } 547 } 548 description 549 "Represents the possible values of standby status."; 550 reference "RFC 4268: EntityStandbyStatus"; 551 } 553 typedef entity-sensor-data-type { 554 type enumeration { 555 enum other { 556 value 1; 557 description 558 "A measure other than those listed below."; 559 } 560 enum unknown { 561 value 2; 562 description 563 "An unknown measurement, or arbitrary, relative numbers"; 564 } 565 enum volts-AC { 566 value 3; 567 description 568 "A measure of electric potential (alternating current)."; 569 } 570 enum volts-DC { 571 value 4; 572 description 573 "A measure of electric potential (direct current)."; 574 } 575 enum amperes { 576 value 5; 577 description 578 "A measure of electric current."; 579 } 580 enum watts { 581 value 6; 582 description 583 "A measure of power."; 584 } 585 enum hertz { 586 value 7; 587 description 588 "A measure of frequency."; 589 } 590 enum celsius { 591 value 8; 592 description 593 "A measure of temperature."; 594 } 595 enum percent-RH { 596 value 9; 597 description 598 "A measure of percent relative humidity."; 599 } 600 enum rpm { 601 value 10; 602 description 603 "A measure of shaft revolutions per minute."; 604 } 605 enum cmm { 606 value 11; 607 description 608 "A measure of cubic meters per minute (airflow)."; 609 } 610 enum truth-value { 611 value 12; 612 description 613 "Value is one of 1 (true) or 2 (false)"; 614 } 615 } 616 description 617 "An node using this data type represents the Entity Sensor 618 measurement data type associated with a physical sensor 619 value. The actual data units are determined by examining an 620 node of this type together with the associated 621 entity-sensor-data-scale node. 623 An node of this type SHOULD be defined together with nodes 624 of type entity-sensor-data-scale and 625 entity-sensor-precision. These three types are used to identify 626 the semantics of an node of type entity-sensor-value."; 627 reference "RFC 3433: EntitySensorDataType"; 628 } 630 typedef entity-sensor-data-scale { 631 type enumeration { 632 enum yocto { 633 value 1; 634 description 635 "Data scaling factor of 10^-24."; 636 } 637 enum zepto { 638 value 2; 639 description 640 "Data scaling factor of 10^-21."; 641 } 642 enum atto { 643 value 3; 644 description 645 "Data scaling factor of 10^-18."; 646 } 647 enum femto { 648 value 4; 649 description 650 "Data scaling factor of 10^-15."; 651 } 652 enum pico { 653 value 5; 654 description 655 "Data scaling factor of 10^-12."; 656 } 657 enum nano { 658 value 6; 659 description 660 "Data scaling factor of 10^-9."; 661 } 662 enum micro { 663 value 7; 664 description 665 "Data scaling factor of 10^-6."; 666 } 667 enum milli { 668 value 8; 669 description 670 "Data scaling factor of 10^-3."; 671 } 672 enum units { 673 value 9; 674 description 675 "Data scaling factor of 10^0."; 676 } 677 enum kilo { 678 value 10; 679 description 680 "Data scaling factor of 10^3."; 681 } 682 enum mega { 683 value 11; 684 description 685 "Data scaling factor of 10^6."; 686 } 687 enum giga { 688 value 12; 689 description 690 "Data scaling factor of 10^9."; 691 } 692 enum tera { 693 value 13; 694 description 695 "Data scaling factor of 10^12."; 696 } 697 enum exa { 698 value 14; 699 description 700 "Data scaling factor of 10^15."; 701 } 702 enum peta { 703 value 15; 704 description 705 "Data scaling factor of 10^18."; 706 } 707 enum zetta { 708 value 16; 709 description 710 "Data scaling factor of 10^21."; 711 } 712 enum yotta { 713 value 17; 714 description 715 "Data scaling factor of 10^24."; 716 } 718 } 719 description 720 "An node using this data type represents a data scaling 721 factor, represented with an International System of Units (SI) 722 prefix. The actual data units are determined by examining an 723 node of this type together with the associated 724 entity-sensor-data-type. 726 An node of this type SHOULD be defined together with nodes 727 of type entity-sensor-data-type and entity-sensor-precision. 728 Together, associated nodes of these three types are used to 729 identify the semantics of an node of type 730 entity-sensor-value."; 731 reference "RFC 3433: EntitySensorDataScale"; 732 } 734 typedef entity-sensor-precision { 735 type int32 { 736 range "-8 .. 9"; 737 } 738 description 739 "An node using this data type represents a sensor 740 precision range. 742 An node of this type SHOULD be defined together with nodes 743 of type entity-sensor-data-type and entity-sensor-data-scale. 744 Together, associated nodes of these three types are used to 745 identify the semantics of an node of type 746 entity-sensor-value. 748 If an node of this type contains a value in the range 1 to 9, 749 it represents the number of decimal places in the fractional 750 part of an associated entity-sensor-value fixed- point number. 752 If an node of this type contains a value in the range -8 to 753 -1, it represents the number of accurate digits in the 754 associated entity-sensor-value fixed-point number. 756 The value zero indicates the associated entity-sensor-value 757 node is not a fixed-point number. 759 Server implementors must choose a value for the associated 760 entity-sensor-precision node so that the precision and 761 accuracy of the associated entity-sensor-value node is 762 correctly indicated. 764 For example, a physical entity representing a temperature 765 sensor that can measure 0 degrees to 100 degrees C in 0.1 766 degree increments, +/- 0.05 degrees, would have an 767 entity-sensor-precision value of '1', an 768 entity-sensor-data-scale value of 'units', and an 769 entity-sensor-value ranging from '0' to '1000'. The 770 entity-sensor-value would be interpreted as 'degrees C * 10'."; 771 reference "RFC 3433: EntitySensorPrecision"; 772 } 774 typedef entity-sensor-value { 775 type int32 { 776 range "-1000000000 .. 1000000000"; 777 } 778 description 779 "An node using this data type represents an Entity Sensor 780 value. 782 An node of this type SHOULD be defined together with nodes 783 of type entity-sensor-data-type, entity-sensor-data-scale, and 784 entity-sensor-precision. Together, associated nodes of those 785 three types are used to identify the semantics of an node of 786 this data type. 788 The semantics of an node using this data type are determined 789 by the value of the associated entity-sensor-data-type node. 791 If the associated entity-sensor-data-type node is equal to 792 'voltsAC', 'voltsDC', 'amperes', 'watts', 'hertz', 793 'celsius', or 'cmm', then an node of this type MUST 794 contain a fixed point number ranging from -999,999,999 to 795 +999,999,999. The value -1000000000 indicates an underflow 796 error. The value +1000000000 indicates an overflow error. The 797 entity-sensor-precision indicates how many fractional digits are 798 represented in the associated entity-sensor-value node. 800 If the associated entity-sensor-data-type node is equal to 801 'percentRH', then an node of this type MUST contain a 802 number ranging from 0 to 100. 804 If the associated entity-sensor-data-type node is equal to 805 'rpm', then an node of this type MUST contain a number 806 ranging from -999,999,999 to +999,999,999. 808 If the associated entity-sensor-data-type node is equal to 809 'truthvalue', then an node of this type MUST contain 810 either the value 1 (true) or the value 2 (false)'. 812 If the associated entity-sensor-data-type node is equal to 813 'other' or unknown', then an node of this type MUST 814 contain a number ranging from -1000000000 to 1000000000."; 815 reference "RFC 3433: EntitySensorValue"; 816 } 818 typedef entity-sensor-status { 819 type enumeration { 820 enum ok { 821 value 1; 822 description 823 "Indicates that the server can obtain the sensor value."; 824 } 825 enum unavailable { 826 value 2; 827 description 828 "Indicates that the server presently cannot obtain the 829 sensor value."; 830 } 831 enum nonoperational { 832 value 3; 833 description 834 "Indicates that the server believes the sensor is broken. 835 The sensor could have a hard failure (disconnected wire), 836 or a soft failure such as out-of-range, jittery, or wildly 837 fluctuating readings."; 838 } 839 } 840 description 841 "An node using this data type represents the operational 842 status of a physical sensor."; 843 reference "RFC 3433: EntitySensorStatus"; 844 } 846 /* 847 * Identities 848 */ 850 identity entity-physical-class { 851 description 852 "This identity is the base for all physical entity class 853 identifiers."; 854 } 856 /* 857 * Operational state data nodes 858 */ 860 container entity-state { 861 config false; 862 description 863 "Data nodes for the operational state of physical entities."; 865 leaf last-change { 866 type yang:date-and-time; 867 description 868 "The time the '/entity-state/physical-entity' list changed."; 869 } 871 list physical-entity { 872 key name; 873 description 874 "List of physical entities"; 875 reference "RFC 6933: entPhysicalEntry"; 877 leaf name { 878 type string; 879 description 880 "Administrative name assigned to this physical entity. 881 No restrictions apply. Not required to be the same as 882 entPhysicalName."; 883 } 885 leaf class { 886 type identityref { 887 base entity-physical-class; 888 } 889 mandatory true; 890 description 891 "An indication of the general hardware type 892 of the physical entity."; 893 reference "RFC 6933: entPhysicalClass"; 894 } 896 leaf physical-index { 897 if-feature entity-mib; 898 type int32 { 899 range "1..2147483647"; 900 } 901 description 902 "The entPhysicalIndex for the entPhysicalEntry represented 903 by this list entry."; 904 reference "RFC 6933: entPhysicalIndex"; 905 } 907 leaf description { 908 type string; 909 description 910 "A textual description of physical entity. This node 911 should contain a string that identifies the manufacturer's 912 name for the physical entity and should be set to a 913 distinct value for each version or model of the physical 914 entity."; 915 reference "RFC 6933: entPhysicalDescr"; 916 } 918 leaf-list contained-in { 919 type leafref { 920 path "../../physical-entity/name"; 921 } 922 description 923 "The name of the physical entity that 'contains' 924 this physical entity."; 925 reference "RFC 6933: entPhysicalContainedIn"; 926 } 928 leaf-list contains-child { 929 type leafref { 930 path "../../physical-entity/name"; 931 } 932 description 933 "The name of the contained physical entity."; 934 reference "RFC 6933: entPhysicalChildIndex"; 935 } 937 leaf parent-rel-pos { 938 type int32 { 939 range "0 .. 2147483647"; 940 } 941 description 942 "An indication of the relative position of this child 943 component among all its sibling components. Sibling 944 components are defined as physical entities that share the 945 same instance values of each of the contained-in 946 and class elements."; 947 reference "RFC 6933: entPhysicalParentRelPos"; 948 } 950 leaf hardware-rev { 951 type string; 952 description 953 "The vendor-specific hardware revision string for the 954 physical entity. The preferred value is the hardware 955 revision identifier actually printed on the component 956 itself (if present)."; 958 reference "RFC 6933: entPhysicalHardwareRev"; 959 } 961 leaf firmware-rev { 962 type string; 963 description 964 "The vendor-specific firmware revision string for the 965 physical entity."; 966 reference "RFC 6933: entPhysicalFirmwareRev"; 967 } 969 leaf software-rev { 970 type string; 971 description 972 "The vendor-specific software revision string for the 973 physical entity."; 974 reference "RFC 6933: entPhysicalSoftwareRev"; 975 } 977 leaf serial-num { 978 type string; 979 description 980 "The vendor-specific serial number string for the physical 981 entity. The preferred value is the serial number string 982 actually printed on the component itself (if present). 984 If a serial number has been configured for this entity in 985 /entity/physical-entity/serial-num, this node contains the 986 configured value."; 987 reference "RFC 6933: entPhysicalSerialNum"; 988 } 990 leaf mfg-name { 991 type string; 992 description 993 "The name of the manufacturer of this physical component. 994 The preferred value is the manufacturer name string 995 actually printed on the component itself (if present). 997 Note that comparisons between instances of the model-name, 998 firmware-rev, software-rev, and the serial-num nodes are 999 only meaningful amongst physical entities with the same 1000 value of mfg-name. 1002 If the manufacturer name string associated with the 1003 physical component is unknown to the server, then this 1004 node will contain a zero-length string."; 1005 reference "RFC 6933: entPhysicalMfgName"; 1007 } 1009 leaf model-name { 1010 type string; 1011 description 1012 "The vendor-specific model name identifier string associated 1013 with this physical component. The preferred value is the 1014 customer-visible part number, which may be printed on the 1015 component itself. 1017 If the model name string associated with the physical 1018 component is unknown to the server, then this node will 1019 contain a zero-length string."; 1020 reference "RFC 6933: entPhysicalModelName"; 1021 } 1023 leaf alias { 1024 type string { 1025 length "0 .. 32"; 1026 } 1027 description 1028 "An 'alias' name for the physical entity, as specified by 1029 a network manager, and provides a non-volatile 'handle' 1030 for the physical entity. 1032 If an alias has been configured for this entity in 1033 /entity/physical-entity/alias, this node contains the 1034 configured value. If no such alias has been configured, 1035 the server may set the value of this node to a locally 1036 unique value."; 1037 reference "RFC 6933: entPhysicalAlias"; 1038 } 1040 leaf asset-id { 1041 type string { 1042 length "0 .. 32"; 1043 } 1044 description 1045 "This node is a user-assigned asset tracking identifier 1046 (as specified by a network manager) for the physical entity 1047 and provides non-volatile storage of this information. 1049 If an asset tracking identifier has been configured for 1050 this entity in /entity/physical-entity/addet-id, this node 1051 contains the configured value."; 1052 reference "RFC 6933: entPhysicalAssetID"; 1053 } 1054 leaf is-fru { 1055 type boolean; 1056 description 1057 "This node indicates whether or not this physical entity 1058 is considered a 'field replaceable unit' by the vendor. If 1059 this node contains the value 'true', then this 1060 physical entity identifies a field replaceable unit. For 1061 all physical entities that represent components permanently 1062 contained within a field replaceable unit, the value 1063 'false' should be returned for this node."; 1064 reference "RFC 6933: entPhysicalIsFRU"; 1065 } 1067 leaf mfg-date { 1068 type yang:date-and-time; 1069 description 1070 "The date of manufacturing of the managed entity."; 1071 reference "RFC 6933: entPhysicalMfgDate"; 1072 } 1074 leaf-list uri { 1075 type inet:uri; 1076 description 1077 "This node contains identification information about the 1078 physical entity. 1080 If uris have been configured for this entity in 1081 /entity/physical-entity/uri, this node contains the 1082 configured values."; 1083 reference "RFC 6933: entPhysicalUris"; 1084 } 1086 leaf uuid { 1087 type yang:uuid; 1088 description 1089 "A Universally Unique Identifier of the physical entity."; 1090 reference "RFC 6933: entPhysicalUUID"; 1091 } 1093 container state { 1094 if-feature entity-state; 1095 description 1096 "State-related nodes"; 1097 reference "RFC 4268: Entity State MIB"; 1099 leaf state-last-changed { 1100 type yang:date-and-time; 1101 description 1102 "The date and time when the value of any of the 1103 admin-state, oper-state, usage-state, alarm-status, or 1104 standby-status changed for this entity. 1106 If there has been no change since the last 1107 re-initialization of the local system, this node contains 1108 the date and time of local system initialization. If there 1109 has been no change since the entity was added to the local 1110 system, this node contains the date and time of the 1111 insertion."; 1112 reference "RFC 4268: entStateLastChanged"; 1113 } 1115 leaf admin-state { 1116 type entity-admin-state; 1117 description 1118 "The administrative state for this entity. 1120 This node refers to an entities administrative permission 1121 to service both other entities within its containment 1122 hierarchy as well other users of its services defined by 1123 means outside the scope of this module. 1125 Some physical entities exhibit only a subset of the 1126 remaining administrative state values. Some entities 1127 cannot be locked, and hence this node exhibits only the 1128 'unlocked' state. Other entities cannot be shutdown 1129 gracefully, and hence this node does not exhibit the 1130 'shutting-down' state."; 1131 reference "RFC 4268: entStateAdmin"; 1132 } 1134 leaf oper-state { 1135 type entity-oper-state; 1136 description 1137 "The operational state for this entity. 1139 Note that this node does not follow the administrative 1140 state. An administrative state of down does not predict an 1141 operational state of disabled. 1143 Note that some implementations may not be able to 1144 accurately report oper-state while the admin-state node 1145 has a value other than 'unlocked'. In these cases, this 1146 node MUST have a value of 'unknown'."; 1147 reference "RFC 4268: entStateOper"; 1148 } 1149 leaf usage-state { 1150 type entity-usage-state; 1151 description 1152 "The usage state for this entity. 1154 This node refers to an entity's ability to service more 1155 physical entities in a containment hierarchy. 1157 Some entities will exhibit only a subset of the usage state 1158 values. Entities that are unable to ever service any 1159 entities within a containment hierarchy will always have a 1160 usage state of 'busy'. Some entities will only ever be 1161 able to support one entity within its containment hierarchy 1162 and will therefore only exhibit values of 'idle' and 1163 'busy'."; 1164 reference "RFC 4268, entStateUsage"; 1165 } 1167 leaf alarm-status { 1168 type entity-alarm-status; 1169 description 1170 "The alarm status for this entity. It does not include 1171 the alarms raised on child components within its 1172 containment hierarchy."; 1173 reference "RFC 4268: entStateAlarm"; 1174 } 1176 leaf standby-status { 1177 type entity-standby-status; 1178 description 1179 "The standby status for this entity. 1181 Some entities will exhibit only a subset of the 1182 remaining standby state values. If this entity 1183 cannot operate in a standby role, the value of this 1184 node will always be 'providing-service'."; 1185 reference "RFC 4268: entStateStandby"; 1186 } 1187 } 1189 container sensor-data { 1190 when 'derived-from-or-self(../class, 1191 "iana-entity", "sensor")' { 1192 description 1193 "Sensor data nodes present for any entity of type 'sensor'"; 1194 } 1195 if-feature entity-sensor; 1196 description 1197 "Sensor-related nodes."; 1198 reference "RFC 3433: Entity Sensor MIB"; 1200 leaf data-type { 1201 type entity-sensor-data-type; 1202 description 1203 "The type of data units associated with the 1204 sensor value"; 1205 reference "RFC 3433: entPhySensorType"; 1206 } 1208 leaf data-scale { 1209 type entity-sensor-data-scale; 1210 description 1211 "The (power of 10) scaling factor associated 1212 with the sensor value"; 1213 reference "RFC 3433: entPhySensorScale"; 1214 } 1216 leaf precision { 1217 type entity-sensor-precision; 1218 description 1219 "The number of decimal places of precision 1220 associated with the sensor value"; 1221 reference "RFC 3433: entPhySensorPrecision"; 1222 } 1224 leaf value { 1225 type entity-sensor-value; 1226 description 1227 "The most recent measurement obtained by the server 1228 for this sensor."; 1229 reference "RFC 3433: entPhySensorValue"; 1230 } 1232 leaf oper-status { 1233 type entity-sensor-status; 1234 description 1235 "The operational status of the sensor."; 1236 reference "RFC 3433: entPhySensorOperStatus"; 1237 } 1239 leaf sensor-units-display { 1240 type string; 1241 description 1242 "A textual description of the data units that should be 1243 used in the display of the sensor value."; 1244 reference "RFC 3433: entPhySensorUnitsDisplay"; 1246 } 1248 leaf value-timestamp { 1249 type yang:date-and-time; 1250 description 1251 "The time the status and/or value of this sensor was 1252 last obtained by the server."; 1253 reference "RFC 3433: entPhySensorValueTimeStamp"; 1254 } 1256 leaf value-update-rate { 1257 type uint32; 1258 units "milliseconds"; 1259 description 1260 "An indication of the frequency that the server updates 1261 the associated 'value' node, representing in 1262 milliseconds. The value zero indicates: 1264 - the sensor value is updated on demand (e.g., 1265 when polled by the server for a get-request), 1266 - the sensor value is updated when the sensor 1267 value changes (event-driven), 1268 - the server does not know the update rate."; 1269 reference "RFC 3433: entPhySensorValueUpdateRate"; 1270 } 1271 } 1272 } 1273 } 1275 /* 1276 * Configuration data nodes 1277 */ 1279 container entity { 1280 if-feature entity-config; 1281 description 1282 "Configuration parameters for physical entities."; 1284 list physical-entity { 1285 key name; 1286 description 1287 "List of configuration data for physical entities."; 1289 leaf name { 1290 type string; 1291 description 1292 "Administrative name assigned to this physical entity. 1293 No restrictions apply."; 1295 } 1297 leaf serial-num { 1298 type string; 1299 description 1300 "The vendor-specific serial number string for the physical 1301 entity. The preferred value is the serial number string 1302 actually printed on the component itself (if present). 1304 This node is indented to be used for physical entities 1305 for which the server cannot determine the serial number."; 1306 reference "RFC 6933: entPhysicalSerialNum"; 1307 } 1309 leaf alias { 1310 type string { 1311 length "0 .. 32"; 1312 } 1313 description 1314 "This node is an 'alias' name for the physical entity, as 1315 specified by a network manager, and provides a non-volatile 1316 'handle' for the physical entity."; 1317 reference "RFC 6933: entPhysicalAlias"; 1318 } 1320 leaf asset-id { 1321 type string { 1322 length "0 .. 32"; 1323 } 1324 description 1325 "This node is a user-assigned asset tracking identifier 1326 (as specified by a network manager) for the physical entity"; 1327 reference "RFC 6933: entPhysicalAssetID"; 1328 } 1330 leaf-list uri { 1331 type inet:uri; 1332 description 1333 "This node contains identification information about the 1334 physical entity."; 1335 reference "RFC 6933: entPhysicalUris"; 1336 } 1338 leaf admin-state { 1339 if-feature entity-state; 1340 type entity-admin-state; 1341 description 1342 "The administrative state for this entity. 1344 This node refers to an entity's administrative 1345 permission to service both other entities within 1346 its containment hierarchy as well other users of 1347 its services defined by means outside the scope 1348 of this module. 1350 Some physical entities exhibit only a subset of the 1351 remaining administrative state values. Some entities 1352 cannot be locked, and hence this node exhibits only 1353 the 'unlocked' state. Other entities cannot be shutdown 1354 gracefully, and hence this node does not exhibit the 1355 'shutting-down' state."; 1356 reference "RFC 4268, entStateAdmin"; 1357 } 1358 } 1359 } 1361 /* 1362 * Notifications 1363 */ 1365 notification ent-config-change { 1366 description 1367 "An ent-config-change notification is generated when the value 1368 of /entity-state/last-change changes."; 1369 reference "RFC 6933, entConfigChange"; 1370 } 1372 notification ent-state-oper-enabled { 1373 if-feature entity-state; 1374 description 1375 "An ent-state-oper-enabled notification signifies that 1376 an entity has transitioned into the 'enabled' state."; 1378 leaf name { 1379 type leafref { 1380 path "/entity-state/physical-entity/name"; 1381 } 1382 description 1383 "The name of the entity that has transitioned into the 1384 'enabled' state."; 1385 } 1386 leaf admin-state { 1387 type leafref { 1388 path "/entity-state/physical-entity/state/admin-state"; 1389 } 1390 description 1391 "The administrative state for the entity."; 1393 } 1394 leaf alarm-status { 1395 type leafref { 1396 path "/entity-state/physical-entity/state/alarm-status"; 1397 } 1398 description 1399 "The alarm status for the entity."; 1400 } 1401 reference "RFC 4268, entStateOperEnabled"; 1402 } 1404 notification ent-state-oper-disabled { 1405 if-feature entity-state; 1406 description 1407 "An ent-state-oper-disabled notification signifies that 1408 an entity has transitioned into the 'disabled' state."; 1410 leaf name { 1411 type leafref { 1412 path "/entity-state/physical-entity/name"; 1413 } 1414 description 1415 "The name of the entity that has transitioned into the 1416 'disabled' state."; 1417 } 1418 leaf admin-state { 1419 type leafref { 1420 path "/entity-state/physical-entity/state/admin-state"; 1421 } 1422 description 1423 "The administrative state for the entity."; 1424 } 1425 leaf alarm-status { 1426 type leafref { 1427 path "/entity-state/physical-entity/state/alarm-status"; 1428 } 1429 description 1430 "The alarm status for the entity."; 1431 } 1432 reference "RFC 4268, entStateOperDisabled"; 1433 } 1435 } 1437 1439 Move this to a separate document?: 1441 file "iana-entity@2015-10-19.yang" 1443 module iana-entity { 1444 namespace "urn:ietf:params:xml:ns:yang:iana-entity"; 1445 prefix ianaent; 1447 import ietf-entity { 1448 prefix ent; 1449 } 1451 organization "IANA"; 1452 contact 1453 " Internet Assigned Numbers Authority 1455 Postal: ICANN 1456 4676 Admiralty Way, Suite 330 1457 Marina del Rey, CA 90292 1459 Tel: +1 310 823 9358 1460 "; 1462 description 1463 "IANA defined identities for physical class."; 1464 reference 1465 "https://www.iana.org/assignments/ianaentity-mib/ianaentity-mib"; 1467 // RFC Ed.: replace XXXX with actual RFC number and remove this 1468 // note. 1470 // RFC Ed.: update the date below with the date of RFC publication 1471 // and remove this note. 1472 revision 2015-10-19 { 1473 description 1474 "Initial revision."; 1475 reference 1476 "RFC XXXX: A YANG Data Model for Entity Managemet"; 1477 } 1479 identity unknown { 1480 base ent:entity-physical-class; 1481 description 1482 "This identity is applicable if the physical entity class 1483 is unknown to the server."; 1484 } 1486 identity chassis { 1487 base ent:entity-physical-class; 1488 description 1489 "This identity is applicable if the physical entity class 1490 is an overall container for networking equipment. Any class of 1491 physical entity, except a stack, may be contained within a 1492 chassis; a chassis may only be contained within a stack."; 1493 } 1495 identity backplane { 1496 base ent:entity-physical-class; 1497 description 1498 "This identity is applicable if the physical entity class 1499 is some sort of device for aggregating and forwarding 1500 networking traffic, such as a shared backplane in a modular 1501 ethernet switch. Note that an implementation may model a 1502 backplane as a single physical entity, which is actually 1503 implemented as multiple discrete physical components (within a 1504 chassis or stack)."; 1505 } 1507 identity container { 1508 base ent:entity-physical-class; 1509 description 1510 "This identity is applicable if the physical entity class 1511 is capable of containing one or more removable physical 1512 entities, possibly of different types. For example, each 1513 (empty or full) slot in a chassis will be modeled as a 1514 container. Note that all removable physical entities should be 1515 modeled within a container entity, such as field-replaceable 1516 modules, fans, or power supplies. Note that all known 1517 containers should be modeled by the agent, including empty 1518 containers."; 1519 } 1521 identity power-supply { 1522 base ent:entity-physical-class; 1523 description 1524 "This identity is applicable if the physical entity class 1525 is a power-supplying component."; 1526 } 1528 identity fan { 1529 base ent:entity-physical-class; 1530 description 1531 "This identity is applicable if the physical entity class 1532 is a fan or other heat-reduction component."; 1533 } 1535 identity sensor { 1536 base ent:entity-physical-class; 1537 description 1538 "This identity is applicable if the physical entity class 1539 is some sort of sensor, such as a temperature sensor within a 1540 router chassis."; 1541 } 1543 identity module { 1544 base ent:entity-physical-class; 1545 description 1546 "This identity is applicable if the physical entity class 1547 is some sort of self-contained sub-system. If a 'module' 1548 entity is removable, then it should be modeled within a 1549 container entity; otherwise, it should be modeled directly 1550 within another physical entity (e.g., a chassis or another 1551 module)."; 1552 } 1554 identity port { 1555 base ent:entity-physical-class; 1556 description 1557 "This identity is applicable if the physical entity class 1558 is some sort of networking port, capable of receiving and/or 1559 transmitting networking traffic."; 1560 } 1562 identity stack { 1563 base ent:entity-physical-class; 1564 description 1565 "This identity is applicable if the physical entity class 1566 is some sort of super-container (possibly virtual) intended to 1567 group together multiple chassis entities. A stack may be 1568 realized by a 'virtual' cable, a real interconnect cable 1569 attached to multiple chassis, or multiple interconnect cables. 1570 A stack should not be modeled within any other physical 1571 entities, but a stack may be contained within another stack. 1572 Only chassis entities should be contained within a stack."; 1573 } 1575 identity cpu { 1576 base ent:entity-physical-class; 1577 description 1578 "This identity is applicable if the physical entity class 1579 is some sort of central processing unit."; 1580 } 1582 identity energy-object { 1583 base ent:entity-physical-class; 1584 description 1585 "This identity is applicable if the physical entity class 1586 is some sort of energy object, i.e., a piece of equipment that 1587 is part of or attached to a communications network that is 1588 monitored, controlled, or aids in the management of another 1589 device for Energy Management."; 1590 } 1592 identity battery { 1593 base ent:entity-physical-class; 1594 description 1595 "This identity is applicable if the physical entity class 1596 is some sort of battery."; 1597 } 1599 identity storage-drive { 1600 base ent:entity-physical-class; 1601 description 1602 "This identity is applicable if the physical entity class 1603 is some sort of entity with data storage capability as main 1604 functionality, e.g., disk drive (HDD), solid state device 1605 (SSD), hybrid (SSHD), object storage (OSD) or other."; 1606 } 1607 } 1609 1611 8. IANA Considerations 1613 This document registers a URI in the IETF XML registry [RFC3688]. 1614 Following the format in RFC 3688, the following registration is 1615 requested to be made. 1617 URI: TBD 1619 Registrant Contact: The IESG. 1621 XML: N/A, the requested URI is an XML namespace. 1623 This document registers a YANG module in the YANG Module Names 1624 registry [RFC6020]. 1626 name: ietf-entity 1627 namespace: TBD 1628 prefix: ent 1629 reference: RFC XXXX 1631 9. Security Considerations 1633 TBD 1635 10. Acknowledgements 1637 TBD 1639 11. Normative References 1641 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1642 Requirement Levels", BCP 14, RFC 2119, March 1997. 1644 [RFC3433] Bierman, A., Romascanu, D., and K. Norseth, "Entity Sensor 1645 Management Information Base", RFC 3433, DOI 10.17487/ 1646 RFC3433, December 2002, 1647 . 1649 [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, 1650 January 2004. 1652 [RFC4268] Chisholm, S. and D. Perkins, "Entity State MIB", RFC 4268, 1653 DOI 10.17487/RFC4268, November 2005, 1654 . 1656 [RFC6020] Bjorklund, M., "YANG - A Data Modeling Language for the 1657 Network Configuration Protocol (NETCONF)", RFC 6020, 1658 October 2010. 1660 [RFC6933] Bierman, A., Romascanu, D., Quittek, J., and M. 1661 Chandramouli, "Entity MIB (Version 4)", RFC 6933, DOI 1662 10.17487/RFC6933, May 2013, 1663 . 1665 Authors' Addresses 1667 Andy Bierman 1668 YumaWorks 1670 Email: andy@yumaworks.com 1672 Martin Bjorklund 1673 Tail-f Systems 1675 Email: mbj@tail-f.com 1676 Jie Dong 1677 Huawei Technologies 1679 Email: jie.dong@huawei.com 1681 Dan Romascanu 1682 Avaya 1684 Email: dromasca@avaya.com