// SPDX-FileCopyrightText: 2021 Open Networking Foundation
//
// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0

module onf-template {
  namespace "http://opennetworking.org/aether/template";
  prefix tp;

  import ietf-yang-types{ prefix yg; }
  import onf-aether-types{ prefix at; }

  organization "Open Networking Foundation.";
  contact "Scott Baker";
  description
    "The aether vcs-template holds common parameters used
     by a virtual connectivity service. Templates are used to
     populate a VCS.";

  revision "2021-09-10" {
    description "An Aether Virtual Cellular Service Template";
    reference "RFC 6087";
  }

  typedef template-id {
        type yg:yang-identifier {
            length 1..32;
        }
    description "The typedef for template-id";
  }

  container template {
    description "The top level container";

    list template {
      key "id";
      description
        "List of vcs templates";

      leaf id {
        type template-id;
        description "ID for this vcs template.";
      }

      leaf display-name {
        type string {
            length 1..80;
        }
        description "display name to use in GUI or CLI";
      }

      leaf sst {
        type at:sst;
        description "Slice/Service type";
      }

      leaf sd {
        type at:sd;
        description "Slice differentiator";
      }

      container slice {
        description "Per-Slice QOS Settings";
        container mbr {
          description "Maximum bitrate";
          leaf uplink {
            type at:bitrate;
            units bps;
            description "Per-Slice MBR uplink data rate in bps";
          }

          leaf downlink {
            type at:bitrate;
            units bps;
            description "Per-Slice MBR downlink data rate in bps";
          }

          leaf uplink-burst-size {
            type at:burst;
            units bytes;
            description "Per-Slice Uplink burst size";
          }

          leaf downlink-burst-size {
            type at:burst;
            units bytes;
            description "Per-Slice Downlink burst size";
          }
        }
      }

      leaf default-behavior {
        type at:behavior;
        mandatory true;
        description
          "Default behavior if no filter rules match";
      }

      leaf description {
        type at:description;
        description "description of this vcs template";
      }
    }
  }
}
