Perhaps we could also support HTTP PATCH so you could just update one small thing vs's PUT's get and set method.
On Thursday, December 17, 2015, Adam Bordelon <a...@mesosphere.io> wrote: > First off, if we're going to have a /reservations endpoint, we should > follow the same PUT+DELETE pattern for reserve+unreserve, instead of > POST+PUT. And we should consider converting /create and /destroy to > PUT+DELETE verbs on a /volumes endpoint. > > Secondly, we're going to have to support the previous endpoints > through a deprecation cycle (~6mo), so there's no rush to get those > changes in at the same time as or before dynamic weights. > > Finally, it seems like the only real difference between the two > proposals is whether (1) /roles will be the catch-all "show me > everything about each role" endpoint that admins/users will request > when they want to see the current state of their > reservations/quota/weights(/volumes?), or (2) each endpoint with > create/update (PUT/POST) and DELETE actions will also have a GET > action that lists the current state of quotas or weights or whatever, > and /roles can (continue to) show whatever subset of information it > wants. > > In the long-run, I like the idea of consistency among these types of > endpoints, but for the near-term scope of dynamic weights, I think you > can leave the other endpoints alone (including /roles) and just > implement the PUT/POST+DELETE for /weights to create/update+delete > weight configurations. Since weights are already displayed in /roles, > you can leave them there and not worry about creating a GET for > /weights. That's the least amount of work/disruption you have to do to > deliver the feature/functionality, includes no wasted work no matter > whether we go with your proposal 1 or 2 in the long run. > On that note, we should create a JIRA Epic for defining a proper > RESTful API for these actions and migrating all relevant endpoints to > the new model. > > Cheers, > -Adam- > > P.S. Seems like RESTful APIs prefer plural nouns over singular, so it > would be /weights instead of /weight. > > On Wed, Dec 16, 2015 at 4:02 AM, Yongqiao Wang <grady.w...@foxmail.com > <javascript:;>> wrote: > > Hi guys, > > > > Currently, Mesos uses the following ways to configure role-related > objects: > > 1. For dynamic reserve resources for a role, /reserve endpoint is used to > > reserve, another /unreserve endpoint is used to unreserve, maybe the > third > > endpoint should be added to show resource reservation of a role later > due to > > someone has issue a requirement of this. > > > > 2. For configuring quota for a role, only one endpoint /quota is > provided to > > set/remove/show quota information. > > > > 3. For role information, /roles endpoint is only provided to show role > > information(contains role name, weight and the registered frameworks and > > their used resources) that master is configured with (specified by > --roles > > when Mesos master startup), and the configured roles do not be changed by > > this endpoint at runtime(without restart Mesos master). And current there > > are two proposals in progress to support re-configure roles at runtime: > > - Dynamic Roles(MESOS-3177): roles are stored in the registry and > > added/deleted/removed/shown via /roles HTTP endpoints with the authorized > > principles. > > - Implicit Roles(MESOS-3988): any role will be allowed, subject to > the > > ACL/authorization system. > > > > After having a discussion, we all prefer to implement Implicit Roles > rather > > than Dynamic Roles, but dynamic weight is out scope of Implicit Roles, > so a > > new project will need be issued for dynamic weight, and like quota, a new > > endpoint(such as /weight) will be added to update weight of a role at > > runtime. > > > > For above design and implementation, they are all different. In order to > > improve the user experience, some enhancements should be done for the > same > > behaviours between above endpoints. I have two proposals as below: > > > > Proposals 1, using /roles endpoint to centralizely show all roles > > information and using other endpoints(/weight,/quota,/reservation) to > only > > set the role-related configuration. > > - Implement Implicit Roles to support dynamically implicitly add/remove > role > > at runtime. and enhance /roles endpoint to centralizely show all role > > information which contains role name, weight, resource reservation, > > quota,etc. > > - For reservation, merge /reserve and /unreserve together, end user can > use > > one endpoint /reservation(should better be a noun for a Restful > endpoint) to > > reserve(POST method) and unreserve(PUT method) resource, and does not > > support to show reservation with this endpoint; > > - For setting quota, end user can only use /quota endpoint to set and > remove > > quota, and does not support to show quota with this endpoint; > > - For dynamic weight, add a new endpoint /weight, end user can use to > update > > weight of a role, and does not support to show weights with this > endpoint. > > > > > > Proposals 2, keep the old behaviour of /roles endpoint and using other > > endpoints(/weight,/quota,/reservation) to set and show the role-related > > configuration. > > - Implement Implicit Roles to support dynamic implicitly configure role > at > > runtime. and keep the old behaviour of /roles to only show role > information > > which contains role name, weight and the registered frameworks and their > > used resources. > > - For reservation, merge /reserve and /unreserve together, end user can > use > > one endpoint /reservation to reserve(POST method) resource, unreserve(PUT > > method) resource, show reserved resources(GET method); > > - For setting quota, keep the current behaviour, and end user can use > /quota > > endpoint to set(PUT method), remove(DELETE method) and show(GET method) > > quota; > > - For dynamic weight, add a new endpoint /weight, end user can use to > > update(PUT method) weight of a role, and show(GET method) weight > > information. > > > > I prefer the proposal 1, because cluster administrator can use /roles > > endpoint to show the global resource plan of the cluster. I would like to > > listen from you guys on the above proposals, and any other comments are > > welcome. > > > > ------------------ > > Regards! > > Grady YQ. Wang(王勇桥) > > > -- Text by Jeff, typos by iPhone