)]}'
{"nova/cells/opts.py":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"6036025c3a647c42848b6f02fb017ed952af1107","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                     \u0027Affects both memory and disk utilization\u0027),"},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027cell_type\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027compute\u0027,"},{"line_number":47,"context_line":"               choices\u003d(\u0027api\u0027, \u0027compute\u0027),"},{"line_number":48,"context_line":"               help\u003d\u0027Type of cell\u0027),"},{"line_number":49,"context_line":"    cfg.IntOpt(\"mute_child_interval\","},{"line_number":50,"context_line":"               default\u003d300,"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa963961_465c304b","line":47,"updated":"2015-03-27 17:38:54.000000000","message":"# Type of cell (string value)\n#cell_type\u003dcompute","commit_id":"d25c26299722d8f68c3575aba7f31d82df6496a1"}],"nova/compute/manager.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"44d65def29028ff950ef46295af677a2ffffb928","unresolved":false,"context_lines":[{"line_number":6311,"context_line":"                        msg \u003d _LW(\"Failed to power off instance\")"},{"line_number":6312,"context_line":"                        LOG.warn(msg, instance\u003dinstance, exc_info\u003dTrue)"},{"line_number":6313,"context_line":""},{"line_number":6314,"context_line":"                else:  # \u0027reap\u0027"},{"line_number":6315,"context_line":"                    LOG.info(_LI(\"Destroying instance with name label \""},{"line_number":6316,"context_line":"                                 \"\u0027%s\u0027 which is marked as \""},{"line_number":6317,"context_line":"                                 \"DELETED but still present on host.\"),"}],"source_content_type":"text/x-python","patch_set":23,"id":"3acd31a7_5f15b546","line":6314,"updated":"2015-05-05 10:52:21.000000000","message":"Technically it\u0027s valid but I would have preferred the comment to be on a single line","commit_id":"bb6d5a120791b76363e49daca5f975e0ed1fba00"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"9ca2567443899f3e07311b9dbb2ede7668ceb0cd","unresolved":false,"context_lines":[{"line_number":6311,"context_line":"                        msg \u003d _LW(\"Failed to power off instance\")"},{"line_number":6312,"context_line":"                        LOG.warn(msg, instance\u003dinstance, exc_info\u003dTrue)"},{"line_number":6313,"context_line":""},{"line_number":6314,"context_line":"                else:  # \u0027reap\u0027"},{"line_number":6315,"context_line":"                    LOG.info(_LI(\"Destroying instance with name label \""},{"line_number":6316,"context_line":"                                 \"\u0027%s\u0027 which is marked as \""},{"line_number":6317,"context_line":"                                 \"DELETED but still present on host.\"),"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a0c5dc1_1b1462f3","line":6314,"in_reply_to":"3acd31a7_5f15b546","updated":"2015-05-12 21:00:42.000000000","message":"Done","commit_id":"bb6d5a120791b76363e49daca5f975e0ed1fba00"}],"nova/notifications.py":[{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"c9bd3c5dfcf1a85deb03d4cb254998ab07a5d565","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    cfg.StrOpt(\u0027default_notification_level\u0027,"},{"line_number":53,"context_line":"               default\u003d\u0027INFO\u0027,"},{"line_number":54,"context_line":"               choices\u003d(\u0027AUDIT\u0027, \u0027DEBUG\u0027, \u0027INFO\u0027, \u0027WARN\u0027, \u0027ERROR\u0027, \u0027CRITICAL\u0027,"},{"line_number":55,"context_line":"                        \u0027SAMPLE\u0027),"},{"line_number":56,"context_line":"               help\u003d\u0027Default notification level for outgoing notifications\u0027),"},{"line_number":57,"context_line":"    cfg.StrOpt(\u0027default_publisher_id\u0027,"},{"line_number":58,"context_line":"               help\u003d\u0027Default publisher_id for outgoing notifications\u0027),"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa963961_f6ce7ab3","line":55,"updated":"2015-03-26 19:49:54.000000000","message":"this list is from https://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/notify/dispatcher.py#L28","commit_id":"d25c26299722d8f68c3575aba7f31d82df6496a1"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"18e1ac40456a33297538459a7df2358dc9019bd7","unresolved":false,"context_lines":[{"line_number":51,"context_line":"             \u0027in the API service.\u0027),"},{"line_number":52,"context_line":"    cfg.StrOpt(\u0027default_notification_level\u0027,"},{"line_number":53,"context_line":"               default\u003d\u0027INFO\u0027,"},{"line_number":54,"context_line":"               choices\u003d(\u0027AUDIT\u0027, \u0027DEBUG\u0027, \u0027INFO\u0027, \u0027WARN\u0027, \u0027ERROR\u0027, \u0027CRITICAL\u0027,"},{"line_number":55,"context_line":"                        \u0027SAMPLE\u0027),"},{"line_number":56,"context_line":"               help\u003d\u0027Default notification level for outgoing notifications\u0027),"},{"line_number":57,"context_line":"    cfg.StrOpt(\u0027default_publisher_id\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"3acd31a7_eb2de3a8","line":54,"updated":"2015-05-05 12:42:21.000000000","message":"AUDIT was removed. I\u0027m not sure what SAMPLE means here.","commit_id":"bb6d5a120791b76363e49daca5f975e0ed1fba00"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"9ca2567443899f3e07311b9dbb2ede7668ceb0cd","unresolved":false,"context_lines":[{"line_number":51,"context_line":"             \u0027in the API service.\u0027),"},{"line_number":52,"context_line":"    cfg.StrOpt(\u0027default_notification_level\u0027,"},{"line_number":53,"context_line":"               default\u003d\u0027INFO\u0027,"},{"line_number":54,"context_line":"               choices\u003d(\u0027AUDIT\u0027, \u0027DEBUG\u0027, \u0027INFO\u0027, \u0027WARN\u0027, \u0027ERROR\u0027, \u0027CRITICAL\u0027,"},{"line_number":55,"context_line":"                        \u0027SAMPLE\u0027),"},{"line_number":56,"context_line":"               help\u003d\u0027Default notification level for outgoing notifications\u0027),"},{"line_number":57,"context_line":"    cfg.StrOpt(\u0027default_publisher_id\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a0c5dc1_5b0adad3","line":54,"in_reply_to":"3acd31a7_acda5e4a","updated":"2015-05-12 21:00:42.000000000","message":"Ok, I\u0027ll just remove AUDIT and SAMPLE.","commit_id":"bb6d5a120791b76363e49daca5f975e0ed1fba00"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"19c4363ebf47c79a5f823f69c52420abcfc60b90","unresolved":false,"context_lines":[{"line_number":51,"context_line":"             \u0027in the API service.\u0027),"},{"line_number":52,"context_line":"    cfg.StrOpt(\u0027default_notification_level\u0027,"},{"line_number":53,"context_line":"               default\u003d\u0027INFO\u0027,"},{"line_number":54,"context_line":"               choices\u003d(\u0027AUDIT\u0027, \u0027DEBUG\u0027, \u0027INFO\u0027, \u0027WARN\u0027, \u0027ERROR\u0027, \u0027CRITICAL\u0027,"},{"line_number":55,"context_line":"                        \u0027SAMPLE\u0027),"},{"line_number":56,"context_line":"               help\u003d\u0027Default notification level for outgoing notifications\u0027),"},{"line_number":57,"context_line":"    cfg.StrOpt(\u0027default_publisher_id\u0027,"}],"source_content_type":"text/x-python","patch_set":23,"id":"3acd31a7_acda5e4a","line":54,"in_reply_to":"3acd31a7_eb2de3a8","updated":"2015-05-05 14:58:11.000000000","message":"This list comes from the methods of class Notifier in oslo_messaging.  And it looks like audit and sample are still there.\n\nhttps://github.com/openstack/oslo.messaging/blob/master/oslo_messaging/notify/notifier.py#L188","commit_id":"bb6d5a120791b76363e49daca5f975e0ed1fba00"}],"nova/utils.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"c0087f55ab0cd53bce7dbe16eba2b0c4840bcfab","unresolved":false,"context_lines":[{"line_number":68,"context_line":"               help\u003d\u0027Length of generated instance admin passwords\u0027),"},{"line_number":69,"context_line":"    cfg.StrOpt(\u0027instance_usage_audit_period\u0027,"},{"line_number":70,"context_line":"               default\u003d\u0027month\u0027,"},{"line_number":71,"context_line":"               choices\u003d[\u0027hour\u0027, \u0027day\u0027, \u0027month\u0027, \u0027year\u0027],"},{"line_number":72,"context_line":"               help\u003d\u0027Time period to generate instance usages for.\u0027),"},{"line_number":73,"context_line":"    cfg.StrOpt(\u0027rootwrap_config\u0027,"},{"line_number":74,"context_line":"               default\u003d\"/etc/nova/rootwrap.conf\","}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_97702e75","line":71,"updated":"2015-02-26 22:09:05.000000000","message":"This parameter could take a value in format \"period[@offset]\". See last_completed_audit_period in nova/utils.py. Now it couldn\u0027t. Is it exactly what you wanted?","commit_id":"c6a148e41bf337bc7532ae153d4e63732f8e8d5a"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"3f8f9de38ce44a7d99a96483a482a77844133c71","unresolved":false,"context_lines":[{"line_number":68,"context_line":"               help\u003d\u0027Length of generated instance admin passwords\u0027),"},{"line_number":69,"context_line":"    cfg.StrOpt(\u0027instance_usage_audit_period\u0027,"},{"line_number":70,"context_line":"               default\u003d\u0027month\u0027,"},{"line_number":71,"context_line":"               choices\u003d[\u0027hour\u0027, \u0027day\u0027, \u0027month\u0027, \u0027year\u0027],"},{"line_number":72,"context_line":"               help\u003d\u0027Time period to generate instance usages for.\u0027),"},{"line_number":73,"context_line":"    cfg.StrOpt(\u0027rootwrap_config\u0027,"},{"line_number":74,"context_line":"               default\u003d\"/etc/nova/rootwrap.conf\","}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_14543120","line":71,"in_reply_to":"ba7be1f8_97702e75","updated":"2015-02-27 03:26:03.000000000","message":"Nope, that\u0027s not what I wanted.  I\u0027ll revert this.","commit_id":"c6a148e41bf337bc7532ae153d4e63732f8e8d5a"}],"nova/virt/configdrive.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"c0087f55ab0cd53bce7dbe16eba2b0c4840bcfab","unresolved":false,"context_lines":[{"line_number":34,"context_line":"configdrive_opts \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027config_drive_format\u0027,"},{"line_number":36,"context_line":"               default\u003d\u0027iso9660\u0027,"},{"line_number":37,"context_line":"               choices\u003d[\u0027iso9660\u0027, \u0027vfat\u0027],"},{"line_number":38,"context_line":"               help\u003d\u0027Config drive format.\u0027),"},{"line_number":39,"context_line":"    # force_config_drive is a string option, to allow for future behaviors"},{"line_number":40,"context_line":"    #  (e.g. use config_drive based on image properties)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_d7ab8673","line":37,"updated":"2015-02-26 22:09:05.000000000","message":"Does it lead to remove ConfigDriveUnknownFormat exception and its usage?","commit_id":"c6a148e41bf337bc7532ae153d4e63732f8e8d5a"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"3f8f9de38ce44a7d99a96483a482a77844133c71","unresolved":false,"context_lines":[{"line_number":34,"context_line":"configdrive_opts \u003d ["},{"line_number":35,"context_line":"    cfg.StrOpt(\u0027config_drive_format\u0027,"},{"line_number":36,"context_line":"               default\u003d\u0027iso9660\u0027,"},{"line_number":37,"context_line":"               choices\u003d[\u0027iso9660\u0027, \u0027vfat\u0027],"},{"line_number":38,"context_line":"               help\u003d\u0027Config drive format.\u0027),"},{"line_number":39,"context_line":"    # force_config_drive is a string option, to allow for future behaviors"},{"line_number":40,"context_line":"    #  (e.g. use config_drive based on image properties)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_1a761b07","line":37,"in_reply_to":"ba7be1f8_d7ab8673","updated":"2015-02-27 03:26:03.000000000","message":"Yes, I believe oslo.config will raise a ConfigFileValueError or ValueError instead.  I\u0027ll remove ConfigDriveUnknownFormat","commit_id":"c6a148e41bf337bc7532ae153d4e63732f8e8d5a"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"453dbcbf12a3ee50267af95201a65add39fc100d","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"            if CONF.config_drive_format \u003d\u003d \u0027iso9660\u0027:"},{"line_number":159,"context_line":"                self._make_iso9660(path, tmpdir)"},{"line_number":160,"context_line":"            elif CONF.config_drive_format \u003d\u003d \u0027vfat\u0027:"},{"line_number":161,"context_line":"                self._make_vfat(path, tmpdir)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def cleanup(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_ae8cdc36","line":160,"updated":"2015-02-27 14:36:51.000000000","message":"Probably it would be better to write here something like\n\n else:  # vfat case\n\nSee a comment in nova/virt/libvirt/driver.py\n\nWhat do you think about?","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"6ea2c48739e9a18204a5a2378d457ccd2c9376a9","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"            if CONF.config_drive_format \u003d\u003d \u0027iso9660\u0027:"},{"line_number":159,"context_line":"                self._make_iso9660(path, tmpdir)"},{"line_number":160,"context_line":"            elif CONF.config_drive_format \u003d\u003d \u0027vfat\u0027:"},{"line_number":161,"context_line":"                self._make_vfat(path, tmpdir)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    def cleanup(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_10f16ccd","line":160,"in_reply_to":"ba7be1f8_ae8cdc36","updated":"2015-02-27 23:07:17.000000000","message":"Done","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"44d65def29028ff950ef46295af677a2ffffb928","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"            if CONF.config_drive_format \u003d\u003d \u0027iso9660\u0027:"},{"line_number":164,"context_line":"                self._make_iso9660(path, tmpdir)"},{"line_number":165,"context_line":"            else:  # vfat"},{"line_number":166,"context_line":"                self._make_vfat(path, tmpdir)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def cleanup(self):"}],"source_content_type":"text/x-python","patch_set":23,"id":"3acd31a7_8a066d1b","line":165,"updated":"2015-05-05 10:52:21.000000000","message":"same comment","commit_id":"bb6d5a120791b76363e49daca5f975e0ed1fba00"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"9ca2567443899f3e07311b9dbb2ede7668ceb0cd","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"            if CONF.config_drive_format \u003d\u003d \u0027iso9660\u0027:"},{"line_number":164,"context_line":"                self._make_iso9660(path, tmpdir)"},{"line_number":165,"context_line":"            else:  # vfat"},{"line_number":166,"context_line":"                self._make_vfat(path, tmpdir)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    def cleanup(self):"}],"source_content_type":"text/x-python","patch_set":23,"id":"9a0c5dc1_dbcb6a71","line":165,"in_reply_to":"3acd31a7_8a066d1b","updated":"2015-05-12 21:00:42.000000000","message":"Done","commit_id":"bb6d5a120791b76363e49daca5f975e0ed1fba00"}],"nova/virt/libvirt/blockinfo.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"453dbcbf12a3ee50267af95201a65add39fc100d","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    if CONF.config_drive_format \u003d\u003d \u0027iso9660\u0027:"},{"line_number":350,"context_line":"        config_drive_type \u003d \u0027cdrom\u0027"},{"line_number":351,"context_line":"    elif CONF.config_drive_format \u003d\u003d \u0027vfat\u0027:"},{"line_number":352,"context_line":"        config_drive_type \u003d \u0027disk\u0027"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    return config_drive_type"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_ae64dc49","line":351,"updated":"2015-02-27 14:36:51.000000000","message":"Same as above","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"6ea2c48739e9a18204a5a2378d457ccd2c9376a9","unresolved":false,"context_lines":[{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    if CONF.config_drive_format \u003d\u003d \u0027iso9660\u0027:"},{"line_number":350,"context_line":"        config_drive_type \u003d \u0027cdrom\u0027"},{"line_number":351,"context_line":"    elif CONF.config_drive_format \u003d\u003d \u0027vfat\u0027:"},{"line_number":352,"context_line":"        config_drive_type \u003d \u0027disk\u0027"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    return config_drive_type"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_d0943446","line":351,"in_reply_to":"ba7be1f8_ae64dc49","updated":"2015-02-27 23:07:17.000000000","message":"Done","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"6b6fdbfe33cd872a53d746ea046c19d97da5c830","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        config_drive_type \u003d \u0027disk\u0027"},{"line_number":356,"context_line":"    else:"},{"line_number":357,"context_line":"        raise exception.ConfigDriveUnknownFormat("},{"line_number":358,"context_line":"            format\u003dCONF.config_drive_format)"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    return config_drive_type"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"9a0c5dc1_c8bb900d","side":"PARENT","line":358,"updated":"2015-05-13 08:49:31.000000000","message":"This is a bad idea, as if someone extends the config option and don\u0027t notice they need to change this related bit of code, we have now lost the safety net.","commit_id":"2a5b1db132a9ae6c0b37f8e1854d7e23991720a4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"661157d255a1cf0f7a3591d82b037ab6c609ab16","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        config_drive_type \u003d \u0027disk\u0027"},{"line_number":356,"context_line":"    else:"},{"line_number":357,"context_line":"        raise exception.ConfigDriveUnknownFormat("},{"line_number":358,"context_line":"            format\u003dCONF.config_drive_format)"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    return config_drive_type"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7a016987_4d7badc1","side":"PARENT","line":358,"in_reply_to":"9a0c5dc1_c8bb900d","updated":"2015-05-21 18:41:25.000000000","message":"Done","commit_id":"2a5b1db132a9ae6c0b37f8e1854d7e23991720a4"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"c0087f55ab0cd53bce7dbe16eba2b0c4840bcfab","unresolved":false,"context_lines":[{"line_number":159,"context_line":"               default\u003d0,"},{"line_number":160,"context_line":"               help\u003d\u0027Maximum bandwidth to be used during migration, in Mbps\u0027),"},{"line_number":161,"context_line":"    cfg.StrOpt(\u0027snapshot_image_format\u0027,"},{"line_number":162,"context_line":"               choices\u003d[\u0027raw\u0027, \u0027qcow2\u0027, \u0027vmdk\u0027, \u0027vdi\u0027],"},{"line_number":163,"context_line":"               help\u003d\u0027Snapshot image format. Defaults to same as source image\u0027),"},{"line_number":164,"context_line":"    cfg.ListOpt(\u0027volume_drivers\u0027,"},{"line_number":165,"context_line":"                default\u003d["}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_427d16e7","line":162,"updated":"2015-02-26 22:09:05.000000000","message":"snapshot method of LibvirtDriver in nova/virt/libvirt/driver.py supports lvm and rdb image formats as well. Is there no need to support them here?","commit_id":"c6a148e41bf337bc7532ae153d4e63732f8e8d5a"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"3f8f9de38ce44a7d99a96483a482a77844133c71","unresolved":false,"context_lines":[{"line_number":159,"context_line":"               default\u003d0,"},{"line_number":160,"context_line":"               help\u003d\u0027Maximum bandwidth to be used during migration, in Mbps\u0027),"},{"line_number":161,"context_line":"    cfg.StrOpt(\u0027snapshot_image_format\u0027,"},{"line_number":162,"context_line":"               choices\u003d[\u0027raw\u0027, \u0027qcow2\u0027, \u0027vmdk\u0027, \u0027vdi\u0027],"},{"line_number":163,"context_line":"               help\u003d\u0027Snapshot image format. Defaults to same as source image\u0027),"},{"line_number":164,"context_line":"    cfg.ListOpt(\u0027volume_drivers\u0027,"},{"line_number":165,"context_line":"                default\u003d["}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_7ded5125","line":162,"in_reply_to":"ba7be1f8_427d16e7","updated":"2015-02-27 03:26:03.000000000","message":"Looks like those options you list come partially from source_format.","commit_id":"c6a148e41bf337bc7532ae153d4e63732f8e8d5a"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"453dbcbf12a3ee50267af95201a65add39fc100d","unresolved":false,"context_lines":[{"line_number":566,"context_line":"            uri \u003d CONF.libvirt.connection_uri or \u0027lxc:///\u0027"},{"line_number":567,"context_line":"        elif CONF.libvirt.virt_type \u003d\u003d \u0027parallels\u0027:"},{"line_number":568,"context_line":"            uri \u003d CONF.libvirt.connection_uri or \u0027parallels:///system\u0027"},{"line_number":569,"context_line":"        else:"},{"line_number":570,"context_line":"            uri \u003d CONF.libvirt.connection_uri or \u0027qemu:///system\u0027"},{"line_number":571,"context_line":"        return uri"},{"line_number":572,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_4ec36038","line":569,"updated":"2015-02-27 14:36:51.000000000","message":"the example of default case usage","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"}],"nova/virt/libvirt/imagebackend.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"c0087f55ab0cd53bce7dbe16eba2b0c4840bcfab","unresolved":false,"context_lines":[{"line_number":44,"context_line":"__imagebackend_opts \u003d ["},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027images_type\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":47,"context_line":"               choices\u003d[\u0027raw\u0027, \u0027qcow2\u0027, \u0027lvm\u0027, \u0027rbd\u0027, \u0027default\u0027],"},{"line_number":48,"context_line":"               help\u003d\u0027VM Images format. If default is specified, then\u0027"},{"line_number":49,"context_line":"                    \u0027 use_cow_images flag is used instead of this one.\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027images_volume_group\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_dd8e4779","line":47,"updated":"2015-02-26 22:09:05.000000000","message":"Some of specified legal snapshot_image_format values are absent. Is it correct?","commit_id":"c6a148e41bf337bc7532ae153d4e63732f8e8d5a"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"3f8f9de38ce44a7d99a96483a482a77844133c71","unresolved":false,"context_lines":[{"line_number":44,"context_line":"__imagebackend_opts \u003d ["},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027images_type\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":47,"context_line":"               choices\u003d[\u0027raw\u0027, \u0027qcow2\u0027, \u0027lvm\u0027, \u0027rbd\u0027, \u0027default\u0027],"},{"line_number":48,"context_line":"               help\u003d\u0027VM Images format. If default is specified, then\u0027"},{"line_number":49,"context_line":"                    \u0027 use_cow_images flag is used instead of this one.\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027images_volume_group\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_5db96deb","line":47,"in_reply_to":"ba7be1f8_dd8e4779","updated":"2015-02-27 03:26:03.000000000","message":"I\u0027ll add the missing ploop.  Looks like the help didn\u0027t list it like it should have.","commit_id":"c6a148e41bf337bc7532ae153d4e63732f8e8d5a"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"c0087f55ab0cd53bce7dbe16eba2b0c4840bcfab","unresolved":false,"context_lines":[{"line_number":61,"context_line":"               default\u003d\u0027\u0027,  # default determined by librados"},{"line_number":62,"context_line":"               help\u003d\u0027Path to the ceph configuration file to use\u0027),"},{"line_number":63,"context_line":"    cfg.StrOpt(\u0027hw_disk_discard\u0027,"},{"line_number":64,"context_line":"               choices\u003d[\u0027ignore\u0027, \u0027unmap\u0027],"},{"line_number":65,"context_line":"               help\u003d\u0027Discard option for nova managed disks. Need\u0027"},{"line_number":66,"context_line":"                    \u0027 Libvirt(1.0.6) Qemu1.5 (raw format) Qemu1.6(qcow2\u0027"},{"line_number":67,"context_line":"                    \u0027 format)\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_fd2f8b86","line":64,"updated":"2015-02-26 22:09:05.000000000","message":"is this the cause to delete get_hw_disk_discard function and its usage from nova/virt/libvirt/imagebackend.py?","commit_id":"c6a148e41bf337bc7532ae153d4e63732f8e8d5a"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"3f8f9de38ce44a7d99a96483a482a77844133c71","unresolved":false,"context_lines":[{"line_number":61,"context_line":"               default\u003d\u0027\u0027,  # default determined by librados"},{"line_number":62,"context_line":"               help\u003d\u0027Path to the ceph configuration file to use\u0027),"},{"line_number":63,"context_line":"    cfg.StrOpt(\u0027hw_disk_discard\u0027,"},{"line_number":64,"context_line":"               choices\u003d[\u0027ignore\u0027, \u0027unmap\u0027],"},{"line_number":65,"context_line":"               help\u003d\u0027Discard option for nova managed disks. Need\u0027"},{"line_number":66,"context_line":"                    \u0027 Libvirt(1.0.6) Qemu1.5 (raw format) Qemu1.6(qcow2\u0027"},{"line_number":67,"context_line":"                    \u0027 format)\u0027),"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba7be1f8_1d5455c9","line":64,"in_reply_to":"ba7be1f8_fd2f8b86","updated":"2015-02-27 03:26:03.000000000","message":"I think so, yes.","commit_id":"c6a148e41bf337bc7532ae153d4e63732f8e8d5a"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"c9bd3c5dfcf1a85deb03d4cb254998ab07a5d565","unresolved":false,"context_lines":[{"line_number":44,"context_line":"__imagebackend_opts \u003d ["},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027images_type\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":47,"context_line":"               choices\u003d(\u0027raw\u0027, \u0027qcow2\u0027, \u0027lvm\u0027, \u0027rbd\u0027, \u0027ploop\u0027, \u0027default\u0027),"},{"line_number":48,"context_line":"               help\u003d\u0027VM Images format. If default is specified, then\u0027"},{"line_number":49,"context_line":"                    \u0027 use_cow_images flag is used instead of this one.\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027images_volume_group\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa963961_56888622","line":47,"updated":"2015-03-26 19:49:54.000000000","message":"ploop was missing when the parallels stuff was added in  I9c2a0da52dbda7d45f749f9d42b2760a0d2e790f","commit_id":"d25c26299722d8f68c3575aba7f31d82df6496a1"},{"author":{"_account_id":12408,"name":"Maxim Nestratov","email":"mnestratov@virtuozzo.com","username":"mnestratov"},"change_message_id":"5f287c040048f494582e074727063ab9ef862ad5","unresolved":false,"context_lines":[{"line_number":44,"context_line":"__imagebackend_opts \u003d ["},{"line_number":45,"context_line":"    cfg.StrOpt(\u0027images_type\u0027,"},{"line_number":46,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":47,"context_line":"               choices\u003d(\u0027raw\u0027, \u0027qcow2\u0027, \u0027lvm\u0027, \u0027rbd\u0027, \u0027ploop\u0027, \u0027default\u0027),"},{"line_number":48,"context_line":"               help\u003d\u0027VM Images format. If default is specified, then\u0027"},{"line_number":49,"context_line":"                    \u0027 use_cow_images flag is used instead of this one.\u0027),"},{"line_number":50,"context_line":"    cfg.StrOpt(\u0027images_volume_group\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa963961_bc920856","line":47,"in_reply_to":"fa963961_56888622","updated":"2015-03-27 05:59:32.000000000","message":"In fact so. Thank you for noticing this.","commit_id":"d25c26299722d8f68c3575aba7f31d82df6496a1"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"978d0a94fe09e11d6da80c6654aeeef14a71cd47","unresolved":false,"context_lines":[{"line_number":45,"context_line":"__imagebackend_opts \u003d ["},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027images_type\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":48,"context_line":"               choices\u003d(\u0027raw\u0027, \u0027qcow2\u0027, \u0027lvm\u0027, \u0027rbd\u0027, \u0027ploop\u0027, \u0027default\u0027),"},{"line_number":49,"context_line":"               help\u003d\u0027VM Images format. If default is specified, then\u0027"},{"line_number":50,"context_line":"                    \u0027 use_cow_images flag is used instead of this one.\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027images_volume_group\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"7a016987_45f48859","line":48,"updated":"2015-05-22 19:01:41.000000000","message":"I\u0027m probably blind, but I missed why you added ploop as a valid option ? Is this because that option was in the code but the help string didn\u0027t mentioned it ?","commit_id":"7d4ec5d2791a9f0c420e95dcf88750d6b7a7107b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"35f21cef73fbd97fde0cb6d6b569fafceaa4fac0","unresolved":false,"context_lines":[{"line_number":45,"context_line":"__imagebackend_opts \u003d ["},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027images_type\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":48,"context_line":"               choices\u003d(\u0027raw\u0027, \u0027qcow2\u0027, \u0027lvm\u0027, \u0027rbd\u0027, \u0027ploop\u0027, \u0027default\u0027),"},{"line_number":49,"context_line":"               help\u003d\u0027VM Images format. If default is specified, then\u0027"},{"line_number":50,"context_line":"                    \u0027 use_cow_images flag is used instead of this one.\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027images_volume_group\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"7a016987_8ae80f18","line":48,"in_reply_to":"7a016987_3a92a9f7","updated":"2015-05-26 15:22:04.000000000","message":"Well, since the dependent patch would consist in modifying the help string before reworking on it, I just think it\u0027s enough to provide a good self-explanatory note in the commit msg explaining why (at least, you would make sure that no other reviewers could ask you the same question... :-) )","commit_id":"7d4ec5d2791a9f0c420e95dcf88750d6b7a7107b"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"a921e526dcc3f2e11cb0bba1ac80909be35ff127","unresolved":false,"context_lines":[{"line_number":45,"context_line":"__imagebackend_opts \u003d ["},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027images_type\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":48,"context_line":"               choices\u003d(\u0027raw\u0027, \u0027qcow2\u0027, \u0027lvm\u0027, \u0027rbd\u0027, \u0027ploop\u0027, \u0027default\u0027),"},{"line_number":49,"context_line":"               help\u003d\u0027VM Images format. If default is specified, then\u0027"},{"line_number":50,"context_line":"                    \u0027 use_cow_images flag is used instead of this one.\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027images_volume_group\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"7a016987_ec835801","line":48,"in_reply_to":"7a016987_45f48859","updated":"2015-05-23 01:43:34.000000000","message":"See patch set 2 for the history.  ploop was never properly documented but was a valid option.","commit_id":"7d4ec5d2791a9f0c420e95dcf88750d6b7a7107b"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"e2b093722360ee7b3276e017e75051bcefe237af","unresolved":false,"context_lines":[{"line_number":45,"context_line":"__imagebackend_opts \u003d ["},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027images_type\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":48,"context_line":"               choices\u003d(\u0027raw\u0027, \u0027qcow2\u0027, \u0027lvm\u0027, \u0027rbd\u0027, \u0027ploop\u0027, \u0027default\u0027),"},{"line_number":49,"context_line":"               help\u003d\u0027VM Images format. If default is specified, then\u0027"},{"line_number":50,"context_line":"                    \u0027 use_cow_images flag is used instead of this one.\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027images_volume_group\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"7a016987_3a92a9f7","line":48,"in_reply_to":"7a016987_45f48859","updated":"2015-05-25 17:10:43.000000000","message":"Would you prefer in a separate patch?  I have noted below where ploop is a valid option.","commit_id":"7d4ec5d2791a9f0c420e95dcf88750d6b7a7107b"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"1b368a79a278891ad2a810cf4f093502bf377145","unresolved":false,"context_lines":[{"line_number":45,"context_line":"__imagebackend_opts \u003d ["},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027images_type\u0027,"},{"line_number":47,"context_line":"               default\u003d\u0027default\u0027,"},{"line_number":48,"context_line":"               choices\u003d(\u0027raw\u0027, \u0027qcow2\u0027, \u0027lvm\u0027, \u0027rbd\u0027, \u0027ploop\u0027, \u0027default\u0027),"},{"line_number":49,"context_line":"               help\u003d\u0027VM Images format. If default is specified, then\u0027"},{"line_number":50,"context_line":"                    \u0027 use_cow_images flag is used instead of this one.\u0027),"},{"line_number":51,"context_line":"    cfg.StrOpt(\u0027images_volume_group\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"7a016987_73626eaf","line":48,"in_reply_to":"7a016987_8ae80f18","updated":"2015-05-26 17:13:13.000000000","message":"Done","commit_id":"7d4ec5d2791a9f0c420e95dcf88750d6b7a7107b"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"e2b093722360ee7b3276e017e75051bcefe237af","unresolved":false,"context_lines":[{"line_number":832,"context_line":"            \u0027qcow2\u0027: Qcow2,"},{"line_number":833,"context_line":"            \u0027lvm\u0027: Lvm,"},{"line_number":834,"context_line":"            \u0027rbd\u0027: Rbd,"},{"line_number":835,"context_line":"            \u0027ploop\u0027: Ploop,"},{"line_number":836,"context_line":"            \u0027default\u0027: Qcow2 if use_cow else Raw"},{"line_number":837,"context_line":"        }"},{"line_number":838,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"7a016987_bab45982","line":835,"updated":"2015-05-25 17:10:43.000000000","message":"@Sylvain Bauza - see here","commit_id":"7d4ec5d2791a9f0c420e95dcf88750d6b7a7107b"}],"nova/virt/libvirt/lvm.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"453dbcbf12a3ee50267af95201a65add39fc100d","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    \"\"\""},{"line_number":217,"context_line":"    volume_clear \u003d CONF.libvirt.volume_clear"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    if volume_clear not in (\u0027none\u0027, \u0027shred\u0027, \u0027zero\u0027):"},{"line_number":220,"context_line":"        LOG.error(_LE(\"ignoring unrecognized volume_clear\u003d\u0027%s\u0027 value\"),"},{"line_number":221,"context_line":"                  volume_clear)"},{"line_number":222,"context_line":"        volume_clear \u003d \u0027zero\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_0e4a4827","line":219,"updated":"2015-02-27 14:36:51.000000000","message":"is this check still valid?","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"6ea2c48739e9a18204a5a2378d457ccd2c9376a9","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    \"\"\""},{"line_number":217,"context_line":"    volume_clear \u003d CONF.libvirt.volume_clear"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    if volume_clear not in (\u0027none\u0027, \u0027shred\u0027, \u0027zero\u0027):"},{"line_number":220,"context_line":"        LOG.error(_LE(\"ignoring unrecognized volume_clear\u003d\u0027%s\u0027 value\"),"},{"line_number":221,"context_line":"                  volume_clear)"},{"line_number":222,"context_line":"        volume_clear \u003d \u0027zero\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_10adec88","line":219,"in_reply_to":"ba7be1f8_0e4a4827","updated":"2015-02-27 23:07:17.000000000","message":"Done","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"453dbcbf12a3ee50267af95201a65add39fc100d","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    elif volume_clear \u003d\u003d \u0027shred\u0027:"},{"line_number":244,"context_line":"        utils.execute(\u0027shred\u0027, \u0027-n3\u0027, \u0027-s%d\u0027 % volume_size, path,"},{"line_number":245,"context_line":"                      run_as_root\u003dTrue)"},{"line_number":246,"context_line":"    else:"},{"line_number":247,"context_line":"        raise exception.Invalid(_(\"volume_clear\u003d\u0027%s\u0027 is not handled\")"},{"line_number":248,"context_line":"                                % volume_clear)"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_ce5750c9","line":246,"updated":"2015-02-27 14:36:51.000000000","message":"is this branch still needed?","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"6ea2c48739e9a18204a5a2378d457ccd2c9376a9","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    elif volume_clear \u003d\u003d \u0027shred\u0027:"},{"line_number":244,"context_line":"        utils.execute(\u0027shred\u0027, \u0027-n3\u0027, \u0027-s%d\u0027 % volume_size, path,"},{"line_number":245,"context_line":"                      run_as_root\u003dTrue)"},{"line_number":246,"context_line":"    else:"},{"line_number":247,"context_line":"        raise exception.Invalid(_(\"volume_clear\u003d\u0027%s\u0027 is not handled\")"},{"line_number":248,"context_line":"                                % volume_clear)"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_50b684dd","line":246,"in_reply_to":"ba7be1f8_ce5750c9","updated":"2015-02-27 23:07:17.000000000","message":"Done","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"6b6fdbfe33cd872a53d746ea046c19d97da5c830","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                      run_as_root\u003dTrue)"},{"line_number":246,"context_line":"    else:"},{"line_number":247,"context_line":"        raise exception.Invalid(_(\"volume_clear\u003d\u0027%s\u0027 is not handled\")"},{"line_number":248,"context_line":"                                % volume_clear)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"def remove_volumes(paths):"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a0c5dc1_6df3960b","side":"PARENT","line":248,"updated":"2015-05-13 08:49:31.000000000","message":"IMHO removing this is a bad idea. If someone later adds more options to the config parameter and forgets to extend this code, we\u0027ve lost the safety net.","commit_id":"2a5b1db132a9ae6c0b37f8e1854d7e23991720a4"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"4ae050fedb1a626fd68b2a01183cf658de483ebd","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                      run_as_root\u003dTrue)"},{"line_number":246,"context_line":"    else:"},{"line_number":247,"context_line":"        raise exception.Invalid(_(\"volume_clear\u003d\u0027%s\u0027 is not handled\")"},{"line_number":248,"context_line":"                                % volume_clear)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"def remove_volumes(paths):"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a0c5dc1_55ee14b5","side":"PARENT","line":248,"in_reply_to":"9a0c5dc1_030aab26","updated":"2015-05-13 10:25:12.000000000","message":"Bitter experience tells me people always forget to update some parts of the code correctly, so these sanity checks *are* worth it in the long term.","commit_id":"2a5b1db132a9ae6c0b37f8e1854d7e23991720a4"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"a8ee5b4b84f872e587fecaa42169c0b13978d071","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                      run_as_root\u003dTrue)"},{"line_number":246,"context_line":"    else:"},{"line_number":247,"context_line":"        raise exception.Invalid(_(\"volume_clear\u003d\u0027%s\u0027 is not handled\")"},{"line_number":248,"context_line":"                                % volume_clear)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"def remove_volumes(paths):"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a016987_e1b33d09","side":"PARENT","line":248,"in_reply_to":"9a0c5dc1_4fab061e","updated":"2015-05-14 09:02:12.000000000","message":"I still think that the value of such checks is less than their cost. Tests will catch the errors or will not in both cases (with these checks or without).\n\nBut if a core reviewer asks something... It was me who asked you to remove the checks. Sorry, i tried to make the code smaller and clearer.\n\nAlso i think if we\u0027re going to restore the checks (whose the only point is to catch a developer), we should make them the same. E.g. each check should raise the same exception, not to log a warning. Then there should be a common rule where to use such check or not. E.g. if a code does something special for all options, the check is needed. Otherwise if the code does something special for certain set of options, the check is not needed. Other question is should we cover such checks by tests or not.\n\nBut in any case lets wait for Daniel\u0027s answer.","commit_id":"2a5b1db132a9ae6c0b37f8e1854d7e23991720a4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"dac3591d1e2cfef8d600790ae2957097e885c5af","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                      run_as_root\u003dTrue)"},{"line_number":246,"context_line":"    else:"},{"line_number":247,"context_line":"        raise exception.Invalid(_(\"volume_clear\u003d\u0027%s\u0027 is not handled\")"},{"line_number":248,"context_line":"                                % volume_clear)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"def remove_volumes(paths):"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a0c5dc1_4fab061e","side":"PARENT","line":248,"in_reply_to":"9a0c5dc1_55ee14b5","updated":"2015-05-13 21:13:23.000000000","message":"I think we would have a serious problem in our code reviews if people are adding config options and then not implementing the associated code.\n\nBut in any case, I can revert to what I had before.  I just want to know that there is a consensus.  I\u0027ve been asked to remove this and now add it back.","commit_id":"2a5b1db132a9ae6c0b37f8e1854d7e23991720a4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"661157d255a1cf0f7a3591d82b037ab6c609ab16","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                      run_as_root\u003dTrue)"},{"line_number":246,"context_line":"    else:"},{"line_number":247,"context_line":"        raise exception.Invalid(_(\"volume_clear\u003d\u0027%s\u0027 is not handled\")"},{"line_number":248,"context_line":"                                % volume_clear)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"def remove_volumes(paths):"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a016987_0d2ff5a1","side":"PARENT","line":248,"in_reply_to":"9a0c5dc1_6df3960b","updated":"2015-05-21 18:41:25.000000000","message":"Done","commit_id":"2a5b1db132a9ae6c0b37f8e1854d7e23991720a4"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"e01c28cf7d03c5d6e956fae86634283eb3991fda","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                      run_as_root\u003dTrue)"},{"line_number":246,"context_line":"    else:"},{"line_number":247,"context_line":"        raise exception.Invalid(_(\"volume_clear\u003d\u0027%s\u0027 is not handled\")"},{"line_number":248,"context_line":"                                % volume_clear)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"def remove_volumes(paths):"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a0c5dc1_030aab26","side":"PARENT","line":248,"in_reply_to":"9a0c5dc1_6df3960b","updated":"2015-05-13 10:22:06.000000000","message":"I think there is a little reason to leave it.\n\nIf someone adds an option, he will add an appropriate logic for it. Here is the place to implement the logic, so he will have a little chance to forget (because obviously in this case he\u0027ll forget to add the logic). Even if he forgets it, he will get an error at an early development stage (just because OS will not work as he expects).\n\nIf one adds a new value of an option, he scans all code to find all such \u0027ifs\u0027 because he needs to pay attention to all of them. If he misses one, he does it with no relation to existence of such safety net.\n\nOther argument is that this code is dead (never called), but it requires a unit test and the error message translation. Also the dead branch will take a time from code reader to understand that it is left to help for a future extensions only.\n\nFinally you didn\u0027t mark all such \u0027ifs\u0027. E.g. configdrive.py and manager.py aren\u0027t marked. What does it mean? Have you just missed them, or there is no common approach to do work with option choices?","commit_id":"2a5b1db132a9ae6c0b37f8e1854d7e23991720a4"}],"nova/virt/libvirt/volume.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"62bd875ca33eca7ebc61f8070c36f5ad5a960164","unresolved":false,"context_lines":[{"line_number":106,"context_line":"               help\u003d\u0027Path to a Quobyte Client configuration file.\u0027),"},{"line_number":107,"context_line":"    cfg.StrOpt(\u0027iscsi_iface\u0027,"},{"line_number":108,"context_line":"               deprecated_name\u003d\u0027iscsi_transport\u0027,"},{"line_number":109,"context_line":"               choices\u003d(None, \u0027be2iscsi\u0027, \u0027bnx2i\u0027, \u0027cxgb3i\u0027, \u0027cxgb4i\u0027,"},{"line_number":110,"context_line":"                        \u0027qla4xxx\u0027, \u0027ocs\u0027),"},{"line_number":111,"context_line":"               help\u003d\u0027The iSCSI transport iface to use to connect to target in \u0027"},{"line_number":112,"context_line":"                    \u0027case offload support is desired. Default format is \u0027"}],"source_content_type":"text/x-python","patch_set":30,"id":"5afe65bd_a5e79eab","line":109,"updated":"2015-06-01 15:47:36.000000000","message":"Why have you included the python  None value here. Several options you\u0027ve changed require ability to be left unset, but you\u0027ve only included None in this one. AFAICT, olso.conf always allows None, even if choices is set, so it appears redundant to list it here.","commit_id":"e7159ad195215af7f67026df03622a843534aecd"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"064b9515b4614c95b7ff5014c42fa8aa7d3d9cd6","unresolved":false,"context_lines":[{"line_number":106,"context_line":"               help\u003d\u0027Path to a Quobyte Client configuration file.\u0027),"},{"line_number":107,"context_line":"    cfg.StrOpt(\u0027iscsi_iface\u0027,"},{"line_number":108,"context_line":"               deprecated_name\u003d\u0027iscsi_transport\u0027,"},{"line_number":109,"context_line":"               choices\u003d(None, \u0027be2iscsi\u0027, \u0027bnx2i\u0027, \u0027cxgb3i\u0027, \u0027cxgb4i\u0027,"},{"line_number":110,"context_line":"                        \u0027qla4xxx\u0027, \u0027ocs\u0027),"},{"line_number":111,"context_line":"               help\u003d\u0027The iSCSI transport iface to use to connect to target in \u0027"},{"line_number":112,"context_line":"                    \u0027case offload support is desired. Default format is \u0027"}],"source_content_type":"text/x-python","patch_set":30,"id":"5afe65bd_f162f3ac","line":109,"in_reply_to":"5afe65bd_392077f7","updated":"2015-06-01 19:19:54.000000000","message":"Done","commit_id":"e7159ad195215af7f67026df03622a843534aecd"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"edc0a8679dc1a4c9e888a82b4e3ce7a98e3bff8b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"               help\u003d\u0027Path to a Quobyte Client configuration file.\u0027),"},{"line_number":107,"context_line":"    cfg.StrOpt(\u0027iscsi_iface\u0027,"},{"line_number":108,"context_line":"               deprecated_name\u003d\u0027iscsi_transport\u0027,"},{"line_number":109,"context_line":"               choices\u003d(None, \u0027be2iscsi\u0027, \u0027bnx2i\u0027, \u0027cxgb3i\u0027, \u0027cxgb4i\u0027,"},{"line_number":110,"context_line":"                        \u0027qla4xxx\u0027, \u0027ocs\u0027),"},{"line_number":111,"context_line":"               help\u003d\u0027The iSCSI transport iface to use to connect to target in \u0027"},{"line_number":112,"context_line":"                    \u0027case offload support is desired. Default format is \u0027"}],"source_content_type":"text/x-python","patch_set":30,"id":"5afe65bd_141a226f","line":109,"in_reply_to":"5afe65bd_392077f7","updated":"2015-06-01 17:22:22.000000000","message":"If its required here, then I would have thought many of the other options would require it too, as they have no default value set and are permitted to be left unset too.","commit_id":"e7159ad195215af7f67026df03622a843534aecd"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"db4f4d47a9f16bae12941942b5c399fd17b97bfb","unresolved":false,"context_lines":[{"line_number":106,"context_line":"               help\u003d\u0027Path to a Quobyte Client configuration file.\u0027),"},{"line_number":107,"context_line":"    cfg.StrOpt(\u0027iscsi_iface\u0027,"},{"line_number":108,"context_line":"               deprecated_name\u003d\u0027iscsi_transport\u0027,"},{"line_number":109,"context_line":"               choices\u003d(None, \u0027be2iscsi\u0027, \u0027bnx2i\u0027, \u0027cxgb3i\u0027, \u0027cxgb4i\u0027,"},{"line_number":110,"context_line":"                        \u0027qla4xxx\u0027, \u0027ocs\u0027),"},{"line_number":111,"context_line":"               help\u003d\u0027The iSCSI transport iface to use to connect to target in \u0027"},{"line_number":112,"context_line":"                    \u0027case offload support is desired. Default format is \u0027"}],"source_content_type":"text/x-python","patch_set":30,"id":"5afe65bd_392077f7","line":109,"in_reply_to":"5afe65bd_a5e79eab","updated":"2015-06-01 17:13:07.000000000","message":"As I recall (its been a while), it was required.  Let me rerun tox without it.","commit_id":"e7159ad195215af7f67026df03622a843534aecd"}],"nova/virt/xenapi/vm_utils.py":[{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"453dbcbf12a3ee50267af95201a65add39fc100d","unresolved":false,"context_lines":[{"line_number":1309,"context_line":"            cache \u003d False"},{"line_number":1310,"context_line":"    elif cache_images \u003d\u003d \u0027none\u0027:"},{"line_number":1311,"context_line":"        cache \u003d False"},{"line_number":1312,"context_line":"    else:"},{"line_number":1313,"context_line":"        LOG.warning(_LW(\"Unrecognized cache_images value \u0027%s\u0027, defaulting to\""},{"line_number":1314,"context_line":"                        \" True\"), CONF.xenserver.cache_images)"},{"line_number":1315,"context_line":"        cache \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_4ebd2002","line":1312,"updated":"2015-02-27 14:36:51.000000000","message":"is this branch still needed?","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"6ea2c48739e9a18204a5a2378d457ccd2c9376a9","unresolved":false,"context_lines":[{"line_number":1309,"context_line":"            cache \u003d False"},{"line_number":1310,"context_line":"    elif cache_images \u003d\u003d \u0027none\u0027:"},{"line_number":1311,"context_line":"        cache \u003d False"},{"line_number":1312,"context_line":"    else:"},{"line_number":1313,"context_line":"        LOG.warning(_LW(\"Unrecognized cache_images value \u0027%s\u0027, defaulting to\""},{"line_number":1314,"context_line":"                        \" True\"), CONF.xenserver.cache_images)"},{"line_number":1315,"context_line":"        cache \u003d True"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_70e0e8cc","line":1312,"in_reply_to":"ba7be1f8_4ebd2002","updated":"2015-02-27 23:07:17.000000000","message":"Done","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"453dbcbf12a3ee50267af95201a65add39fc100d","unresolved":false,"context_lines":[{"line_number":1385,"context_line":"            pass"},{"line_number":1386,"context_line":"    elif torrent_images \u003d\u003d \u0027none\u0027:"},{"line_number":1387,"context_line":"        pass"},{"line_number":1388,"context_line":"    else:"},{"line_number":1389,"context_line":"        LOG.warning(_LW(\"Invalid value \u0027%s\u0027 for torrent_images\"),"},{"line_number":1390,"context_line":"                    torrent_images)"},{"line_number":1391,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_8e3638b3","line":1388,"updated":"2015-02-27 14:36:51.000000000","message":"is this branch still needed?","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"6ea2c48739e9a18204a5a2378d457ccd2c9376a9","unresolved":false,"context_lines":[{"line_number":1385,"context_line":"            pass"},{"line_number":1386,"context_line":"    elif torrent_images \u003d\u003d \u0027none\u0027:"},{"line_number":1387,"context_line":"        pass"},{"line_number":1388,"context_line":"    else:"},{"line_number":1389,"context_line":"        LOG.warning(_LW(\"Invalid value \u0027%s\u0027 for torrent_images\"),"},{"line_number":1390,"context_line":"                    torrent_images)"},{"line_number":1391,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba7be1f8_10db2c1c","line":1388,"in_reply_to":"ba7be1f8_8e3638b3","updated":"2015-02-27 23:07:17.000000000","message":"Done","commit_id":"4ccf82e08bd6fce67a4c76a804de84a042a276a4"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"24d05e1ee9ca8f2ab795bd836a99d6204055bac0","unresolved":false,"context_lines":[{"line_number":1379,"context_line":"                sys_meta[\u0027image_bittorrent\u0027])"},{"line_number":1380,"context_line":"        except KeyError:"},{"line_number":1381,"context_line":"            pass"},{"line_number":1382,"context_line":"    else: # none"},{"line_number":1383,"context_line":"        pass"},{"line_number":1384,"context_line":""},{"line_number":1385,"context_line":"    return bittorrent"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_17595b5b","line":1382,"updated":"2015-02-28 07:48:33.000000000","message":"you colud just delete this","commit_id":"401605a87732bea021943c70ceedd309d2d431a1"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"f75355fcfb6acebf4a40fb947eff35406e933e7f","unresolved":false,"context_lines":[{"line_number":1379,"context_line":"                sys_meta[\u0027image_bittorrent\u0027])"},{"line_number":1380,"context_line":"        except KeyError:"},{"line_number":1381,"context_line":"            pass"},{"line_number":1382,"context_line":"    else: # none"},{"line_number":1383,"context_line":"        pass"},{"line_number":1384,"context_line":""},{"line_number":1385,"context_line":"    return bittorrent"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba7be1f8_39e2a201","line":1382,"in_reply_to":"ba7be1f8_17595b5b","updated":"2015-03-02 18:11:46.000000000","message":"Done","commit_id":"401605a87732bea021943c70ceedd309d2d431a1"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"6b6fdbfe33cd872a53d746ea046c19d97da5c830","unresolved":false,"context_lines":[{"line_number":1311,"context_line":"    else:"},{"line_number":1312,"context_line":"        LOG.warning(_LW(\"Unrecognized cache_images value \u0027%s\u0027, defaulting to\""},{"line_number":1313,"context_line":"                        \" True\"), CONF.xenserver.cache_images)"},{"line_number":1314,"context_line":"        cache \u003d True"},{"line_number":1315,"context_line":""},{"line_number":1316,"context_line":"    # Fetch (and cache) the image"},{"line_number":1317,"context_line":"    start_time \u003d timeutils.utcnow()"}],"source_content_type":"text/x-python","patch_set":25,"id":"9a0c5dc1_0ddbfa7d","side":"PARENT","line":1314,"updated":"2015-05-13 08:49:31.000000000","message":"Again I don\u0027t like us removing this safety net","commit_id":"2a5b1db132a9ae6c0b37f8e1854d7e23991720a4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"661157d255a1cf0f7a3591d82b037ab6c609ab16","unresolved":false,"context_lines":[{"line_number":1311,"context_line":"    else:"},{"line_number":1312,"context_line":"        LOG.warning(_LW(\"Unrecognized cache_images value \u0027%s\u0027, defaulting to\""},{"line_number":1313,"context_line":"                        \" True\"), CONF.xenserver.cache_images)"},{"line_number":1314,"context_line":"        cache \u003d True"},{"line_number":1315,"context_line":""},{"line_number":1316,"context_line":"    # Fetch (and cache) the image"},{"line_number":1317,"context_line":"    start_time \u003d timeutils.utcnow()"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a016987_4d104d57","side":"PARENT","line":1314,"in_reply_to":"9a0c5dc1_0ddbfa7d","updated":"2015-05-21 18:41:25.000000000","message":"Done","commit_id":"2a5b1db132a9ae6c0b37f8e1854d7e23991720a4"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"6b6fdbfe33cd872a53d746ea046c19d97da5c830","unresolved":false,"context_lines":[{"line_number":1386,"context_line":"        pass"},{"line_number":1387,"context_line":"    else:"},{"line_number":1388,"context_line":"        LOG.warning(_LW(\"Invalid value \u0027%s\u0027 for torrent_images\"),"},{"line_number":1389,"context_line":"                    torrent_images)"},{"line_number":1390,"context_line":""},{"line_number":1391,"context_line":"    return bittorrent"},{"line_number":1392,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"9a0c5dc1_ede7863e","side":"PARENT","line":1389,"updated":"2015-05-13 08:49:31.000000000","message":"Same.","commit_id":"2a5b1db132a9ae6c0b37f8e1854d7e23991720a4"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"661157d255a1cf0f7a3591d82b037ab6c609ab16","unresolved":false,"context_lines":[{"line_number":1386,"context_line":"        pass"},{"line_number":1387,"context_line":"    else:"},{"line_number":1388,"context_line":"        LOG.warning(_LW(\"Invalid value \u0027%s\u0027 for torrent_images\"),"},{"line_number":1389,"context_line":"                    torrent_images)"},{"line_number":1390,"context_line":""},{"line_number":1391,"context_line":"    return bittorrent"},{"line_number":1392,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7a016987_780bc924","side":"PARENT","line":1389,"in_reply_to":"9a0c5dc1_ede7863e","updated":"2015-05-21 18:41:25.000000000","message":"Done","commit_id":"2a5b1db132a9ae6c0b37f8e1854d7e23991720a4"}]}
