// 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; }

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

  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 enterprise {
    description "The top level container";

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

      leaf 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-service/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";
      }
    }
  }
}
