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

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

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

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