Subject: [core] #354: Group configuration API should enable deletion of individual group memberships

From: "core issue tracker" <[email-masked]>
Date: Wed, 23 Oct 2013 05:49:41 -0000

#354: Group configuration API should enable deletion of individual group
memberships

 Review input from Peter, Carsten and others was that preferably the group
 configuration API in section 2.6.2 should enable deletion of individual
 group memberships. This allows configuration and reconfiguration of a CoAP
 server by potentially multiple configuring endpoints (e.g. a commissioning
 tool and a back-end application).

 To accomplish this, some changes are needed in the defined media type
 "application/coap-group+json" and also in the REST interaction with the
 group configuration resource.

-- 
-------------------------+-------------------------------------------------
 Reporter:               |      Owner:  draft-ietf-core-
  [email-masked]  |  [email-masked]
     Type:  protocol     |     Status:  new
  enhancement            |  Milestone:
 Priority:  major        |    Version:
Component:  groupcomm    |   Keywords:
 Severity:  -            |
-------------------------+-------------------------------------------------

Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/354>
core <http://tools.ietf.org/core/>

---

From: "core issue tracker" <[email-masked]>
Date: Wed, 23 Oct 2013 05:53:46 -0000

Comment (by [email-masked]):

 A sketch of a possible solution is defined below.

 == General ==
 All below interactions:  Configuring CoAP client -> CoAP server to be
 configured with group membership

 == Creating a new multicast group membership on CoAP server ==
    Method:  POST
    URI Template:  /{+gp}
    URI Template Variables:
          gp - Group Configuration Function Set path (mandatory).  This is
 the path of
          the Group Configuration Function Set.  A server SHOULD use the
 value "coap-group"
          for this variable whenever possible.

 Example:
 Req: POST /coap-group (Content-Format: application/coap-group+json)
 { "n": "All-Devices.floor1.west.bldg6.example.com","a":
 "[ff15::4200:f7fe:ed37:abcd]:4567" }
 Res: 2.01 Created   Location: /coap-group/12

 The returned Location-URI is of format /{+gp}/{index} where 'index' SHOULD
 be a string of
 1 or 2 alphanumerical characters.

 == Deletion of specific group membership ==
    Method:  DELETE
    URI Template:  /{+location}
    URI Template Variables:
          location - This is the Location path returned by the CoAP server
 as a result of a
          successful registration.

 Example:
 Req: DELETE /coap-group/12
 Res: 2.02 Deleted

 == Reading a specific group membership ==
    Method:  GET
    URI Template 1:  /{+location}
    URI Template 2:  /{+gp}/{index}
    URI Template Variables:
          location - This is the Location path returned by the CoAP server
 as a result of a
          successful group creation.
          index - This is the group index which can be retrieved from the
 JSON payload when doing
           a GET /coap-group (see below 'Reading all group memberships')

 Example:
 Req: GET /coap-group/12
 Res: 2.05 Content (Content-Format: application/coap-group+json)
 {"n":"All-
 Devices.floor1.west.bldg6.example.com","a":"[ff15::4200:f7fe:ed37:abcd]:4567"}

 == Reading all group memberships ==
 Each group is assigned an index which is used as a JSON key for the group
 membership object.
 Example:
 Req: GET /coap-group
 Res: 2.05 Content (Content-Format: application/coap-group+json)
    { "8":{ "a": "[ff15::4200:f7fe:ed37:14ca]" },
      "11":{ "n": "floor1.west.bldg6.example.com","a":
 "[ff15::4200:f7fe:ed37:25cb]" },
      "12":{ "n": "All-Devices.floor1.west.bldg6.example.com","a":
 "[ff15::4200:f7fe:ed37:abcd]:4567" }
    }

 Note: the returned IPv6 address may be a different string from the one
 originally submitted, due to different choices in IPv6 string
 representation formatting that may be allowed for the same address.

 == Updating a specific group membership ==
         Method: PUT
         URI Template 1: /{+location}
         URI Template 2: /{+gp}/{index}

 Example - name and port change
 Req: PUT /coap-group/12
 {"n":"All-My-
 Devices.floor1.west.bldg6.example.com","a":"[ff15::4200:f7fe:ed37:abcd]"}
 Res: 2.04 Changed

 == Writing (and replacing) all group memberships in one operation ==
         Method: PUT
         URI Template: /{+gp}

 Example - replacing with two new groups
 Req: PUT /coap-group
    { "1":{ "a": "[ff15::4200:f7fe:ed37:1234]" },
      "2":{ "a": "[ff15::4200:f7fe:ed37:5678]" }
    }
 Res: 2.04 Changed

 Example - clearing all group memberships
 Req: PUT /coap-group
    {}
 Res: 2.04 Changed

Component:  groupcomm    |  Resolution:
 Keywords:               |

Ticket URL: <http://trac.tools.ietf.org/wg/core/trac/ticket/354#comment:1>
core <http://tools.ietf.org/core/>