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

module service-group {
  namespace "http://opennetworking.org/aether/service-group";
  prefix sg;

  import service-policy { prefix serv; }

  organization "Open Networking Foundation.";
  contact "Scott Baker";
  description "To generate JSON from this use command
    pyang -f jtoxx test1.yang | python3 -m json.tool > test1.json
    Copied from YangUIComponents project";

  revision "2021-03-04" {
    description "An Aether Service Group";
    reference "RFC 6087";
  }

  typedef service-group-id {
        type string {
            length 1..32;
        }
    description "The typedef for service-group-id";
  }

  typedef service-kind {
    type string {
      length 1..32;
      pattern "default|on-demand";
    }
    description "The typedef for service-kind";
  }

  container service-group {
    description "The top level container";

    list service-group {
      key "id";
      description
        "List of service groups";

      leaf id {
        type service-group-id;
        description "ID for this service group.";
      }

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

      list service-policies {
        key "service-policy";
        leaf service-policy {
          type leafref {
            path "/serv:service-policy/serv:service-policy/serv:id";
          }
          description
              "Link to service policy";
        }
        leaf kind {
          type service-kind;
          default "default";
          description
            "Type of service link";
        }
        description "The list for service-policies";
      }

      leaf description {
        type string {
          length 1..100;
        }
        description "description of this service group";
      }
    }
  }
}
