Subject: [nfsv4] Last call for NSDB Protocol for Federated Filesystems (Oct 4 - Oct 22nd)

From: Spencer Shepler <[email-masked]>
Date: Mon, 4 Oct 2010 23:45:52 +0000

Last call for the following document starts today and ends on October 22nd

NSDB Protocol for Federated Filesystems
draft-ietf-nfsv4-federated-fs-protocol-09

Comments on the document, other than the editorial, should be
directed to the NFSv4 WG alias.   Document links are as follows:

html: http://tools.ietf.org/html/draft-ietf-nfsv4-federated-fs-protocol-09
txt: http://tools.ietf.org/id/draft-ietf-nfsv4-federated-fs-protocol-09.txt

---

From: James Lentini <[email-masked]>
Date: Fri, 22 Oct 2010 13:31:48 -0400 (EDT)

> txt: http://tools.ietf.org/id/draft-ietf-nfsv4-federated-fs-protocol-09.txt

There has been some discussion regarding the fedfsAnnotation LDAP 
attribute defined in Section 4.2.1.12 that I wanted to record as part 
of this thread.

Chuck Lever discovered some ambiguities in the description of this 
attribute's format. We discussed those issues during the FedFS concall 
on 10/14. A revised description that attempts to eliminate those 
ambiguities is included below.

In the process of reviewing the revised text, Chuck, my co-authors, 
and I have have been considering the utility of including this 
annotation mechanism. Before LDAP was chosen for the NSDB protocol, 
this attribute was created to allow private schema extensions. Given 
our use of LDAP, this attribute may be obsolete.

Using LDAP there are other, arguably more natural, ways to allow for 
schema extensions. For example, LDAP allows an entry's schema 
definition to be extended by adding additional object types to the 
entry. In this approach, the KEYs and VALUEs defined in Section 
4.2.1.12 map to LDAP attribute types and values respectively. This 
approach would allow implementers to define their own annotation 
attributes, and would allow for standardizing such attributes if there 
was interest.

Are there objections to removing the fedfsAnnotation attribute from 
the schema and recommending that schema extensions be handled as 
described above?

-james

Revised text for Section 4.2.1.12 
(if fedfsAnnotation is retained):
------------------------------------------

4.2.1.12. fedfsAnnotation

   A fedfsAnnotation contains an object annotation formatted as a 
   key/value pair.

   This attribute is multi-valued; an object type that permits
   annotations may have any number of annotations per instance.

   A fedfsAnnotation attribute is a human-readable UTF-8 string.
   The value MUST NOT contain a non-terminal NUL character and
   MUST be formatted according to the following ABNF [RFC 5234] rules:

   ANNOTATION = KEY EQUALS VALUE
   KEY        = ITEM
   VALUE      = ITEM
   ITEM       = BLANK DQUOTE STR DQUOTE BLANK
   BLANK      = 0*EMPTY
   EMPTY      = SPACE / HTAB
   HTAB       = %x09 ; horizontal tab
   STR        = 0*UTF8

   The DQUOTE, EQUALS, UTF8, and SPACE rules are defined in [RFC4512].

   The following escape sequences are allowed:

                     +-----------------+-------------+
                     | escape sequence | replacement |
                     +-----------------+-------------+
                     |        \\       |      \      |
                     |        \"       |      "      |
                     +-----------------+-------------+

   A fedfsAnnotation value SHOULD be processed as follows:

   1. Scan through the attribute value and replace the above escape 
      sequences.
   2. Parse the results of the previous step according to the 
      ANNOTATION rule.

   A fedfsAnnotation attribute that does not adhere to this format
   SHOULD be ignored.

   The following are examples of valid fedfsAnnotation attributes:

            "key1" = "foo"
            "another key"=    "x=3"
            "key-2" = "A string with \" and \\ characters."
            "key_3" = "Backslash before final quote: \\" 

   which correspond to the following key/value pairs:

            +-------------+-----------------------------------+
            |     key     |               value               |
            +-------------+-----------------------------------+
            |     key1    |                foo                |
            | another key |                x=3                |
            |    key-2    | A string with " and \ characters. |
            |    key_3    | Backslash before final quote: \   |
            +-------------+-----------------------------------+

   <CODE BEGINS>

           ///
           /// attributetype (
           ///     1.3.6.1.4.1.31103.1.12 NAME 'fedfsAnnotation'
           ///     DESC 'Annotation of an object'
           ///     SUP name
           ///     )
           ///

   <CODE ENDS>