module openconfig-platform-psu {
  yang-version 1;
  namespace "http://openconfig.net/yang/platform/psu";
  prefix oc-platform-psu;

  import openconfig-extensions {
    prefix oc-ext;
  }
  import openconfig-types {
    prefix oc-types;
  }
  import openconfig-platform {
    prefix oc-platform;
  }

  organization
    "OpenConfig working group";
  contact
    "OpenConfig working group
     www.openconfig.net";
  description
    "This module defines a schema for power supply components in
     the OpenConfig platform model.";

  revision 2018-11-21 {
    description
      "Add OpenConfig module metadata extensions.";
    reference
      "0.2.1";
  }
  revision 2018-01-16 {
    description
      "Changed admin state leaf name";
    reference
      "0.2.0";
  }
  revision 2017-12-21 {
    description
      "Initial revision";
    reference
      "0.1.0";
  }

  oc-ext:openconfig-version "0.2.1";
  oc-ext:regexp-posix;
  oc-ext:catalog-organization "openconfig";
  oc-ext:origin "openconfig";

  grouping psu-config {
    description
      "Configuration data for power supply components";
    leaf enabled {
      type boolean;
      default "true";
      description
        "Adminsitrative control on the on/off state of the power
         supply unit.";
    }
  }

  grouping psu-state {
    description
      "Operational state data for power supply components";
    leaf capacity {
      type oc-types:ieeefloat32;
      units "watts";
      description
        "Maximum power capacity of the power supply.";
    }
    leaf input-current {
      type oc-types:ieeefloat32;
      units "amps";
      description
        "The input current draw of the power supply.";
    }
    leaf input-voltage {
      type oc-types:ieeefloat32;
      units "volts";
      description
        "Input voltage to the power supply.";
    }
    leaf output-current {
      type oc-types:ieeefloat32;
      units "amps";
      description
        "The output current supplied by the power supply.";
    }
    leaf output-voltage {
      type oc-types:ieeefloat32;
      units "volts";
      description
        "Output voltage supplied by the power supply.";
    }
    leaf output-power {
      type oc-types:ieeefloat32;
      units "watts";
      description
        "Output power supplied by the power supply.";
    }
  }

  augment "/oc-platform:components/oc-platform:component/oc-platform:power-supply/oc-platform:config" {
    description
      "Adds power supply data to component operational state.";
    uses psu-config;
  }
  augment "/oc-platform:components/oc-platform:component/oc-platform:power-supply/oc-platform:state" {
    description
      "Adds power supply data to component operational state.";
    uses psu-config;
    uses psu-state;
  }
}