[openstack-dev] [nova] config options help text improvement: current status

Tim Bell Tim.Bell at cern.ch
Wed Mar 2 18:11:47 UTC 2016


Great. Does this additional improved text also get into the configuration guide documentation somehow ? 



Tim

On 02/03/16 18:45, "Markus Zoeller" <mzoeller at de.ibm.com> wrote:

>TL;DR: From ~600 nova specific config options are:
>            ~140 at a central location with an improved help text
>            ~220 options in open reviews (currently on hold)
>            ~240 options todo
>
>
>Background
>==========
>Nova has a lot of config options. Most of them weren't well
>documented and without looking in the code you probably don't
>understand what they do. That's fine for us developers but the ops
>had more problems with the interface we provide for them [1]. After
>the Mitaka summit we came to the conclusion that this should be 
>improved, which is currently in progress with blueprint [2].
>
>
>Current Status
>==============
>After asking on the ML for help [3] the progress improved a lot. 
>The goal is clear now and we know how to achieve it. The organization 
>is done via [4] which also has a section of "odd config options". 
>This section is important for a later step when we want do deprecate 
>config options to get rid of unnecessary ones. 
>
>As we reached the Mitaka-3 milestone we decided to put the effort [5] 
>on hold to stabilize the project and focus the review effort on bug 
>fixes. When the Newton cycle opens, we can continue the work. The 
>current result can be seen in the sample "nova.conf" file generated 
>after each commit [6]. The appendix at the end of this post shows an
>example.
>
>All options we have will be treated that way and moved to a central
>location at "nova/conf/". That's the central location which hosts
>now the interface to the ops. It's easier to get an overview now.
>The appendix shows how the config options were spread at the beginning
>and how they are located now.
>
>I initially thought that we have around 800 config options in Nova
>but I learned meanwhile that we import a lot from other libs, for 
>example from "oslo.db" and expose them as Nova options. We have around
>600 Nova specific config options, and ~140 are already treaded like
>described above and ca. 220 are in the pipeline of open reviews.
>Which leaves us ~240 which are not looked at yet.
>
>
>Outlook
>=======
>The numbers of the beginning of this ML post make me believe that we
>can finish the work in the upcoming Newton cycle. "Finished" means
>here: 
>* all config options we provide to our ops have proper and usable docs
>* we have an understanding which options don't make sense anymore
>* we know which options should get stronger validation to reduce errors
>
>I'm looking forward to it :)
>
>
>Thanks
>======
>I'd like to thank all the people who are working on this and making
>this possible. A special thanks goes to Ed Leafe, Esra Celik and
>Stephen Finucane. They put a tremendous amount of work in it.
>
>
>References:
>===========
>[1] 
>http://lists.openstack.org/pipermail/openstack-operators/2016-January/009301.html
>[2] https://blueprints.launchpad.net/nova/+spec/centralize-config-options
>[3] 
>http://lists.openstack.org/pipermail/openstack-dev/2015-December/081271.html
>[4] https://etherpad.openstack.org/p/config-options
>[5] Gerrit reviews for this topic: 
>https://review.openstack.org/#/q/status:open+project:openstack/nova+branch:master+topic:bp/centralize-config-options
>[6] The sample config file which gets generated after each commit:
>    http://docs.openstack.org/developer/nova/sample_config.html
>
>
>Appendix
>========
>
>Example of the help text improvement
>-----------------------------------
>As an example, compare the previous documentation of the scheduler 
>option "scheduler_tracks_instance_changes". 
>Before we started:
>
>    # Determines if the Scheduler tracks changes to instances to help 
>    # with its filtering decisions. (boolean value)
>    #scheduler_tracks_instance_changes = true
>
>After the improvement:
>
>    # The scheduler may need information about the instances on a host 
>    # in order to evaluate its filters and weighers. The most common 
>    # need for this information is for the (anti-)affinity filters, 
>    # which need to choose a host based on the instances already running
>    # on a host.
>    #
>    # If the configured filters and weighers do not need this information,
>    # disabling this option will improve performance. It may also be 
>    # disabled when the tracking overhead proves too heavy, although 
>    # this will cause classes requiring host usage data to query the 
>    # database on each request instead.
>    #
>    # This option is only used by the FilterScheduler and its subclasses;
>    # if you use a different scheduler, this option has no effect.
>    #
>    # * Services that use this:
>    #
>    #     ``nova-scheduler``
>    #
>    # * Related options:
>    #
>    #     None
>    #  (boolean value)
>    #scheduler_tracks_instance_changes = true
>
>
>The spread of config options in the tree
>----------------------------------------
>We started with this in November 2015. It's the Nova project tree and 
>the numbers behind the package name are the numbers of config options
>declared in that package (config options declared in sub-packages are
>not accumulated).
>
>    Based on:
>    commit 201090b0bcb 
>    Date: Thu Nov 19 04:08:51 2015 +0000
>
>     nova [87]
>    --- CA [0]
>    ------ newcerts [0]
>    ------ private [0]
>    ------ projects [0]
>    ------ reqs [0]
>    --- api [3]
>    ------ ec2 [14]
>    ------ metadata [6]
>    ------ openstack [6]
>    --------- compute [2]
>    ------------ legacy_v2 [2]
>    --------------- contrib [6]
>    ------------ schemas [0]
>    ------------ views [0]
>    ------ validation [0]
>    --- cells [25]
>    ------ filters [0]
>    ------ weights [3]
>    --- cert [2]
>    --- cloudpipe [6]
>    --- cmd [15]
>    --- compute [49]
>    ------ monitors [2]
>    --------- cpu [0]
>    ------ resources [0]
>    --- conductor [5]
>    ------ tasks [1]
>    --- conf [0]
>    --- console [16]
>    --- consoleauth [3]
>    --- db [4]
>    ------ sqlalchemy [13]
>    --------- api_migrations [0]
>    ------------ migrate_repo [0]
>    --------------- versions [0]
>    --------- migrate_repo [0]
>    ------------ versions [0]
>    --- hacking [0]
>    --- image [14]
>    ------ download [3]
>    --- ipv6 [1]
>    --- keymgr [5]
>    --- mks [2]
>    --- network [68]
>    ------ neutronv2 [14]
>    ------ security_group [1]
>    --- objects [2]
>    --- objectstore [3]
>    --- openstack [0]
>    ------ common [4]
>    --- pci [2]
>    --- rdp [2]
>    --- scheduler [14]
>    ------ client [0]
>    ------ filters [15]
>    ------ weights [6]
>    --- servicegroup [1]
>    ------ drivers [4]
>    --- spice [6]
>    --- virt [18]
>    ------ disk [2]
>    --------- mount [1]
>    --------- vfs [1]
>    ------ hyperv [16]
>    ------ image [0]
>    ------ ironic [10]
>    ------ libvirt [45]
>    --------- storage [2]
>    --------- volume [19]
>    ------ vmwareapi [24]
>    ------ xenapi [36]
>    --------- client [2]
>    --------- image [8]
>    --- vnc [8]
>    --- volume [8]
>    ------ encryptors [0]
>    --- wsgi [0]
>    ----------------------------
>    Number of total options: 637
>
>
>As of now, we have these numbers (please note the "nova/conf/" folder)
>
>    Based on:
>    commit 040df06bfc4 
>    Date: Wed Mar 2 11:09:24 2016 +0000
>
>     nova [72]
>    --- CA [0]
>    ------ newcerts [0]
>    ------ private [0]
>    ------ projects [0]
>    ------ reqs [0]
>    --- api [3]
>    ------ ec2 [0]
>    ------ metadata [6]
>    ------ openstack [7]
>    --------- compute [2]
>    ------------ legacy_v2 [2]
>    --------------- contrib [6]
>    ------------ schemas [0]
>    ------------ views [0]
>    ------ validation [0]
>    --- cells [0]
>    ------ filters [0]
>    ------ weights [0]
>    --- cert [0]
>    --- cloudpipe [6]
>    --- cmd [11]
>    --- compute [41]
>    ------ monitors [2]
>    --------- cpu [0]
>    ------ resources [0]
>    --- conductor [1]
>    ------ tasks [1]
>    --- conf [136]
>    --- console [11]
>    --- consoleauth [3]
>    --- db [4]
>    ------ sqlalchemy [13]
>    --------- api_migrations [0]
>    ------------ migrate_repo [0]
>    --------------- versions [0]
>    --------- migrate_repo [0]
>    ------------ versions [0]
>    --- hacking [0]
>    --- image [15]
>    ------ download [3]
>    --- ipv6 [1]
>    --- keymgr [5]
>    --- mks [2]
>    --- network [68]
>    ------ neutronv2 [7]
>    ------ security_group [1]
>    --- objects [2]
>    --- openstack [0]
>    ------ common [0]
>    --- pci [0]
>    --- rdp [2]
>    --- scheduler [0]
>    ------ client [0]
>    ------ filters [0]
>    ------ weights [0]
>    --- servicegroup [1]
>    ------ drivers [0]
>    --- spice [6]
>    --- virt [7]
>    ------ disk [0]
>    --------- mount [0]
>    --------- vfs [1]
>    ------ hyperv [15]
>    ------ image [0]
>    ------ ironic [0]
>    ------ libvirt [48]
>    --------- storage [2]
>    --------- volume [19]
>    ------ vmwareapi [24]
>    ------ xenapi [36]
>    --------- client [2]
>    --------- image [8]
>    --- vnc [0]
>    --- volume [8]
>    ------ encryptors [0]
>    --- wsgi [0]
>    ----------------------------
>    Number of total options: 610
>
>
>Regards, Markus Zoeller (markus_z)
>
>
>__________________________________________________________________________
>OpenStack Development Mailing List (not for usage questions)
>Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev


More information about the OpenStack-dev mailing list