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

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

  import ietf-inet-types { prefix inet; }
  import service-group { prefix sg; }

  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 APN 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 apn-profile-id {
        type string {
            length 1..32;
        }
  }

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

    list apn-profile {
      key "id";
      description
        "List of apn profiles";

      leaf id {
        type apn-profile-id;
        description "ID for this apn profile.";
      }

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

      leaf apn-name {
        type string {
          length 1..32;
        }
        description "apn name";
      }

      leaf dns-primary {
        type inet:ip-address;
        description "primary dns server name";
      }

      leaf dns-secondary {
        type inet:ip-address;
        description "secondary dns server name";
      }

      leaf mtu {
        type uint32 {
          range 68..65535;
        }
        units bytes;
        default 1460;
        description "maximum transmission unit";
      }

      leaf gx-enabled {
        type boolean;
        default false;
        description "enable gx interface";
      }

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

      leaf service-group {
        type leafref {
          path "/sg:service-group/sg:service-group/sg:id";
        }
        description
          "Link to service group";
      }
    }
  } 
}
