Hongbin, Actually docs from API-WG is seen in below. [1] http://specs.openstack.org/openstack/api-wg/guidelines/api-docs.html [2] http://docs.openstack.org/contributor-guide/api-guides.html
But since present patches (below) seem to be as PoC or WIP, so we need more time to investigate to use Swagger and related tools. [3] https://bugs.launchpad.net/magnum/+bug/1460161 [4] https://review.openstack.org/#/c/233446/ POC: generate swagger spec from api code base [5] https://review.openstack.org/#/c/286659/ [WIP] Added bootprint and bootprint-swagger to project I agree with you about doing this work as PoC now. At last, I think to use Swagger only for API documentation and providing fixed values, not for generating code. Regards, Shu > -----Original Message----- > From: Hongbin Lu [mailto:hongbin...@gmail.com] > Sent: Saturday, May 14, 2016 4:17 AM > To: OpenStack Development Mailing List (not for usage questions) > <openstack-dev@lists.openstack.org> > Subject: Re: [openstack-dev] [magnum] How to document 'labels' > > Shu, > > You mentioned that Swagger was promoted by the API-WG. I wonder if they > mention how to use it. For example, use it to generate the API document, > generate an API client stub, or generate the CLI? > > In general, I see Swagger could solve the problem, but it does incur a > significant amount of work. We need to either i) modify the magnum client/ui > to understand the Swagger API spec (the JSON file) or ii) switch to > Swagger-generated client/ui modules. I think Swagger could be a long-term > approach and it needs a POC to show how it works. In short-term, I would > suggest to choose option #1 or #3, or a combination of both. > > Best regards, > Hongbin > > On Fri, May 13, 2016 at 8:41 AM, Shuu Mutou <shu-mu...@rf.jp.nec.com > <mailto:shu-mu...@rf.jp.nec.com> > wrote: > > > Hi peers, > > Since Magnum-UI should display selectable values for user, so > Magnum-UI wants to get available values from API. > https://blueprints.launchpad.net/magnum/+spec/magnum-api-swagg > er-support > https://bugs.launchpad.net/magnum-ui/+bug/1568890 > > And we don't want to write same things in many files, sometimes > with nits. > ex.) write help messages and available key/values into API, CLI, > UI and docs > > My understanding for Swagger (=OpenAPI) and related tools are: > - generate swagger-spec JSON file (like YAML file proposed by Ton) > from source code (with decorator), means writing documents as source code > of API (#2) > - provide the JSON file via REST API (#2) to CLI (#1) and UI for > available values and help messages not inconsistent with the source code. > - generate online documents from the JSON file (#3) > - are promoted by API-WG > - implementations seems starting to be tried in Nova and Zaqar > > I'd like to re-propose to use Swagger. > But it needs more investigation, so I'm not sure where is a middle > ground for now. > > > Best regards, > > Shu Muto > > > -----Original Message----- > > From: Ton Ngo [mailto:t...@us.ibm.com <mailto:t...@us.ibm.com> ] > > Sent: Friday, May 13, 2016 5:33 AM > > To: OpenStack Development Mailing List (not for usage questions) > > <openstack-dev@lists.openstack.org > <mailto:openstack-dev@lists.openstack.org> > > > Cc: Qun XK Wang <bjw...@cn.ibm.com <mailto:bjw...@cn.ibm.com> > > > > Subject: Re: [openstack-dev] [magnum] How to document 'labels' > > > > I would like to add some context for a bigger picture so we might > arrive > > at a more general solution. > > Typically CLI options are fairly static so the help messages are > usually > > coded directly in the client. > > This provides a good user experience by making the info readily > available > > to the users. > > The case for label is a little different, because label provides > a general > > mechanism to pass arbitrary key/value pairs. > > The meaning for these key/value is interpreted based on a > particular option > > in a particular COE type, so they are not generally applicable. > > For instance, Kubernetes baymodel that uses flannel as > network-driver > > supports the label "flannel_backend", with the allowed values > of "udp, vxlan, > > host-gw". > > This particular label would be meaningless in another COE like > Mesos. > > > > So to provide this kind of info to the users, we have to address > 2 issues: > > > > 1. How the user can discover the available labels specific > to the COE, > > along with the valid values to specify. > > 2. How to maintain the help messages specific to each label > since they > > > are likely to change frequently. > > > > > > I think just displaying the info for all labels together would > not be too > > helpful. > > Putting the info in the API would make it available to tools built > on Magnum, > > but Madhuri has a good point that the info would not be available > when the > > server is not running. > > We need to accommodate new bay drivers that may add new labels. > > Validation for the label value is another requirement. > > > > Here is a thought on how to meet these requirements: we can install > a yaml > > file in /etc/magnum/labels.yaml that would describe all the > supported > > labels, something like: > > > > flannel_backend: > > valid_values: > > -udp > > -vxlan > > -host-gw > > default_value: udp > > COE: > > -kubernetes > > -swarm > > help_message: "This label is used with the flannel network driver > to specify > > the type of back end to use. The option host-gw gives the best > bandwidth > > performance." > > doc_url: "http://xxx" > > > > Then the client can read this yaml file and list the labels for > a COE, say > > Kubernetes. For help on a specific label, the client would print > the help > > message along with the url for further info (if available) > > The validation code can also load this file for a more general > way to validate > > the baymodel, avoiding hardcoding in api/attr_validator.py > > New bay drivers can just append new labels to this file to have > them handled > > in the same way as Magnum supported labels. > > Optionally, the API server can provide access to this info. > > In the source, we can keep this file in etc/magnum/labels.yaml. > > Maintaining the help messages would be simpler since we just need > to edit > > the file. > > > > Thought? > > > > Ton, > > > > > > > Jamie Hannaford ---05/12/2016 07:08:47 AM---+1 for 1 and 3. I'm > not sure > > maintainability should discourage us from exposing information > to the u > > > > From: Jamie Hannaford <jamie.hannaf...@rackspace.com > <mailto:jamie.hannaf...@rackspace.com> > > > To: "OpenStack Development Mailing List (not for usage > questions)" > > <openstack-dev@lists.openstack.org > <mailto:openstack-dev@lists.openstack.org> > > > Cc: Qun XK Wang <bjw...@cn.ibm.com <mailto:bjw...@cn.ibm.com> > > > > Date: 05/12/2016 07:08 AM > > Subject: Re: [openstack-dev] [magnum] How to document 'labels' > > > > ________________________________ > > > > > > > > > > +1 for 1 and 3. > > > > I'm not sure maintainability should discourage us from exposing > information > > to the user through the client - we'll face the same maintenance > burden > > as we currently do, and IMO it's our job as a team to ensure our > docs are > > up-to-date. Any kind of input which touches the API should also > live in > > the API docs, because that's in line with every other OpenStack > service. > > > > I don't think I've seen documentation exposed via the API before > (#2). I > > think it's a lot of work too, and I don't see what benefit it > provides. > > > > Jamie > > > > > > ________________________________ > > > > > > From: Hongbin Lu <hongbin...@huawei.com > <mailto:hongbin...@huawei.com> > > > Sent: 11 May 2016 21:52 > > To: OpenStack Development Mailing List (not for usage questions) > > Cc: Qun XK Wang > > Subject: [openstack-dev] [magnum] How to document 'labels' > > > > Hi all, > > > > This is a continued discussion from the last team meeting. For > recap, ‘labels’ > > is a property in baymodel and is used by users to input additional > key-pair > > pairs to configure the bay. In the last team meeting, we discussed > what > > is the best way to document ‘labels’. In general, I heard three > options: > > > > 1. Place the documentation in Magnum CLI as help > text (as > > Wangqun proposed [1][2]). > > 2. Place the documentation in Magnum server and > expose them > > via the REST API. Then, have the CLI to load help text of individual > > properties from Magnum server. > > 3. Place the documentation in a documentation > server (like > > developer.openstack.org/ <http://developer.openstack.org/> …), > and add the doc link to the CLI help text. > > > > For option #1, I think an advantage is that it is close to end-users, > thus > > providing a better user experience. In contrast, Tom Cammann > pointed out > > a disadvantage that the CLI help text might be easier to become > out of date. > > For option #2, it should work but incurs a lot of extra work. > For option > > #3, the disadvantage is the user experience (since user need to > click the > > link to see the documents) but it makes us easier to maintain. > I am thinking > > if it is possible to have a combination of #1 and #3. Thoughts? > > > > [1] https://review.openstack.org/#/c/307631/ > > <https://review.openstack.org/#/c/307631/> > > [2] https://review.openstack.org/#/c/307642/ > > <https://review.openstack.org/#/c/307642/> > > > > Best regards, > > Hongbin > > > > ________________________________ > > > > Rackspace International GmbH a company registered in the Canton > of Zurich, > > Switzerland (company identification number CH-020.4.047.077-1) > whose > > registered office is at Pfingstweidstrasse 60, 8005 Zurich, > Switzerland. > > Rackspace International GmbH privacy policy can be viewed at > > www.rackspace.co.uk/legal/swiss-privacy-policy > <http://www.rackspace.co.uk/legal/swiss-privacy-policy> - This e-mail > message may > > contain confidential or privileged information intended for the > recipient. > > Any dissemination, distribution or copying of the enclosed > material is > > prohibited. If you receive this transmission in error, please > notify us > > immediately by e-mail at ab...@rackspace.com > <mailto:ab...@rackspace.com> and delete the original > > message. Your cooperation is appreciated. > > > ______________________________________________________________________ > > ____ > > OpenStack Development Mailing List (not for usage questions) > > Unsubscribe: > > openstack-dev-requ...@lists.openstack.org?subject:unsubscribe > <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe> > > > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > > > > > > > > ______________________________________________________________ > ____________ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: > openstack-dev-requ...@lists.openstack.org?subject:unsubscribe > <http://openstack-dev-requ...@lists.openstack.org?subject:unsubscribe> > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack- > dev > > __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev