)]}'
{"nova/tests/virt/libvirt/test_driver.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"26a77d46d44beeca2701fad2ebd4385b881d0f3c","unresolved":false,"context_lines":[{"line_number":7184,"context_line":"        diags_time \u003d datetime.datetime(2012, 11, 22, 12, 00, 10)"},{"line_number":7185,"context_line":"        timeutils.set_time_override(diags_time)"},{"line_number":7186,"context_line":""},{"line_number":7187,"context_line":"        actual \u003d conn.get_instance_diagnostics({\"name\": \"testvirt\","},{"line_number":7188,"context_line":"                                                \"launched_at\": lt})"},{"line_number":7189,"context_line":"        expected \u003d {\u0027config_drive\u0027: False,"},{"line_number":7190,"context_line":"                    \u0027cpu_details\u0027: [{\u0027time\u0027: 15340000000L},"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_c2a96e91","line":7187,"updated":"2014-08-21 15:45:40.000000000","message":"I would prefer separate test methods for each new call to things like this, but I don\u0027t want to block this any longer.","commit_id":"f9b5dba7b0612222b20a1d63f494b85c63c0e47e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"26a77d46d44beeca2701fad2ebd4385b881d0f3c","unresolved":false,"context_lines":[{"line_number":7187,"context_line":"        actual \u003d conn.get_instance_diagnostics({\"name\": \"testvirt\","},{"line_number":7188,"context_line":"                                                \"launched_at\": lt})"},{"line_number":7189,"context_line":"        expected \u003d {\u0027config_drive\u0027: False,"},{"line_number":7190,"context_line":"                    \u0027cpu_details\u0027: [{\u0027time\u0027: 15340000000L},"},{"line_number":7191,"context_line":"                                    {\u0027time\u0027: 1640000000L},"},{"line_number":7192,"context_line":"                                    {\u0027time\u0027: 3040000000L},"},{"line_number":7193,"context_line":"                                    {\u0027time\u0027: 1420000000L}],"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_823936a6","line":7190,"updated":"2014-08-21 15:45:40.000000000","message":"I don\u0027t like the repeated code like this in tests, but its a minor style thing really.","commit_id":"f9b5dba7b0612222b20a1d63f494b85c63c0e47e"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"b454f2ac24f6db2d4c417528caff5496ef3b45ba","unresolved":false,"context_lines":[{"line_number":4873,"context_line":"            pass"},{"line_number":4874,"context_line":"        return output"},{"line_number":4875,"context_line":""},{"line_number":4876,"context_line":"    def get_instance_diagnostics(self, instance, common_api\u003dTrue):"},{"line_number":4877,"context_line":"        domain \u003d self._lookup_by_name(instance[\u0027name\u0027])"},{"line_number":4878,"context_line":"        (state, max_mem, mem, num_cpu, cpu_time) \u003d domain.info()"},{"line_number":4879,"context_line":"        output \u003d {\u0027driver\u0027: \u0027libvirt\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B7I0%3D","line":4876,"updated":"2014-01-20 17:54:21.000000000","message":"The \u0027common_api\u0027 parameter should have gone away now we\u0027ve split the APIs.","commit_id":"70d6c002f23d28a833aca30082ea5e7e9e409759"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"7ecf5063a1ef367229a6275b2159165a47b2296c","unresolved":false,"context_lines":[{"line_number":4873,"context_line":"            pass"},{"line_number":4874,"context_line":"        return output"},{"line_number":4875,"context_line":""},{"line_number":4876,"context_line":"    def get_instance_diagnostics(self, instance, common_api\u003dTrue):"},{"line_number":4877,"context_line":"        domain \u003d self._lookup_by_name(instance[\u0027name\u0027])"},{"line_number":4878,"context_line":"        (state, max_mem, mem, num_cpu, cpu_time) \u003d domain.info()"},{"line_number":4879,"context_line":"        output \u003d {\u0027driver\u0027: \u0027libvirt\u0027,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B6%2Bw%3D","line":4876,"in_reply_to":"AAAAUH%2F%2B7I0%3D","updated":"2014-01-20 18:20:44.000000000","message":"true - copy paste. sorry","commit_id":"70d6c002f23d28a833aca30082ea5e7e9e409759"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"b454f2ac24f6db2d4c417528caff5496ef3b45ba","unresolved":false,"context_lines":[{"line_number":4931,"context_line":"                                                  \u0027tx_packets\u0027: stats[5]})"},{"line_number":4932,"context_line":"            except libvirt.libvirtError:"},{"line_number":4933,"context_line":"                pass"},{"line_number":4934,"context_line":"        output[\u0027memory_details\u0027][\u0027maximum\u0027] \u003d domain.maxMemory()"},{"line_number":4935,"context_line":"        if mem:"},{"line_number":4936,"context_line":"            output[\u0027memory_details\u0027][\u0027used\u0027] \u003d mem"},{"line_number":4937,"context_line":"        # memoryStats might launch an exception if the method"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B7IM%3D","line":4934,"updated":"2014-01-20 17:54:21.000000000","message":"Why not use the \u0027max_mem\u0027 value already obtained earlier ?","commit_id":"70d6c002f23d28a833aca30082ea5e7e9e409759"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"7ecf5063a1ef367229a6275b2159165a47b2296c","unresolved":false,"context_lines":[{"line_number":4931,"context_line":"                                                  \u0027tx_packets\u0027: stats[5]})"},{"line_number":4932,"context_line":"            except libvirt.libvirtError:"},{"line_number":4933,"context_line":"                pass"},{"line_number":4934,"context_line":"        output[\u0027memory_details\u0027][\u0027maximum\u0027] \u003d domain.maxMemory()"},{"line_number":4935,"context_line":"        if mem:"},{"line_number":4936,"context_line":"            output[\u0027memory_details\u0027][\u0027used\u0027] \u003d mem"},{"line_number":4937,"context_line":"        # memoryStats might launch an exception if the method"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B6%2Bs%3D","line":4934,"in_reply_to":"AAAAUH%2F%2B7IM%3D","updated":"2014-01-20 18:20:44.000000000","message":"Done","commit_id":"70d6c002f23d28a833aca30082ea5e7e9e409759"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"b454f2ac24f6db2d4c417528caff5496ef3b45ba","unresolved":false,"context_lines":[{"line_number":4932,"context_line":"            except libvirt.libvirtError:"},{"line_number":4933,"context_line":"                pass"},{"line_number":4934,"context_line":"        output[\u0027memory_details\u0027][\u0027maximum\u0027] \u003d domain.maxMemory()"},{"line_number":4935,"context_line":"        if mem:"},{"line_number":4936,"context_line":"            output[\u0027memory_details\u0027][\u0027used\u0027] \u003d mem"},{"line_number":4937,"context_line":"        # memoryStats might launch an exception if the method"},{"line_number":4938,"context_line":"        # is not supported by the underlying hypervisor being"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B7Ic%3D","line":4935,"updated":"2014-01-20 17:54:21.000000000","message":"Why make this conditional - AFAIK, it should be non-zero on all libvirt drivers.","commit_id":"70d6c002f23d28a833aca30082ea5e7e9e409759"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"7ecf5063a1ef367229a6275b2159165a47b2296c","unresolved":false,"context_lines":[{"line_number":4932,"context_line":"            except libvirt.libvirtError:"},{"line_number":4933,"context_line":"                pass"},{"line_number":4934,"context_line":"        output[\u0027memory_details\u0027][\u0027maximum\u0027] \u003d domain.maxMemory()"},{"line_number":4935,"context_line":"        if mem:"},{"line_number":4936,"context_line":"            output[\u0027memory_details\u0027][\u0027used\u0027] \u003d mem"},{"line_number":4937,"context_line":"        # memoryStats might launch an exception if the method"},{"line_number":4938,"context_line":"        # is not supported by the underlying hypervisor being"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B6%2Bk%3D","line":4935,"in_reply_to":"AAAAUH%2F%2B7Ic%3D","updated":"2014-01-20 18:20:44.000000000","message":"Done","commit_id":"70d6c002f23d28a833aca30082ea5e7e9e409759"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"b454f2ac24f6db2d4c417528caff5496ef3b45ba","unresolved":false,"context_lines":[{"line_number":4938,"context_line":"        # is not supported by the underlying hypervisor being"},{"line_number":4939,"context_line":"        # used by libvirt"},{"line_number":4940,"context_line":"        try:"},{"line_number":4941,"context_line":"            mem \u003d domain.memoryStats()"},{"line_number":4942,"context_line":"            for key in mem.keys():"},{"line_number":4943,"context_line":"                raw[\"memory-\" + key] \u003d mem[key]"},{"line_number":4944,"context_line":"        except (libvirt.libvirtError, AttributeError):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B7H4%3D","line":4941,"updated":"2014-01-20 17:54:21.000000000","message":"Slightly confusing to be overriding the earlier \u0027mem\u0027 variable with completely different data.","commit_id":"70d6c002f23d28a833aca30082ea5e7e9e409759"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"7ecf5063a1ef367229a6275b2159165a47b2296c","unresolved":false,"context_lines":[{"line_number":4938,"context_line":"        # is not supported by the underlying hypervisor being"},{"line_number":4939,"context_line":"        # used by libvirt"},{"line_number":4940,"context_line":"        try:"},{"line_number":4941,"context_line":"            mem \u003d domain.memoryStats()"},{"line_number":4942,"context_line":"            for key in mem.keys():"},{"line_number":4943,"context_line":"                raw[\"memory-\" + key] \u003d mem[key]"},{"line_number":4944,"context_line":"        except (libvirt.libvirtError, AttributeError):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B6%2BA%3D","line":4941,"in_reply_to":"AAAAUH%2F%2B7H4%3D","updated":"2014-01-20 18:20:44.000000000","message":"Done","commit_id":"70d6c002f23d28a833aca30082ea5e7e9e409759"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"b454f2ac24f6db2d4c417528caff5496ef3b45ba","unresolved":false,"context_lines":[{"line_number":4940,"context_line":"        try:"},{"line_number":4941,"context_line":"            mem \u003d domain.memoryStats()"},{"line_number":4942,"context_line":"            for key in mem.keys():"},{"line_number":4943,"context_line":"                raw[\"memory-\" + key] \u003d mem[key]"},{"line_number":4944,"context_line":"        except (libvirt.libvirtError, AttributeError):"},{"line_number":4945,"context_line":"            pass"},{"line_number":4946,"context_line":"        if raw:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B7Hk%3D","line":4943,"updated":"2014-01-20 17:54:21.000000000","message":"NB, libvirt may add new keys at any time so if we want to be strict about complying with the openstack API permitted keys, we should not rely on  iterating over mem.keys().","commit_id":"70d6c002f23d28a833aca30082ea5e7e9e409759"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"7ecf5063a1ef367229a6275b2159165a47b2296c","unresolved":false,"context_lines":[{"line_number":4940,"context_line":"        try:"},{"line_number":4941,"context_line":"            mem \u003d domain.memoryStats()"},{"line_number":4942,"context_line":"            for key in mem.keys():"},{"line_number":4943,"context_line":"                raw[\"memory-\" + key] \u003d mem[key]"},{"line_number":4944,"context_line":"        except (libvirt.libvirtError, AttributeError):"},{"line_number":4945,"context_line":"            pass"},{"line_number":4946,"context_line":"        if raw:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUH%2F%2B6%2BU%3D","line":4943,"in_reply_to":"AAAAUH%2F%2B7Hk%3D","updated":"2014-01-20 18:20:44.000000000","message":"this is the advantage of the raw data - it will display whatever libvirt provides","commit_id":"70d6c002f23d28a833aca30082ea5e7e9e409759"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"3108a7fb694c09018dd0c3846b8496d40d2796e2","unresolved":false,"context_lines":[{"line_number":5003,"context_line":"        try:"},{"line_number":5004,"context_line":"            memory_stats \u003d domain.memoryStats()"},{"line_number":5005,"context_line":"            driver_private_data[\u0027memory\u0027] \u003d memory_stats"},{"line_number":5006,"context_line":"        except (libvirt.libvirtError, AttributeError):"},{"line_number":5007,"context_line":"            pass"},{"line_number":5008,"context_line":"        if driver_private_data:"},{"line_number":5009,"context_line":"            output[\u0027driver_private_data\u0027] \u003d driver_private_data"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2FZb0%3D","line":5006,"updated":"2014-02-13 14:10:59.000000000","message":"What about to add a log debug? I actually think I have a problem to get memory informations.","commit_id":"5db04d233636a69b347bc431a4774f497edb52bc"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8d091feb78cad616f397cc2bac8493cede2e8ae5","unresolved":false,"context_lines":[{"line_number":5012,"context_line":"        # is not supported by the underlying hypervisor being"},{"line_number":5013,"context_line":"        # used by libvirt"},{"line_number":5014,"context_line":"        try:"},{"line_number":5015,"context_line":"            memory_stats \u003d domain.memoryStats()"},{"line_number":5016,"context_line":"            driver_private_data[\u0027memory\u0027] \u003d memory_stats"},{"line_number":5017,"context_line":"        except (libvirt.libvirtError, AttributeError):"},{"line_number":5018,"context_line":"            LOG.debug(_(\u0027Unable to get memory statistics\u0027))"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAAUX%2F%2BlDY%3D","line":5015,"updated":"2014-02-20 12:03:42.000000000","message":"with my version of libvirt memoryStats returns on empty dict.","commit_id":"605e949ccc86c0e5c4ee25d6b0bd33bfca562efc"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"82685667da92daf7b4491eb8b1a4f6cbd3715489","unresolved":false,"context_lines":[{"line_number":5182,"context_line":""},{"line_number":5183,"context_line":"    def get_instance_diagnostics(self, instance):"},{"line_number":5184,"context_line":"        domain \u003d self._lookup_by_name(instance[\u0027name\u0027])"},{"line_number":5185,"context_line":"        xml_doc \u003d etree.fromstring(domain.XMLDesc(0))"},{"line_number":5186,"context_line":""},{"line_number":5187,"context_line":"        (state, max_mem, mem, num_cpu, cpu_time) \u003d domain.info()"},{"line_number":5188,"context_line":"        diags \u003d diagnostics.Diagnostics(state\u003dpower_state.STATE_MAP[state],"}],"source_content_type":"text/x-python","patch_set":22,"id":"baada198_7ce09ccc","line":5185,"updated":"2014-07-10 11:53:54.000000000","message":"You\u0027re getting XML here....","commit_id":"df42447ac05127ffc800438a27f491fde00f50c0"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f910cadb39e26407b5fa3069d1c9e62b57cad68a","unresolved":false,"context_lines":[{"line_number":5182,"context_line":""},{"line_number":5183,"context_line":"    def get_instance_diagnostics(self, instance):"},{"line_number":5184,"context_line":"        domain \u003d self._lookup_by_name(instance[\u0027name\u0027])"},{"line_number":5185,"context_line":"        xml_doc \u003d etree.fromstring(domain.XMLDesc(0))"},{"line_number":5186,"context_line":""},{"line_number":5187,"context_line":"        (state, max_mem, mem, num_cpu, cpu_time) \u003d domain.info()"},{"line_number":5188,"context_line":"        diags \u003d diagnostics.Diagnostics(state\u003dpower_state.STATE_MAP[state],"}],"source_content_type":"text/x-python","patch_set":22,"id":"baada198_cfe64c16","line":5185,"in_reply_to":"baada198_7ce09ccc","updated":"2014-07-10 12:51:40.000000000","message":"Done","commit_id":"df42447ac05127ffc800438a27f491fde00f50c0"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"82685667da92daf7b4491eb8b1a4f6cbd3715489","unresolved":false,"context_lines":[{"line_number":5201,"context_line":"        except libvirt.libvirtError:"},{"line_number":5202,"context_line":"            pass"},{"line_number":5203,"context_line":"        # get io status"},{"line_number":5204,"context_line":"        xml \u003d domain.XMLDesc(0)"},{"line_number":5205,"context_line":"        dom_io \u003d LibvirtDriver._get_io_devices(xml)"},{"line_number":5206,"context_line":"        for disk in dom_io[\"volumes\"]:"},{"line_number":5207,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"baada198_bcea34aa","line":5204,"updated":"2014-07-10 11:53:54.000000000","message":"And then getting the exact same XML again...","commit_id":"df42447ac05127ffc800438a27f491fde00f50c0"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f910cadb39e26407b5fa3069d1c9e62b57cad68a","unresolved":false,"context_lines":[{"line_number":5201,"context_line":"        except libvirt.libvirtError:"},{"line_number":5202,"context_line":"            pass"},{"line_number":5203,"context_line":"        # get io status"},{"line_number":5204,"context_line":"        xml \u003d domain.XMLDesc(0)"},{"line_number":5205,"context_line":"        dom_io \u003d LibvirtDriver._get_io_devices(xml)"},{"line_number":5206,"context_line":"        for disk in dom_io[\"volumes\"]:"},{"line_number":5207,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":22,"id":"baada198_efe150fd","line":5204,"in_reply_to":"baada198_bcea34aa","updated":"2014-07-10 12:51:40.000000000","message":"Done","commit_id":"df42447ac05127ffc800438a27f491fde00f50c0"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"1941c940c65d5edc565205d8c7415674455ccc36","unresolved":false,"context_lines":[{"line_number":5416,"context_line":"            pass"},{"line_number":5417,"context_line":"        # get io status"},{"line_number":5418,"context_line":"        dom_io \u003d LibvirtDriver._get_io_devices(xml)"},{"line_number":5419,"context_line":"        for disk in dom_io[\"volumes\"]:"},{"line_number":5420,"context_line":"            try:"},{"line_number":5421,"context_line":"                # blockStats might launch an exception if the method"},{"line_number":5422,"context_line":"                # is not supported by the underlying hypervisor being"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_fdc11882","line":5419,"updated":"2014-07-23 09:28:58.000000000","message":"This is causing the pep8 fail. The old diagnostics method used \u0027guest_disk\u0027 as a variable name, presumably to avoid this issue.","commit_id":"99d8651ca738bebfb3753446c008a1019df4285b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"717a903a1648104cf93023d827ce0d46ba1c5c47","unresolved":false,"context_lines":[{"line_number":5416,"context_line":"            pass"},{"line_number":5417,"context_line":"        # get io status"},{"line_number":5418,"context_line":"        dom_io \u003d LibvirtDriver._get_io_devices(xml)"},{"line_number":5419,"context_line":"        for disk in dom_io[\"volumes\"]:"},{"line_number":5420,"context_line":"            try:"},{"line_number":5421,"context_line":"                # blockStats might launch an exception if the method"},{"line_number":5422,"context_line":"                # is not supported by the underlying hypervisor being"}],"source_content_type":"text/x-python","patch_set":25,"id":"baada198_355c80f0","line":5419,"in_reply_to":"baada198_fdc11882","updated":"2014-07-23 12:56:06.000000000","message":"Done","commit_id":"99d8651ca738bebfb3753446c008a1019df4285b"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"26a77d46d44beeca2701fad2ebd4385b881d0f3c","unresolved":false,"context_lines":[{"line_number":5423,"context_line":"                # blockStats might launch an exception if the method"},{"line_number":5424,"context_line":"                # is not supported by the underlying hypervisor being"},{"line_number":5425,"context_line":"                # used by libvirt"},{"line_number":5426,"context_line":"                stats \u003d domain.blockStats(guest_disk)"},{"line_number":5427,"context_line":"                diags.add_disk(read_bytes\u003dstats[1],"},{"line_number":5428,"context_line":"                               read_requests\u003dstats[0],"},{"line_number":5429,"context_line":"                               write_bytes\u003dstats[3],"}],"source_content_type":"text/x-python","patch_set":26,"id":"1abeadc6_62ec1af4","line":5426,"updated":"2014-08-21 15:45:40.000000000","message":"this feels brittle, but I guess its just how that works.","commit_id":"f9b5dba7b0612222b20a1d63f494b85c63c0e47e"}]}
