module xos-core {
  namespace "urn:onlab:xos:core";
  prefix xos;
  yang-version 1.1;

  organization
   "Open Networking Lab (XOS) / Corenova Technologies";

  contact
    "Larry Peterson <llp@onlab.us>
     Peter K. Lee <peter@corenova.com>";
  
  import ietf-yang-types { prefix yang; }
  import ietf-inet-types { prefix inet; }

  revision 2016-07-14 {
    description "Initial revision.";
  }
  
  identity kind;
  identity generic    { base kind; }
  identity subscriber { base kind; }

  typedef unique-identifier {
    description "defines valid formats for external reference id";
    type union {
      type yang:uuid;
      type inet:uri;
      type uint32 { range 1..max; }
    }
  }

  grouping tenant-root {

    description
      "A Tenant Root is one of the things that can sit at the root of a chain
       of tenancy. This object represents a node.";

    leaf id {
      type unique-identifier;
      config false;
      mandatory true;
    }
    leaf kind {
      type identityref {
        base kind;
      }
      default generic;
    }
    leaf name {
      type string {
        length 0..255;
      }
      description "Specify name of the TenantRoot";
    }

    leaf service-specific-attribute { type string; }
    leaf service-specific-id {
      type unique-identifier;
      mandatory true;
    }

    list subscribed-tenants {
      config false;
      // not exactly clear how this is populated
    }
    
  }
  
  grouping subscriber {
    uses tenant-root {
      refine kind { default subscriber; }
    }
    // seems we should have interesting attributes specific to subscriber?
    
  }

  // main configuration tree for XOS

  container api {
    container service {
      // placeholder endpoint for services
    }
    container tenant {
      container cord {
        // placeholder endpoint for augment
      }
      container onos {
        // placeholder endpoint for augment
      }
    }
  }
  
}
