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

module up-profile {
  namespace "http://opennetworking.org/aether/user-plane-profile";
  prefix pro;

  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 "2020-08-18" {
    description "An Aether user plane Profile";
    reference "RFC 6087";
  }

  // TODO: Think more on whether this should be a UUID or
  // simply a unique name. If it's a UUID, could fix the 
  // string length.
  typedef up-profile-id {
        type string {
            length 1..32;
        }
  }

  container up-profile {
    description "The top level container";

    list up-profile {
      key "id";
      description
        "List of user plane profiles";

      leaf id {
        type up-profile-id;
        description "ID for this user plane profile.";
      }

      leaf user-plane {
        type string {
          length 1..255;
        }
        description "user plane name";
      }

      leaf access-control {
        type string {
          length 1..32;
        }
        description "access control policy";
      }

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