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

module site {
  namespace "http://opennetworking.org/aether/site";
  prefix st;

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

  organization "Open Networking Foundation.";
  contact "Scott Baker";
  description 
    "An Aether site is a location where resources are deployed.";

  revision "2021-06-02" {
    description "An Aether Site.";
    reference "RFC 6087";
  }

  typedef site-id {
        type yg:yang-identifier {
            length 1..32;
        }
  }

  container site {
    description "The top level container";

    list site {
      key "id";
      description
        "List of site";

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

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

      leaf enterprise {
        type leafref {
          path "/ent:enterprise/ent:enterprise/ent:id";
        }              
        description
          "Link to enterprise that owns this site";
        mandatory true;          
      }

      container imsi-definition {
        leaf mcc {
          type at:mcc;
          description "mobile country code";
          mandatory true;
        }
        leaf mnc {
          type at:mnc;
          description "mobile network code";
          mandatory true;
        }
        leaf enterprise {
          type at:ent;
          description "enterprise-specific identifier";
          mandatory true;
        }
        leaf format {
          type string {
            length 15;
          }
          mandatory true;
          description "IMSI format specifier, describes how fields are packed into an IMSI. Must be exactly 15 characters long. For example, CCCNNNEEESSSSSS.";
          // Format specifiers:
          //   C = MCC
          //   N = MNC
          //   E = Enterprise
          //   0 = Forced Zero
          //   S = Subscriber ID
          // default is
          //   3 digit MCC
          //   3 digit MNC
          //   3 digit enterprise ID
          //   5 digit subscriber ID
        }
      }

      leaf description {
        type at:description;
        description "description of this site";
      }         
    }
  } 
}
