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

module onf-enterprise {
  namespace "http://opennetworking.org/aether/enterprise";
  prefix ent;

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

  include onf-site;
  include onf-upf;
  include onf-vcs;
  include onf-device-group;
  include onf-ip-domain;
  include onf-application;
  include onf-traffic-class;
  include onf-template;

  organization "Open Networking Foundation.";
  contact "Scott Baker";
  description
    "An Aether Enterprise is an administration entity that
     has ownership of resrouces.";

  revision "2022-01-14" {
    description "Refactored to work with submodules";
    reference "RFC 6020";
  }

  revision "2021-06-02" {
    description "An Aether Enterprise. Used to distinguish ownership of devices and other resources as well as a domain of configuration.";
    reference "RFC 6087";
  }

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

  container enterprises {
    description "The top level enterprises container";

    list enterprise {
      key "ent-id";
      description
        "List of enterprises";

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

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

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

      list connectivity-service {
        key "connectivity-service";
        leaf connectivity-service {
          type leafref {
            path "/cs:connectivity-services/cs:connectivity-service/cs:id";
          }
          description
            "Link to connectivity services where configuration should be pushed for this enterprise's devices";
        }
        leaf enabled {
          type boolean;
          default true;
          description
            "Allow or disallow pushes to this connectivity service";
        }
        description "The list for connectivity-service";
      }

      uses application;

      uses traffic-class;

      uses template;

      uses site;
    }
  }
}
