)]}'
{"nova/virt/libvirt/config.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"df7a7405b162038d4979255e7492a538169e474d","unresolved":false,"context_lines":[{"line_number":746,"context_line":"        if (self.driver_name is not None or"},{"line_number":747,"context_line":"            self.driver_format is not None or"},{"line_number":748,"context_line":"            self.driver_cache is not None or"},{"line_number":749,"context_line":"            self.driver_discard is not None):"},{"line_number":750,"context_line":"            drv \u003d etree.Element(\"driver\")"},{"line_number":751,"context_line":"            if self.driver_name is not None:"},{"line_number":752,"context_line":"                drv.set(\"name\", self.driver_name)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_780b3b2c","line":749,"updated":"2016-08-24 15:53:58.000000000","message":"Unrelated change; while I won\u0027t -1 for it, consider reverting it anyway, just to reduce the distraction factor.","commit_id":"2397fa0d4e56b978f503c53a5857cad464b52b94"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"df7a7405b162038d4979255e7492a538169e474d","unresolved":false,"context_lines":[{"line_number":813,"context_line":""},{"line_number":814,"context_line":"        return dev"},{"line_number":815,"context_line":""},{"line_number":816,"context_line":"    def _get_data(self, element_name):"},{"line_number":817,"context_line":"        element \u003d etree.Element(element_name)"},{"line_number":818,"context_line":"        iotune \u003d ((self.disk_read_bytes_sec, \"read_bytes_sec\"),"},{"line_number":819,"context_line":"                  (self.disk_read_iops_sec, \"read_iops_sec\"),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_5b78f92b","line":816,"updated":"2016-08-24 15:53:58.000000000","message":"I don\u0027t like this swiss army knife style at all.  Consider generalizing it and passing in some sort of description, rather than an if-else tree wrapping for loops.  E.g.:\n\n    def _get_data(self, element_name, *pairs):\n        element \u003d etree.Element(element_name)\n        for attr, text_node in pairs:\n            value \u003d getattr(self, attr)\n            if value is not None:\n                element.append(self._text_node(text_node, value))\n        return element\n\nThen your call could look like:\n\n    iotune \u003d _get_data(\u0027iotune\u0027,\n        (\u0027disk_read_bytes_sec\u0027, \u0027read_bytes_sec\u0027),\n        …\n        (\u0027disk_total_iops_sec\u0027, \u0027total_iops_sec\u0027))\n\nAnother way of doing it would be to make the description a list, rather than a set of additional arguments, and the lists could be constants in the module.","commit_id":"2397fa0d4e56b978f503c53a5857cad464b52b94"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"df7a7405b162038d4979255e7492a538169e474d","unresolved":false,"context_lines":[{"line_number":1300,"context_line":"            dev.append(filter)"},{"line_number":1301,"context_line":""},{"line_number":1302,"context_line":"        def set_bandwidth(bandwidth, vif_bound, vif_average,"},{"line_number":1303,"context_line":"            vif_peak, vif_burst):"},{"line_number":1304,"context_line":"            if vif_average is not None:"},{"line_number":1305,"context_line":"                vif_bound \u003d etree.Element(vif_bound,"},{"line_number":1306,"context_line":"                average\u003dstr(vif_average))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_bbac8d8d","line":1303,"updated":"2016-08-24 15:53:58.000000000","message":"I\u0027d like this line aligned after the open parenthesis (femtonit)","commit_id":"2397fa0d4e56b978f503c53a5857cad464b52b94"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"4260a6e1c4437955aad1be47c3cb68d93880663f","unresolved":false,"context_lines":[{"line_number":815,"context_line":""},{"line_number":816,"context_line":"        return dev"},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"    def _get_data(self, element_name, add_type, pairs):"},{"line_number":819,"context_line":"        element \u003d etree.Element(element_name)"},{"line_number":820,"context_line":"        for data, text_node in pairs:"},{"line_number":821,"context_line":"            if data is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_1e90d3eb","line":818,"range":{"start_line":818,"start_character":8,"end_line":818,"end_character":55},"updated":"2016-08-29 07:58:09.000000000","message":"Function name is ambiguous, too generic. Also, parameter name \"add_type\" is not what the name suggests.","commit_id":"b0bb405a77b364c9c0719f2870aeaec2cc32d537"},{"author":{"_account_id":21239,"name":"Alex Szarka","email":"szarka@inf.u-szeged.hu","username":"xavvior"},"change_message_id":"b6ba39ec3f9e0b6947174bfe3bf10527a2c789e0","unresolved":false,"context_lines":[{"line_number":815,"context_line":""},{"line_number":816,"context_line":"        return dev"},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"    def _get_data(self, element_name, add_type, pairs):"},{"line_number":819,"context_line":"        element \u003d etree.Element(element_name)"},{"line_number":820,"context_line":"        for data, text_node in pairs:"},{"line_number":821,"context_line":"            if data is not None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_e421d9fc","line":818,"range":{"start_line":818,"start_character":8,"end_line":818,"end_character":55},"in_reply_to":"fa7ab95a_1e90d3eb","updated":"2016-08-29 09:04:28.000000000","message":"Done","commit_id":"b0bb405a77b364c9c0719f2870aeaec2cc32d537"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"4260a6e1c4437955aad1be47c3cb68d93880663f","unresolved":false,"context_lines":[{"line_number":818,"context_line":"    def _get_data(self, element_name, add_type, pairs):"},{"line_number":819,"context_line":"        element \u003d etree.Element(element_name)"},{"line_number":820,"context_line":"        for data, text_node in pairs:"},{"line_number":821,"context_line":"            if data is not None:"},{"line_number":822,"context_line":"                if add_type \u003d\u003d \u0027append\u0027:"},{"line_number":823,"context_line":"                    element.append(self._text_node(text_node, data))"},{"line_number":824,"context_line":"                elif add_type \u003d\u003d \u0027set\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_9eba236d","line":821,"range":{"start_line":821,"start_character":12,"end_line":821,"end_character":32},"updated":"2016-08-29 07:58:09.000000000","message":"This could be reversed:\n\n  if data is None:\n      continue","commit_id":"b0bb405a77b364c9c0719f2870aeaec2cc32d537"},{"author":{"_account_id":21239,"name":"Alex Szarka","email":"szarka@inf.u-szeged.hu","username":"xavvior"},"change_message_id":"b6ba39ec3f9e0b6947174bfe3bf10527a2c789e0","unresolved":false,"context_lines":[{"line_number":818,"context_line":"    def _get_data(self, element_name, add_type, pairs):"},{"line_number":819,"context_line":"        element \u003d etree.Element(element_name)"},{"line_number":820,"context_line":"        for data, text_node in pairs:"},{"line_number":821,"context_line":"            if data is not None:"},{"line_number":822,"context_line":"                if add_type \u003d\u003d \u0027append\u0027:"},{"line_number":823,"context_line":"                    element.append(self._text_node(text_node, data))"},{"line_number":824,"context_line":"                elif add_type \u003d\u003d \u0027set\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_041dddbc","line":821,"range":{"start_line":821,"start_character":12,"end_line":821,"end_character":32},"in_reply_to":"fa7ab95a_9eba236d","updated":"2016-08-29 09:04:28.000000000","message":"Done","commit_id":"b0bb405a77b364c9c0719f2870aeaec2cc32d537"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"4260a6e1c4437955aad1be47c3cb68d93880663f","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"            dev.append(filter)"},{"line_number":1281,"context_line":""},{"line_number":1282,"context_line":"        def set_bandwidth(bandwidth, vif_bound, vif_average,"},{"line_number":1283,"context_line":"                          vif_peak, vif_burst):"},{"line_number":1284,"context_line":"            if vif_average is not None:"},{"line_number":1285,"context_line":"                vif_bound \u003d etree.Element(vif_bound,"},{"line_number":1286,"context_line":"                                          average\u003dstr(vif_average))"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_b997018f","line":1283,"updated":"2016-08-29 07:58:09.000000000","message":"Is there any particular reason why this function is nested? I understand, that it is only used here, but it might be hard to test…","commit_id":"b0bb405a77b364c9c0719f2870aeaec2cc32d537"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"bd7c389c2743a7717e32a1fbee17f6ef4d7c5c52","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"            dev.append(filter)"},{"line_number":1281,"context_line":""},{"line_number":1282,"context_line":"        def set_bandwidth(bandwidth, vif_bound, vif_average,"},{"line_number":1283,"context_line":"                          vif_peak, vif_burst):"},{"line_number":1284,"context_line":"            if vif_average is not None:"},{"line_number":1285,"context_line":"                vif_bound \u003d etree.Element(vif_bound,"},{"line_number":1286,"context_line":"                                          average\u003dstr(vif_average))"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_b0ab8bd5","line":1283,"in_reply_to":"fa7ab95a_8471ede2","updated":"2016-08-29 09:49:47.000000000","message":"I have two reason for asking this question, first, nested functions might have an overhead, because function object will be created every each time outer function would be called, and second - testing.\n\nAs for the second, I doubt that all of Nova code is tested entirely, otherwise there would not be bugs. Providing unit test for single methods may reveal issues, that wasn\u0027t covered by original test - I see that as an important part of improvement code quality.","commit_id":"b0bb405a77b364c9c0719f2870aeaec2cc32d537"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"b31376646941c2c721747e437ad7183600633cb6","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"            dev.append(filter)"},{"line_number":1281,"context_line":""},{"line_number":1282,"context_line":"        def set_bandwidth(bandwidth, vif_bound, vif_average,"},{"line_number":1283,"context_line":"                          vif_peak, vif_burst):"},{"line_number":1284,"context_line":"            if vif_average is not None:"},{"line_number":1285,"context_line":"                vif_bound \u003d etree.Element(vif_bound,"},{"line_number":1286,"context_line":"                                          average\u003dstr(vif_average))"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_27d5781b","line":1283,"in_reply_to":"fa7ab95a_a6cc2e6b","updated":"2016-08-29 12:09:10.000000000","message":"Great, thanks.","commit_id":"b0bb405a77b364c9c0719f2870aeaec2cc32d537"},{"author":{"_account_id":21239,"name":"Alex Szarka","email":"szarka@inf.u-szeged.hu","username":"xavvior"},"change_message_id":"24287c3e69da450b48c143a4dc96814f60c07390","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"            dev.append(filter)"},{"line_number":1281,"context_line":""},{"line_number":1282,"context_line":"        def set_bandwidth(bandwidth, vif_bound, vif_average,"},{"line_number":1283,"context_line":"                          vif_peak, vif_burst):"},{"line_number":1284,"context_line":"            if vif_average is not None:"},{"line_number":1285,"context_line":"                vif_bound \u003d etree.Element(vif_bound,"},{"line_number":1286,"context_line":"                                          average\u003dstr(vif_average))"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_a6cc2e6b","line":1283,"in_reply_to":"fa7ab95a_b0ab8bd5","updated":"2016-08-29 11:19:12.000000000","message":"If have problem with the new methods, then the old(original) unit tests show the errors. But I\u0027ll check, that what to do with tests (if need do something)","commit_id":"b0bb405a77b364c9c0719f2870aeaec2cc32d537"},{"author":{"_account_id":21239,"name":"Alex Szarka","email":"szarka@inf.u-szeged.hu","username":"xavvior"},"change_message_id":"b6ba39ec3f9e0b6947174bfe3bf10527a2c789e0","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"            dev.append(filter)"},{"line_number":1281,"context_line":""},{"line_number":1282,"context_line":"        def set_bandwidth(bandwidth, vif_bound, vif_average,"},{"line_number":1283,"context_line":"                          vif_peak, vif_burst):"},{"line_number":1284,"context_line":"            if vif_average is not None:"},{"line_number":1285,"context_line":"                vif_bound \u003d etree.Element(vif_bound,"},{"line_number":1286,"context_line":"                                          average\u003dstr(vif_average))"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_8471ede2","line":1283,"in_reply_to":"fa7ab95a_b997018f","updated":"2016-08-29 09:04:28.000000000","message":"One reason have: reduce code complexity in caller method.\nLuckily no require write new test: the old unit tests perfect for test this.","commit_id":"b0bb405a77b364c9c0719f2870aeaec2cc32d537"},{"author":{"_account_id":13692,"name":"Roman Dobosz","email":"gryf73@gmail.com","username":"gryf"},"change_message_id":"4260a6e1c4437955aad1be47c3cb68d93880663f","unresolved":false,"context_lines":[{"line_number":1307,"context_line":""},{"line_number":1308,"context_line":"        return dev"},{"line_number":1309,"context_line":""},{"line_number":1310,"context_line":"    def _parse_dom_details(self, c, tag):"},{"line_number":1311,"context_line":"        if tag \u003d\u003d \u0027source\u0027:"},{"line_number":1312,"context_line":"            if self.net_type \u003d\u003d \u0027direct\u0027:"},{"line_number":1313,"context_line":"                self.source_dev \u003d c.get(\u0027dev\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_d947651b","line":1310,"updated":"2016-08-29 07:58:09.000000000","message":"I have an impression, that this method could be split into two","commit_id":"b0bb405a77b364c9c0719f2870aeaec2cc32d537"},{"author":{"_account_id":21239,"name":"Alex Szarka","email":"szarka@inf.u-szeged.hu","username":"xavvior"},"change_message_id":"b6ba39ec3f9e0b6947174bfe3bf10527a2c789e0","unresolved":false,"context_lines":[{"line_number":1307,"context_line":""},{"line_number":1308,"context_line":"        return dev"},{"line_number":1309,"context_line":""},{"line_number":1310,"context_line":"    def _parse_dom_details(self, c, tag):"},{"line_number":1311,"context_line":"        if tag \u003d\u003d \u0027source\u0027:"},{"line_number":1312,"context_line":"            if self.net_type \u003d\u003d \u0027direct\u0027:"},{"line_number":1313,"context_line":"                self.source_dev \u003d c.get(\u0027dev\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_2432e110","line":1310,"in_reply_to":"fa7ab95a_d947651b","updated":"2016-08-29 09:04:28.000000000","message":"Yes, i working on it.","commit_id":"b0bb405a77b364c9c0719f2870aeaec2cc32d537"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"3928ea4084e78d519a099c65592b021c2edea39b","unresolved":false,"context_lines":[{"line_number":751,"context_line":"                         (self.driver_format, \"type\"),"},{"line_number":752,"context_line":"                         (self.driver_cache, \"cache\"),"},{"line_number":753,"context_line":"                         (self.driver_discard, \"discard\"),"},{"line_number":754,"context_line":"                         (self.driver_io, \"io\"))"},{"line_number":755,"context_line":"            drv \u003d self._create_element(\"driver\", \"set\", drv_pairs)"},{"line_number":756,"context_line":"            dev.append(drv)"},{"line_number":757,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa7ab95a_aca316ff","line":754,"updated":"2016-08-29 17:14:15.000000000","message":"Would be nice to pull this out into the top-level scope, or even make it a class attribute, so the constant doesn\u0027t get created over and over.","commit_id":"9f26dbeeda24e25495be695a7e6e008f6461373c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"3928ea4084e78d519a099c65592b021c2edea39b","unresolved":false,"context_lines":[{"line_number":756,"context_line":"            dev.append(drv)"},{"line_number":757,"context_line":""},{"line_number":758,"context_line":"        if self.source_type \u003d\u003d \"file\":"},{"line_number":759,"context_line":"            dev.append(self._create_element(\"source\", file\u003dself.source_path))"},{"line_number":760,"context_line":"        elif self.source_type \u003d\u003d \"block\":"},{"line_number":761,"context_line":"            dev.append(self._create_element(\"source\", dev\u003dself.source_path))"},{"line_number":762,"context_line":"        elif self.source_type \u003d\u003d \"mount\":"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa7ab95a_6cebce13","line":759,"updated":"2016-08-29 17:14:15.000000000","message":"I would be surprised if \"file\" is a recognized keyword argument of etree.Element.","commit_id":"9f26dbeeda24e25495be695a7e6e008f6461373c"},{"author":{"_account_id":18603,"name":"Béla Vancsics","email":"vancsics@inf.u-szeged.hu","username":"vancsics"},"change_message_id":"cdc172a966f8ed9fe319beb876b56d9af0545be4","unresolved":false,"context_lines":[{"line_number":728,"context_line":"            self.driver_cache is not None or"},{"line_number":729,"context_line":"                self.driver_discard is not None):"},{"line_number":730,"context_line":"            drv \u003d etree.Element(\"driver\")"},{"line_number":731,"context_line":"            if self.driver_name is not None:"},{"line_number":732,"context_line":"                drv.set(\"name\", self.driver_name)"},{"line_number":733,"context_line":"            if self.driver_format is not None:"},{"line_number":734,"context_line":"                drv.set(\"type\", self.driver_format)"},{"line_number":735,"context_line":"            if self.driver_cache is not None:"},{"line_number":736,"context_line":"                drv.set(\"cache\", self.driver_cache)"},{"line_number":737,"context_line":"            if self.driver_discard is not None:"},{"line_number":738,"context_line":"                drv.set(\"discard\", self.driver_discard)"},{"line_number":739,"context_line":"            if self.driver_io is not None:"},{"line_number":740,"context_line":"                drv.set(\"io\", self.driver_io)"},{"line_number":741,"context_line":"            dev.append(drv)"},{"line_number":742,"context_line":""},{"line_number":743,"context_line":"        if self.source_type \u003d\u003d \"file\":"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a30ddce_6645dd6e","side":"PARENT","line":740,"range":{"start_line":731,"start_character":0,"end_line":740,"end_character":45},"updated":"2017-03-09 08:38:35.000000000","message":"This can be \"outsourced\" to a method.\nFor example:\n\ndef method_1(self, drv):\n   drv_pairs \u003d ((self.driver_name, \"name\"),\n                (self.driver_format, \"type\"),\n                (self.driver_cache, \"cache\"),\n                (self.driver_discard, \"discard\"),\n                (self.driver_io, \"io\"))\n\n   for value, attr in drv_pairs:\n      if value is not None:\n         drv.set(attr, value)\n\n---\u003e\n[...]\ndrv \u003d etree.Element(\"driver\")\nself.method_1(drv)\ndev.append(drv)\n[...]","commit_id":"0be6bdfc36e8b88e34cbe92164d14070572bf918"},{"author":{"_account_id":18603,"name":"Béla Vancsics","email":"vancsics@inf.u-szeged.hu","username":"vancsics"},"change_message_id":"cdc172a966f8ed9fe319beb876b56d9af0545be4","unresolved":false,"context_lines":[{"line_number":748,"context_line":"            dev.append(etree.Element(\"source\", dir\u003dself.source_path))"},{"line_number":749,"context_line":"        elif self.source_type \u003d\u003d \"network\" and self.source_protocol:"},{"line_number":750,"context_line":"            source \u003d etree.Element(\"source\", protocol\u003dself.source_protocol)"},{"line_number":751,"context_line":"            if self.source_name is not None:"},{"line_number":752,"context_line":"                source.set(\u0027name\u0027, self.source_name)"},{"line_number":753,"context_line":"            hosts_info \u003d zip(self.source_hosts, self.source_ports)"},{"line_number":754,"context_line":"            for name, port in hosts_info:"},{"line_number":755,"context_line":"                host \u003d etree.Element(\u0027host\u0027, name\u003dname)"},{"line_number":756,"context_line":"                if port is not None:"},{"line_number":757,"context_line":"                    host.set(\u0027port\u0027, port)"},{"line_number":758,"context_line":"                source.append(host)"},{"line_number":759,"context_line":"            dev.append(source)"},{"line_number":760,"context_line":""},{"line_number":761,"context_line":"        if self.auth_secret_type is not None:"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a30ddce_461c5977","side":"PARENT","line":758,"range":{"start_line":751,"start_character":0,"end_line":758,"end_character":35},"updated":"2017-03-09 08:38:35.000000000","message":"def method_2(self, source):\n   if self.source_name is not None:\n      source.set(\u0027name\u0027, self.source_name)\n      hosts_info \u003d zip(self.source_hosts, self.source_ports)\n      for name, port in hosts_info:\n         host \u003d etree.Element(\u0027host\u0027, name\u003dname)\n         if port is not None:\n            host.set(\u0027port\u0027, port)\n         source.append(host)\n---\u003e\n[...]\nsource \u003d etree.Element(\"source\", protocol\u003dself.source_protocol)\nself.method_2(source)\ndev.append(source)\n[...]","commit_id":"0be6bdfc36e8b88e34cbe92164d14070572bf918"},{"author":{"_account_id":18603,"name":"Béla Vancsics","email":"vancsics@inf.u-szeged.hu","username":"vancsics"},"change_message_id":"cdc172a966f8ed9fe319beb876b56d9af0545be4","unresolved":false,"context_lines":[{"line_number":775,"context_line":"            dev.append(self._text_node(\"serial\", self.serial))"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"        iotune \u003d etree.Element(\"iotune\")"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"        if self.disk_read_bytes_sec is not None:"},{"line_number":780,"context_line":"            iotune.append(self._text_node(\"read_bytes_sec\","},{"line_number":781,"context_line":"                self.disk_read_bytes_sec))"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"        if self.disk_read_iops_sec is not None:"},{"line_number":784,"context_line":"            iotune.append(self._text_node(\"read_iops_sec\","},{"line_number":785,"context_line":"                self.disk_read_iops_sec))"},{"line_number":786,"context_line":""},{"line_number":787,"context_line":"        if self.disk_write_bytes_sec is not None:"},{"line_number":788,"context_line":"            iotune.append(self._text_node(\"write_bytes_sec\","},{"line_number":789,"context_line":"                self.disk_write_bytes_sec))"},{"line_number":790,"context_line":""},{"line_number":791,"context_line":"        if self.disk_write_iops_sec is not None:"},{"line_number":792,"context_line":"            iotune.append(self._text_node(\"write_iops_sec\","},{"line_number":793,"context_line":"                self.disk_write_iops_sec))"},{"line_number":794,"context_line":""},{"line_number":795,"context_line":"        if self.disk_total_bytes_sec is not None:"},{"line_number":796,"context_line":"            iotune.append(self._text_node(\"total_bytes_sec\","},{"line_number":797,"context_line":"                self.disk_total_bytes_sec))"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"        if self.disk_total_iops_sec is not None:"},{"line_number":800,"context_line":"            iotune.append(self._text_node(\"total_iops_sec\","},{"line_number":801,"context_line":"                self.disk_total_iops_sec))"},{"line_number":802,"context_line":""},{"line_number":803,"context_line":"        if len(iotune) \u003e 0:"},{"line_number":804,"context_line":"            dev.append(iotune)"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a30ddce_4951ca0d","side":"PARENT","line":801,"range":{"start_line":778,"start_character":0,"end_line":801,"end_character":42},"updated":"2017-03-09 08:38:35.000000000","message":"def method_3(self, iotune):\n   if self.disk_read_bytes_sec is not None:\n      iotune.append(self._text_node(\"read_bytes_sec\",\n                self.disk_read_bytes_sec))\n\n   if self.disk_read_iops_sec is not None:\n      iotune.append(self._text_node(\"read_iops_sec\",\n                self.disk_read_iops_sec))\n\n   if self.disk_write_bytes_sec is not None:\n      iotune.append(self._text_node(\"write_bytes_sec\",\n                self.disk_write_bytes_sec))\n\n   if self.disk_write_iops_sec is not None:\n      iotune.append(self._text_node(\"write_iops_sec\",\n                self.disk_write_iops_sec))\n\n   if self.disk_total_bytes_sec is not None:\n      iotune.append(self._text_node(\"total_bytes_sec\",\n                self.disk_total_bytes_sec))\n\n   if self.disk_total_iops_sec is not None:\n      iotune.append(self._text_node(\"total_iops_sec\",\n                self.disk_total_iops_sec))\n---\u003e\n[...]\niotune \u003d etree.Element(\"iotune\")\nself.method_3(iotune)\nif len(iotune) \u003e 0:\n[...]","commit_id":"0be6bdfc36e8b88e34cbe92164d14070572bf918"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"54a5df132bd830385802b0f82fc6132732b013f9","unresolved":false,"context_lines":[{"line_number":772,"context_line":"            self.driver_cache is not None or"},{"line_number":773,"context_line":"                self.driver_discard is not None):"},{"line_number":774,"context_line":"            drv \u003d etree.Element(\"driver\")"},{"line_number":775,"context_line":"            self._set_driver_attributes(drv)"},{"line_number":776,"context_line":"            dev.append(drv)"},{"line_number":777,"context_line":""},{"line_number":778,"context_line":"        if self.source_type \u003d\u003d \"file\":"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a1ff146_9b9b2a72","line":775,"range":{"start_line":775,"start_character":17,"end_line":775,"end_character":39},"updated":"2017-03-16 10:03:00.000000000","message":"Would a consistent \u0027_configure_{element}\u0027 naming, e.g. \u0027_configure_driver\u0027, make these a little easier to parse?","commit_id":"e7f7b9d282e69f203b902f745cff9194670f2671"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"ed2b45d863d031396028d4b30e602b9a65f24218","unresolved":false,"context_lines":[{"line_number":738,"context_line":"                host.set(\u0027port\u0027, port)"},{"line_number":739,"context_line":"            source.append(host)"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"    def _iotune_appends(self, iotune):"},{"line_number":742,"context_line":"        if self.disk_read_bytes_sec is not None:"},{"line_number":743,"context_line":"            iotune.append(self._text_node(\"read_bytes_sec\","},{"line_number":744,"context_line":"                                          self.disk_read_bytes_sec))"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a1ff146_1ff63bd7","line":741,"range":{"start_line":741,"start_character":4,"end_line":741,"end_character":23},"updated":"2017-03-16 14:28:37.000000000","message":"Would it be possible to follow the pattern you used in _configure_driver? Something like this:\n\n    def _iotune_appends(self, iotune):\n        vals \u003d (\"read_bytes_sec\", \"read_iops_sec\", \"write_bytes_sec\",\n                \"write_iops_sec\", \"total_bytes_sec\", \"total_iops_sec\")\n        for val in vals:\n            att \u003d getattr(self, \"disk_%s\" % val)\n            if att is not None:\n                iotune.append(self._text_node(val, att))","commit_id":"cc73c116f48facf76c342bd464b7bfa2f5c0238c"}]}
