)]}'
{"nova/tests/unit/virt/xenapi/test_vmops.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"138c4bc940efd65a49c154743c57886a0a92ceef","unresolved":false,"context_lines":[{"line_number":756,"context_line":"    @mock.patch.object(volume_utils, \u0027find_sr_by_uuid\u0027,"},{"line_number":757,"context_line":"                       side_effect\u003d[None, \u0027sr_ref\u0027])"},{"line_number":758,"context_line":"    @mock.patch.object(volume_utils, \u0027forget_sr\u0027)"},{"line_number":759,"context_line":"    @mock.patch.object(uuid, \u0027uuid5\u0027, return_value\u003d\u0027fake-uuid\u0027)"},{"line_number":760,"context_line":"    def test_no_vm_orphaned_volume(self, uuid5, forget_sr,"},{"line_number":761,"context_line":"            find_sr_by_uuid, hard_shutdown_vm, lookup):"},{"line_number":762,"context_line":"        fake_data \u003d {\u0027volume_id\u0027: \u0027fake-uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_5038523d","line":759,"updated":"2016-01-08 19:00:25.000000000","message":"This is arguably over-stepping bounds for what this module should be testing, but it\u0027s simple enough.","commit_id":"5a14ade5bdf339a06a36cc3a27d8be3d68a4b558"}],"nova/tests/unit/virt/xenapi/test_volume_utils.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"138c4bc940efd65a49c154743c57886a0a92ceef","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def test_two_vdis_detach(self):"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_90980a1d","line":317,"range":{"start_line":317,"start_character":8,"end_line":317,"end_character":12},"updated":"2016-01-08 19:00:25.000000000","message":"I\u0027m confused, this isn\u0027t a test in the base class, so why is this stub here?","commit_id":"5a14ade5bdf339a06a36cc3a27d8be3d68a4b558"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"138c4bc940efd65a49c154743c57886a0a92ceef","unresolved":false,"context_lines":[{"line_number":1547,"context_line":"                                                              sr_uuid)"},{"line_number":1548,"context_line":"                except Exception:"},{"line_number":1549,"context_line":"                    LOG.exception(_LE(\u0027Failed to find an SR for volume %s\u0027),"},{"line_number":1550,"context_line":"                                  volume_id, instance\u003dinstance)"},{"line_number":1551,"context_line":""},{"line_number":1552,"context_line":"                try:"},{"line_number":1553,"context_line":"                    if sr_ref:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_f020664b","line":1550,"updated":"2016-01-08 19:00:25.000000000","message":"unrelated change nit","commit_id":"5a14ade5bdf339a06a36cc3a27d8be3d68a4b558"}],"nova/virt/xenapi/volume_utils.py":[{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"f2d720061562e060ab5d7d98807bcb763b54fe9d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        if six.PY2:"},{"line_number":57,"context_line":"            # PY2 can only support taking an ascii string to uuid5"},{"line_number":58,"context_line":"            sr_uuid \u003d str(uuid.uuid5(SR_NAMESPACE,"},{"line_number":59,"context_line":"                                     sr_identity.encode(\u0027ascii\u0027)))"},{"line_number":60,"context_line":"        else:"},{"line_number":61,"context_line":"            sr_uuid \u003d str(uuid.uuid5(SR_NAMESPACE, sr_identity))"},{"line_number":62,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba8a016a_8feed889","line":59,"updated":"2015-11-17 09:29:04.000000000","message":"Is sr_identity a str or unicode string? If it\u0027s unicode, you should use UTF-8 instead of ASCII. FYI uuid.uuid5() of Python 3 also uses UTF-8. You should write:\n\nif isinstance(sr_identity, unicode): sr_identity \u003d sr_identity.encode(\u0027utf-8\u0027)","commit_id":"9a36bdb212134f747b8f0f0d666f67101049e066"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"49737b400576006698b8e54b12cc8bd8d7b28b7e","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        sr_identity \u003d \"%s/%s/%s\" % (params[\u0027target\u0027], params[\u0027port\u0027],"},{"line_number":55,"context_line":"                                    params[\u0027targetIQN\u0027])"},{"line_number":56,"context_line":"        if six.PY2:"},{"line_number":57,"context_line":"            # PY2 can only support taking an ascii string to uuid5"},{"line_number":58,"context_line":"            if isinstance(sr_identity, unicode):"},{"line_number":59,"context_line":"                sr_identity \u003d sr_identity.encode(\u0027utf-8\u0027)"},{"line_number":60,"context_line":"        sr_uuid \u003d str(uuid.uuid5(SR_NAMESPACE, sr_identity))"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_31d70a25","line":57,"updated":"2015-11-17 10:51:50.000000000","message":"I don\u0027t understand this comment, uuid5() accepts any *byte* string, not only ASCII-encoded strings.\n\nNote: You can combine the two \"if\" info a single if ;-)","commit_id":"bef5f416e0a66e335a775a5f3338b15325a06185"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"5b409559b0090cba0ab24ecbb6952e3b9c71674f","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        sr_identity \u003d \"%s/%s/%s\" % (params[\u0027target\u0027], params[\u0027port\u0027],"},{"line_number":55,"context_line":"                                    params[\u0027targetIQN\u0027])"},{"line_number":56,"context_line":"        if six.PY2:"},{"line_number":57,"context_line":"            # PY2 can only support taking an ascii string to uuid5"},{"line_number":58,"context_line":"            if isinstance(sr_identity, unicode):"},{"line_number":59,"context_line":"                sr_identity \u003d sr_identity.encode(\u0027utf-8\u0027)"},{"line_number":60,"context_line":"        sr_uuid \u003d str(uuid.uuid5(SR_NAMESPACE, sr_identity))"}],"source_content_type":"text/x-python","patch_set":7,"id":"ba8a016a_6d583933","line":57,"in_reply_to":"ba8a016a_31d70a25","updated":"2015-11-17 20:01:57.000000000","message":"\u003e\u003e\u003e uuid.uuid5(uuid.uuid4(), u\u0027test\u0027)\nTraceback (most recent call last):\n  File \"\u003cstdin\u003e\", line 1, in \u003cmodule\u003e\n  File \"/usr/lib/python2.7/uuid.py\", line 552, in uuid5\n    hash \u003d sha1(namespace.bytes + name).digest()\nUnicodeDecodeError: \u0027ascii\u0027 codec can\u0027t decode byte 0xbb in position 0: ordinal not in range(128)\n\nagree on the two ifs.","commit_id":"bef5f416e0a66e335a775a5f3338b15325a06185"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"fac236b55fb9ed9ffb248a06471061b4fbed8a91","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        params \u003d _parse_volume_info(connection_data)"},{"line_number":55,"context_line":"        sr_identity \u003d \"%s/%s/%s\" % (params[\u0027target\u0027], params[\u0027port\u0027],"},{"line_number":56,"context_line":"                                    params[\u0027targetIQN\u0027])"},{"line_number":57,"context_line":"        # PY2 can only support taking a byte string to uuid5"},{"line_number":58,"context_line":"        if six.PY2 and isinstance(sr_identity, unicode):"},{"line_number":59,"context_line":"            sr_identity \u003d sr_identity.encode(\u0027utf-8\u0027)"},{"line_number":60,"context_line":"        sr_uuid \u003d str(uuid.uuid5(SR_NAMESPACE, sr_identity))"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba8a016a_c729048b","line":57,"updated":"2015-11-23 16:42:01.000000000","message":"This conflicts with what you had as the comment earlier.  This should be an ascii string right?","commit_id":"2e15315ac72bfa0a496c9a4d459fb6300a3a3718"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"138c4bc940efd65a49c154743c57886a0a92ceef","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        sr_identity \u003d \"%s/%s/%s\" % (params[\u0027target\u0027], params[\u0027port\u0027],"},{"line_number":56,"context_line":"                                    params[\u0027targetIQN\u0027])"},{"line_number":57,"context_line":"        # PY2 can only support taking an ascii string to uuid5"},{"line_number":58,"context_line":"        if six.PY2 and isinstance(sr_identity, unicode):"},{"line_number":59,"context_line":"            sr_identity \u003d sr_identity.encode(\u0027utf-8\u0027)"},{"line_number":60,"context_line":"        sr_uuid \u003d str(uuid.uuid5(SR_NAMESPACE, sr_identity))"},{"line_number":61,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa69d971_300fdee2","line":58,"updated":"2016-01-08 19:00:25.000000000","message":"Seems like we could make this simpler by just using oslo_utils.encodeutils.safe_encode:\n\nhttps://github.com/openstack/oslo.utils/blob/master/oslo_utils/encodeutils.py#L60\n\nBut not a big deal to change it.","commit_id":"5a14ade5bdf339a06a36cc3a27d8be3d68a4b558"}]}
