[openstack-dev] [magnum] How to document 'labels'

Shuu Mutou shu-mutou at rf.jp.nec.com
Mon May 16 09:31:59 UTC 2016


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:hongbin034 at gmail.com]
> Sent: Saturday, May 14, 2016 4:17 AM
> To: OpenStack Development Mailing List (not for usage questions)
> <openstack-dev at 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-mutou at rf.jp.nec.com
> <mailto:shu-mutou at 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:ton at us.ibm.com <mailto:ton at us.ibm.com> ]
> 	> Sent: Friday, May 13, 2016 5:33 AM
> 	> To: OpenStack Development Mailing List (not for usage questions)
> 	> <openstack-dev at lists.openstack.org
> <mailto:openstack-dev at lists.openstack.org> >
> 	> Cc: Qun XK Wang <bjwqun at cn.ibm.com <mailto:bjwqun at 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.hannaford at rackspace.com
> <mailto:jamie.hannaford at rackspace.com> >
> 	> To: "OpenStack Development Mailing List (not for usage
> questions)"
> 	> <openstack-dev at lists.openstack.org
> <mailto:openstack-dev at lists.openstack.org> >
> 	> Cc: Qun XK Wang <bjwqun at cn.ibm.com <mailto:bjwqun at 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.lu at huawei.com
> <mailto:hongbin.lu at 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 abuse at rackspace.com
> <mailto:abuse at rackspace.com>  and delete the original
> 	> message. Your cooperation is appreciated.
> 	>
> ______________________________________________________________________
> 	> ____
> 	> OpenStack Development Mailing List (not for usage questions)
> 	> Unsubscribe:
> 	> OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
> <http://OpenStack-dev-request@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-request at lists.openstack.org?subject:unsubscribe
> <http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe>
> 	http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-
> dev
> 
> 



More information about the OpenStack-dev mailing list