module openconfig-platform-linecard {

  yang-version "1";

  // namespace
  namespace "http://openconfig.net/yang/platform/linecard";

  prefix "oc-linecard";

  import openconfig-platform { prefix oc-platform; }
  import openconfig-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 related to LINECARD components in
    the openconfig-platform model";

  oc-ext:openconfig-version "0.1.0";

  revision "2017-08-03" {
    description
      "Initial revision";
    reference "0.1.0";
  }

  // extension statements

  // feature statements

  // identity statements

  // typedef statements

  // grouping statements

  grouping linecard-config {
    description
      "Configuration data for linecard components";

    leaf power-admin-state {
      type oc-platform-types:component-power-type;
      default POWER_ENABLED;
      description
        "Enable or disable power to the linecard";
    }
  }

  grouping linecard-state {
    description
      "Operational state data for linecard components";

    leaf slot-id {
      type string;
      description
        "Identifier for the slot or chassis position in which the
        linecard is installed";
    }
  }

  grouping linecard-top {
    description
      "Top-level grouping for linecard data";

    container linecard {
      description
        "Top-level container for linecard data";

      container config {
        description
          "Configuration data for linecards";

        uses linecard-config;
      }

      container state {

        config false;

        description
          "Operational state data for linecards";

        uses linecard-config;
        uses linecard-state;
      }
    }
  }

  // data definition statements

  // augment statements

  augment "/oc-platform:components/oc-platform:component" {
    description
      "Adding linecard data to physical inventory";

    uses linecard-top {
      when "current()/oc-platform:state/" +
        "oc-platform:type = 'LINECARD'" {
        description
          "Augment is active when component is of type LINECARD";
      }
    }
  }

  // rpc statements

  // notification statements

}

