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

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