module openconfig-platform-types {

  yang-version "1";

  // namespace
  namespace "http://openconfig.net/yang/platform-types";

  prefix "oc-platform-types";

  import openconfig-extensions { prefix oc-ext; }


  // meta
  organization "OpenConfig working group";

  contact
    "OpenConfig working group
    www.openconfig.net";

  description
    "This module defines data types (e.g., YANG identities)
    to support the OpenConfig component inventory model.";

  oc-ext:openconfig-version "0.6.0";

  revision "2017-08-16" {
    description
      "Added power state enumerated type";
    reference "0.6.0";
  }

  revision "2016-12-22" {
    description
      "Added temperature state variable to component";
    reference "0.5.0";
  }

  // grouping statements

  grouping avg-min-max-instant-stats-precision1-celsius {
    description
      "Common grouping for recording temperature values in
      Celsius with 1 decimal precision. Values include the
      instantaneous, average, minimum, and maximum statistics";

    leaf instant {
      type decimal64 {
        fraction-digits 1;
      }
      units celsius;
      description
        "The instantaneous value of the statistic.";
    }

    leaf avg {
      type decimal64 {
        fraction-digits 1;
      }
      units celsius;
      description
        "The arithmetic mean value of the statistic over the
        sampling period.";
    }

    leaf min {
      type decimal64 {
        fraction-digits 1;
      }
      units celsius;
      description
        "The minimum value of the statistic over the sampling
        period";
    }

    leaf max {
      type decimal64 {
        fraction-digits 1;
      }
      units celsius;
      description
        "The maximum value of the statistic over the sampling
        period";
    }
  }

  // identity statements

  identity OPENCONFIG_HARDWARE_COMPONENT {
    description
      "Base identity for hardware related components in a managed
      device.  Derived identities are partially based on contents
      of the IANA Entity MIB.";
    reference
      "IANA Entity MIB and RFC 6933";
  }


  identity OPENCONFIG_SOFTWARE_COMPONENT {
    description
      "Base identity for software-related components in a managed
      device";
  }

  // hardware types

  identity CHASSIS {
    base OPENCONFIG_HARDWARE_COMPONENT;
    description
      "Chassis component, typically with multiple slots / shelves";
  }

  identity BACKPLANE {
    base OPENCONFIG_HARDWARE_COMPONENT;
    description
      "Backplane component for aggregating traffic, typically
      contained in a chassis component";
  }

  identity POWER_SUPPLY {
    base OPENCONFIG_HARDWARE_COMPONENT;
    description
      "Component that is supplying power to the device";
  }

  identity FAN {
    base OPENCONFIG_HARDWARE_COMPONENT;
    description
      "Cooling fan, or could be some other heat-reduction component";
  }

  identity SENSOR {
    base OPENCONFIG_HARDWARE_COMPONENT;
    description
      "Physical sensor, e.g., a temperature sensor in a chassis";
  }

  identity MODULE {
    base OPENCONFIG_HARDWARE_COMPONENT;
    description
      "Replaceable hardware module, e.g., a daughtercard";
  }

  identity LINECARD {
    base OPENCONFIG_HARDWARE_COMPONENT;
    description
      "Linecard component, typically inserted into a chassis slot";
  }

  identity PORT {
    base OPENCONFIG_HARDWARE_COMPONENT;
    description
      "Physical port, e.g., for attaching pluggables and networking
      cables";
  }

  identity TRANSCEIVER {
    base OPENCONFIG_HARDWARE_COMPONENT;
    description
      "Pluggable module present in a port";
  }

  identity CPU {
    base OPENCONFIG_HARDWARE_COMPONENT;
    description
      "Processing unit, e.g., a management processor";
  }

  identity OPERATING_SYSTEM {
    base OPENCONFIG_SOFTWARE_COMPONENT;
    description
      "Operating system running on a component";
  }

  // typedef statements

  typedef component-power-type {
    type enumeration {
      enum POWER_ENABLED {
        description
          "Enable power on the component";
      }
      enum POWER_DISABLED {
        description
          "Disable power on the component";
      }
    }
    description
      "A generic type reflecting whether a hardware component
      is powered on or off";
  }

}
