)]}'
{"nova/virt/libvirt/config.py":[{"author":{"_account_id":5280,"name":"Nicolas Simonds","email":"nic@metacloud.com","username":"nicolas.simonds"},"change_message_id":"b1c79e9495896f48b685ff75fd5e8c4a07c3dada","unresolved":false,"context_lines":[{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        dev.set(\"type\", self.source_type)"},{"line_number":747,"context_line":"        dev.set(\"device\", self.source_device)"},{"line_number":748,"context_line":"        if (self.driver_name is not None or"},{"line_number":749,"context_line":"            self.driver_format is not None or"},{"line_number":750,"context_line":"            self.driver_cache is not None or"},{"line_number":751,"context_line":"            self.driver_error_policy is not None or"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a710552_b373f37f","line":748,"updated":"2015-12-15 21:21:37.000000000","message":"This is getting silly.  How about:\n\n    if None not in (self.driver_name, self.driver_format, ...):\n\nor:\n\n    if any((self.driver_name, self.driver_format, ...)):\n\nor any of the other, far more readable and maintainable ways of doing this?","commit_id":"9ff93bee034ce633a24b2d17479eed3c694bdb5e"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"91df3864b443111284233a6d03bcb11ec337d43e","unresolved":false,"context_lines":[{"line_number":745,"context_line":""},{"line_number":746,"context_line":"        dev.set(\"type\", self.source_type)"},{"line_number":747,"context_line":"        dev.set(\"device\", self.source_device)"},{"line_number":748,"context_line":"        if (self.driver_name is not None or"},{"line_number":749,"context_line":"            self.driver_format is not None or"},{"line_number":750,"context_line":"            self.driver_cache is not None or"},{"line_number":751,"context_line":"            self.driver_error_policy is not None or"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a710552_3364e320","line":748,"in_reply_to":"5a710552_b373f37f","updated":"2015-12-15 21:30:47.000000000","message":"The first one won\u0027t work; this is checking to see if any of them are not None, and that checks if all of them are not None.\n\nI\u0027m not sure the second is really any more readable, TBH. It turns a simple A or B ... or E into:\n\n    if any(attr is not None\n           for attr in (self.driver_name, self.driver_format,\n                        self.driver_cache, self.driver_error_policy,\n                        self.driver_discard)):\n\nWe could rewrite this whole block into something like:\n\n    drv \u003d etree.Element(\"driver\")\n    for attr, value in [(\"name\", self.driver_name),\n                        (\"type\", self.driver_format),\n                        (\"cache\", self.driver_cache),\n                        (\"discard\", self.driver_discard),\n                        (\"error_policy\", self.driver_error_policy)]:\n        if value is not None:\n            drv.set(attr, value)\n    if len(drv.attrib):\n        dev.append(drv)\n\nReasonable?","commit_id":"9ff93bee034ce633a24b2d17479eed3c694bdb5e"}],"nova/virt/libvirt/imagebackend.py":[{"author":{"_account_id":11189,"name":"yuntongjin","email":"yuntong.jin@intel.com","username":"yuntong"},"change_message_id":"59a2b69c9bd875adff64e66aa293379d28496e46","unresolved":false,"context_lines":[{"line_number":68,"context_line":"               help\u003d\u0027Discard option for nova managed disks. Need\u0027"},{"line_number":69,"context_line":"                    \u0027 Libvirt(1.0.6) Qemu1.5 (raw format) Qemu1.6(qcow2\u0027"},{"line_number":70,"context_line":"                    \u0027 format)\u0027),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027io_error_policy\u0027,"},{"line_number":72,"context_line":"               choices\u003d(\u0027stop\u0027, \u0027report\u0027, \u0027ignore\u0027, \u0027enospace\u0027),"},{"line_number":73,"context_line":"               help\u003d\u0027Libvirt policy for handling disk read/write errors.\u0027),"},{"line_number":74,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_bf331961","line":71,"range":{"start_line":71,"start_character":15,"end_line":71,"end_character":32},"updated":"2016-02-02 03:16:03.000000000","message":"the read/write error can be set separately, and can be override error_policy.","commit_id":"46b3e04cefb74782ce334f6a268522e451604be5"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"9e9278d2fc87b95fdcb52bc8b6046cc140a0e712","unresolved":false,"context_lines":[{"line_number":68,"context_line":"               help\u003d\u0027Discard option for nova managed disks. Need\u0027"},{"line_number":69,"context_line":"                    \u0027 Libvirt(1.0.6) Qemu1.5 (raw format) Qemu1.6(qcow2\u0027"},{"line_number":70,"context_line":"                    \u0027 format)\u0027),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027io_error_policy\u0027,"},{"line_number":72,"context_line":"               choices\u003d(\u0027stop\u0027, \u0027report\u0027, \u0027ignore\u0027, \u0027enospace\u0027),"},{"line_number":73,"context_line":"               help\u003d\u0027Libvirt policy for handling disk read/write errors.\u0027),"},{"line_number":74,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_ba21cbb6","line":71,"range":{"start_line":71,"start_character":15,"end_line":71,"end_character":32},"in_reply_to":"7a5de9d1_bf331961","updated":"2016-02-02 14:26:48.000000000","message":"It can be, but until someone has an actual use case for that I\u0027d rather avoid premature optimization. If you have such a use case, please feel free to collaborate on this patch.","commit_id":"46b3e04cefb74782ce334f6a268522e451604be5"},{"author":{"_account_id":9581,"name":"Ren Qiaowei","email":"qiaowei.ren@intel.com","username":"qiaowei"},"change_message_id":"464a2ccba3f1ea40977270b3b91a8d74a9da39b9","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                    \u0027 Libvirt(1.0.6) Qemu1.5 (raw format) Qemu1.6(qcow2\u0027"},{"line_number":70,"context_line":"                    \u0027 format)\u0027),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027io_error_policy\u0027,"},{"line_number":72,"context_line":"               choices\u003d(\u0027stop\u0027, \u0027report\u0027, \u0027ignore\u0027, \u0027enospace\u0027),"},{"line_number":73,"context_line":"               help\u003d\u0027Libvirt policy for handling disk read/write errors.\u0027),"},{"line_number":74,"context_line":"        ]"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_798dc1d1","line":72,"range":{"start_line":72,"start_character":15,"end_line":72,"end_character":64},"updated":"2016-02-02 02:18:16.000000000","message":"the default policy is \"report\", and so I guess that we should have one \"default\" option.","commit_id":"46b3e04cefb74782ce334f6a268522e451604be5"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"9e9278d2fc87b95fdcb52bc8b6046cc140a0e712","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                    \u0027 Libvirt(1.0.6) Qemu1.5 (raw format) Qemu1.6(qcow2\u0027"},{"line_number":70,"context_line":"                    \u0027 format)\u0027),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027io_error_policy\u0027,"},{"line_number":72,"context_line":"               choices\u003d(\u0027stop\u0027, \u0027report\u0027, \u0027ignore\u0027, \u0027enospace\u0027),"},{"line_number":73,"context_line":"               help\u003d\u0027Libvirt policy for handling disk read/write errors.\u0027),"},{"line_number":74,"context_line":"        ]"},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_3a4e3b97","line":72,"range":{"start_line":72,"start_character":15,"end_line":72,"end_character":64},"in_reply_to":"7a5de9d1_798dc1d1","updated":"2016-02-02 14:26:48.000000000","message":"Done","commit_id":"46b3e04cefb74782ce334f6a268522e451604be5"},{"author":{"_account_id":11189,"name":"yuntongjin","email":"yuntong.jin@intel.com","username":"yuntong"},"change_message_id":"4f58543e2ab1728b804f2d7e7013dd277bbe26fb","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                    \u0027 format)\u0027),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027io_error_policy\u0027,"},{"line_number":72,"context_line":"               choices\u003d(\u0027stop\u0027, \u0027report\u0027, \u0027ignore\u0027, \u0027enospace\u0027),"},{"line_number":73,"context_line":"               help\u003d\u0027Libvirt policy for handling disk read/write errors.\u0027),"},{"line_number":74,"context_line":"        ]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_8428509b","line":73,"range":{"start_line":73,"start_character":14,"end_line":73,"end_character":75},"updated":"2016-02-02 02:50:30.000000000","message":"could be really helpful to have short summary on above choices.","commit_id":"46b3e04cefb74782ce334f6a268522e451604be5"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"9e9278d2fc87b95fdcb52bc8b6046cc140a0e712","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                    \u0027 format)\u0027),"},{"line_number":71,"context_line":"    cfg.StrOpt(\u0027io_error_policy\u0027,"},{"line_number":72,"context_line":"               choices\u003d(\u0027stop\u0027, \u0027report\u0027, \u0027ignore\u0027, \u0027enospace\u0027),"},{"line_number":73,"context_line":"               help\u003d\u0027Libvirt policy for handling disk read/write errors.\u0027),"},{"line_number":74,"context_line":"        ]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a5de9d1_9a5def4a","line":73,"range":{"start_line":73,"start_character":14,"end_line":73,"end_character":75},"in_reply_to":"7a5de9d1_8428509b","updated":"2016-02-02 14:26:48.000000000","message":"Done","commit_id":"46b3e04cefb74782ce334f6a268522e451604be5"}]}
