Subject: schema discovery

From: Martin Bjorklund <[email-masked]>
Date: Tue, 11 Dec 2007 13:51:56 +0100 (CET)

Hi,

I prefer the <get> based approach for schema discovery.  But I would
also like to see a mechanism to retrieve the actual schema over
NETCONF.  The data model below supports those two concepts.  It is
also extensible so that new schema formats can be added without
modifying this module.

Usage example (namespace-simplified):

  <rpc>
    <get>
      <filter>
        <schemas/>
      </filter>
    <get/>
  </rpc>

  <rpc-reply>
    <data>
      <schemas>
        <schema>
          <identifier>netconf-schema</identifier>
          <version>2007-12-11</version>
          <type>
            <yang/>
          </type>
          <location>http://foo/netconf-schema.yang</location>
          <location>netconf</location>
        </schema>
        <schema>
          ...
        </schema>
      </schemas>
    <data>
  </rpc-reply>

Since one location was 'netconf', we can use the new rpc to get it:

  <rpc>
    <get-schema>
      <identifier>netconf-schema</identifier>
      <version>2007-12-11</version>
      <type>
        <yang/>
      </type>
    </get-schema>
  </rpc>      

  <rpc-reply>
    <data>
      <schema>

module netconf-schema {
  namespace urn:ietf:params:xml:ns:netconf:schema;
  prefix schema;

  import yang-types { prefix yang; }

  organization
    "NETCONF WG, IETF";

  description
    "NETCONF Schema Discovery.";

  revision "2007-12-11" {
    description "Initial revision.";
  }

  grouping schema-type {
    description
      "Reusable, extensible schema type definition.";
    container type {
      choice format {
        leaf xsd  { type empty; }
        leaf yang { type empty; }
      }
    }
  }

  container schemas {
    config false;
    list schema {
      leaf identifier {
        type string;  // should this be the model's namespace instead?
      }
      leaf version {
        type string;
      }
      uses schema-type;
      leaf-list location {
        type union {
          type enumeration {
            enum "netconf" {
              description
                "indicates that the schema can be retrieved
                 using the get-schema rpc.";
            }
          }
          type yang:uri;
        }
      }
    }
  }
  
  rpc get-schema {
    description
      "RPC operation to get a schema over NETCONF.";
    input {
      leaf identifier { type string; }
      leaf version { type string; } // should this really be here??
      uses schema-type;
    }
    output {
      leaf schema { type string; }
    }
  }
}

      </schema>
    </data>
  <rpc-reply>

/martin

--
to unsubscribe send a message to [email-masked] with
the word 'unsubscribe' in a single line as the message text body.
archive: <http://ops.ietf.org/lists/netconf/>

---

From: "James Balestriere (jbalestr)" <[email-masked]>
Date: Wed, 12 Dec 2007 02:13:23 +0800

Hi Martin ,

I spoke to Mark after the meeting asking a similar thing.
We need a directory listing of all schemas the box has, plus, we need a
way
to get a specific schema out of the box if the box has the schema
definition.
Should we allow the get of multiple schemas at the same time ?
Why isn't the namespace of the schema definition of the module we are
interested 
sufficient ? I would have thought the namespace would have been globally
unique enough.

James.

> -----Original Message-----
> From: [email-masked] 
> [mailto:[email-masked]] On Behalf Of Martin Bjorklund
> Sent: Tuesday, 11 December 2007 4:52 AM
> To: [email-masked]
> Subject: schema discovery
> 
> Hi,
>