)]}'
{"openstack_dashboard/api/_nova.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"33f470c7b38b71387e7d2e7057259853ad169105","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            self.ramdisk_id,"},{"line_number":97,"context_line":"            self.root_device_name,"},{"line_number":98,"context_line":"            self.user_data"},{"line_number":99,"context_line":"        ])"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @property"},{"line_number":102,"context_line":"    def internal_name(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_0b6d3131","line":99,"updated":"2020-09-11 05:20:06.000000000","message":"The above logic returns False if all values are evaluated as False (for example, 0, \u0027\u0027).\nI think it is better to check each attribute exists.\nHow about the following?\n\n return any(hasattr(self, attr) for attr in [\n   \u0027OS-EXT-SRV-ATTR:instance_name\u0027,\n   \u0027OS-EXT-SRV-ATTR:host\u0027,\n     ...\n ])\n\nAll fields are controlled by a same policy in nova, so using \u0027any\u0027 looks okay.","commit_id":"354bbac7dbcd38f2b37eebe919011c1704dc0177"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"d65ae52925f3d6748a377a9c8b872b6c2c396b27","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            self.ramdisk_id,"},{"line_number":97,"context_line":"            self.root_device_name,"},{"line_number":98,"context_line":"            self.user_data"},{"line_number":99,"context_line":"        ])"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @property"},{"line_number":102,"context_line":"    def internal_name(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_54fa2642","line":99,"in_reply_to":"9f560f44_0b6d3131","updated":"2020-09-11 09:31:30.000000000","message":"This seems to be a bit slower (one more function call) but more correct solution.","commit_id":"354bbac7dbcd38f2b37eebe919011c1704dc0177"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"baa2c0072b15dd6d780dce3d7db8d2684976cf1c","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            self.ramdisk_id,"},{"line_number":97,"context_line":"            self.root_device_name,"},{"line_number":98,"context_line":"            self.user_data"},{"line_number":99,"context_line":"        ])"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"    @property"},{"line_number":102,"context_line":"    def internal_name(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9f560f44_ffe21c2f","line":99,"in_reply_to":"9f560f44_54fa2642","updated":"2020-09-13 01:02:35.000000000","message":"Perhaps an extra overhead does not matter because we already have much more heavy operations anywhere. Django template processing is too.","commit_id":"354bbac7dbcd38f2b37eebe919011c1704dc0177"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"5701fd0739feb40f434d249263f30342782225e4","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    @property"},{"line_number":121,"context_line":"    def kernel_id(self):"},{"line_number":122,"context_line":"        return getattr(self, \u0027OS-EXT-SRV-ATTR:kernel_id\u0027, _(\"-\"))"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    @property"},{"line_number":125,"context_line":"    def ramdisk_id(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_862bab93","line":122,"range":{"start_line":122,"start_character":58,"end_line":122,"end_character":59},"updated":"2020-09-16 07:48:44.000000000","message":"You used it but it is not imported in this file.\nI think you have to import this first\nfrom django.utils.translation import ugettext_lazy as _","commit_id":"531abde2020c9b2611e417b19a468ec990926a1c"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"5701fd0739feb40f434d249263f30342782225e4","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    @property"},{"line_number":125,"context_line":"    def ramdisk_id(self):"},{"line_number":126,"context_line":"        return getattr(self, \u0027OS-EXT-SRV-ATTR:ramdisk_id\u0027, _(\"-\"))"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @property"},{"line_number":129,"context_line":"    def root_device_name(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_86044b1a","line":126,"range":{"start_line":126,"start_character":59,"end_line":126,"end_character":60},"updated":"2020-09-16 07:48:44.000000000","message":"ditto","commit_id":"531abde2020c9b2611e417b19a468ec990926a1c"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"5701fd0739feb40f434d249263f30342782225e4","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @property"},{"line_number":129,"context_line":"    def root_device_name(self):"},{"line_number":130,"context_line":"        return getattr(self, \u0027OS-EXT-SRV-ATTR:root_device_name\u0027, _(\"-\"))"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @property"},{"line_number":133,"context_line":"    def user_data(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9f560f44_66013707","line":130,"range":{"start_line":130,"start_character":65,"end_line":130,"end_character":66},"updated":"2020-09-16 07:48:44.000000000","message":"ditto","commit_id":"531abde2020c9b2611e417b19a468ec990926a1c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"2f5dd28e63f83a07ff0b51818bbe1325eaa54210","unresolved":false,"context_lines":[{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    @property"},{"line_number":122,"context_line":"    def kernel_id(self):"},{"line_number":123,"context_line":"        return getattr(self, \u0027OS-EXT-SRV-ATTR:kernel_id\u0027, _(\"-\"))"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    @property"},{"line_number":126,"context_line":"    def ramdisk_id(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9f560f44_f33839d5","line":123,"updated":"2020-09-18 01:57:22.000000000","message":"some attributes use \"\" as default and some uses _(\"-\"). What is the difference?\n\nIf it is only for template rendering, it is better to use the default filter in templates so that we can avoid using translations in the API wrapper layer.","commit_id":"e4f1f51c2d3f002c9dfe2d291596faabac9e8824"}],"openstack_dashboard/dashboards/project/instances/templates/instances/_detail_overview.html":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"24a485544891cd1aa5a76debbb254c054ea57a37","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    {% if instance.host_server %}"},{"line_number":26,"context_line":"      \u003cdt\u003e{% trans \"Host\" %}\u003c/dt\u003e"},{"line_number":27,"context_line":"      \u003cdd\u003e{{ instance.host_server }}\u003c/dd\u003e"},{"line_number":28,"context_line":"    {% endif %}"},{"line_number":29,"context_line":"    {% if instance.instance_name %}"},{"line_number":30,"context_line":"      \u003cdt\u003e{% trans \"Instance Name\" %}\u003c/dt\u003e"},{"line_number":31,"context_line":"      \u003cdd\u003e{{ instance.instance_name }}\u003c/dd\u003e"}],"source_content_type":"text/html","patch_set":2,"id":"ff570b3c_306dd598","line":28,"updated":"2020-05-10 19:36:29.000000000","message":"Including commit I0cfe9090e8263f983fa5f42f42616a26407be47a, all fields are only visible to admin I am not sure we need to add these fields to the project template. Isn\u0027t it better to add them to the admin template?","commit_id":"e306b7ed4e633fbf979def23155c752ef3de6f25"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"40b8ed12df74cf1add94f99f6ab9c1474eec0b3e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    {% if instance.host_server %}"},{"line_number":26,"context_line":"      \u003cdt\u003e{% trans \"Host\" %}\u003c/dt\u003e"},{"line_number":27,"context_line":"      \u003cdd\u003e{{ instance.host_server }}\u003c/dd\u003e"},{"line_number":28,"context_line":"    {% endif %}"},{"line_number":29,"context_line":"    {% if instance.instance_name %}"},{"line_number":30,"context_line":"      \u003cdt\u003e{% trans \"Instance Name\" %}\u003c/dt\u003e"},{"line_number":31,"context_line":"      \u003cdd\u003e{{ instance.instance_name }}\u003c/dd\u003e"}],"source_content_type":"text/html","patch_set":2,"id":"ff570b3c_b9bc0906","line":28,"in_reply_to":"ff570b3c_306dd598","updated":"2020-05-12 15:52:38.000000000","message":"Mentioned above commit changes the same template. While these values are only visible  for admin users by default, it could be configured by policy files","commit_id":"e306b7ed4e633fbf979def23155c752ef3de6f25"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"24a485544891cd1aa5a76debbb254c054ea57a37","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      \u003cdt\u003e{% trans \"Reservation ID\" %}\u003c/dt\u003e"},{"line_number":35,"context_line":"      \u003cdd\u003e{{ instance.reservation_id }}\u003c/dd\u003e"},{"line_number":36,"context_line":"    {% endif %}"},{"line_number":37,"context_line":"    {% if instance.launch_index %}"},{"line_number":38,"context_line":"      \u003cdt\u003e{% trans \"Launch Index\" %}\u003c/dt\u003e"},{"line_number":39,"context_line":"      \u003cdd\u003e{{ instance.launch_index }}\u003c/dd\u003e"},{"line_number":40,"context_line":"    {% endif %}"}],"source_content_type":"text/html","patch_set":2,"id":"ff570b3c_70046dc7","line":37,"updated":"2020-05-10 19:36:29.000000000","message":"The usual value of launch_index is 0.\nCan we see the launch_index field in the rendered HTML if launch_index is 0?\n(sorry I didn\u0027t test this patch :p)","commit_id":"e306b7ed4e633fbf979def23155c752ef3de6f25"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"40b8ed12df74cf1add94f99f6ab9c1474eec0b3e","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      \u003cdt\u003e{% trans \"Reservation ID\" %}\u003c/dt\u003e"},{"line_number":35,"context_line":"      \u003cdd\u003e{{ instance.reservation_id }}\u003c/dd\u003e"},{"line_number":36,"context_line":"    {% endif %}"},{"line_number":37,"context_line":"    {% if instance.launch_index %}"},{"line_number":38,"context_line":"      \u003cdt\u003e{% trans \"Launch Index\" %}\u003c/dt\u003e"},{"line_number":39,"context_line":"      \u003cdd\u003e{{ instance.launch_index }}\u003c/dd\u003e"},{"line_number":40,"context_line":"    {% endif %}"}],"source_content_type":"text/html","patch_set":2,"id":"ff570b3c_b96a497d","line":37,"in_reply_to":"ff570b3c_70046dc7","updated":"2020-05-12 15:52:38.000000000","message":"good catch. need to test it","commit_id":"e306b7ed4e633fbf979def23155c752ef3de6f25"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"24a485544891cd1aa5a76debbb254c054ea57a37","unresolved":false,"context_lines":[{"line_number":42,"context_line":"      \u003cdt\u003e{% trans \"Hostname\" %}\u003c/dt\u003e"},{"line_number":43,"context_line":"      \u003cdd\u003e{{ instance.hostname }}\u003c/dd\u003e"},{"line_number":44,"context_line":"    {% endif %}"},{"line_number":45,"context_line":"    {% if instance.kernel_id %}"},{"line_number":46,"context_line":"      \u003cdt\u003e{% trans \"Kernel ID\" %}\u003c/dt\u003e"},{"line_number":47,"context_line":"      \u003cdd\u003e{{ instance.kernel_id }}\u003c/dd\u003e"},{"line_number":48,"context_line":"    {% endif %}"}],"source_content_type":"text/html","patch_set":2,"id":"ff570b3c_500969db","line":45,"updated":"2020-05-10 19:36:29.000000000","message":"kernel_id can be an empty string.\nIf kernel_id is an empty string, even when the field itself is visible, the field is not rendered. Is it an intended behavior?","commit_id":"e306b7ed4e633fbf979def23155c752ef3de6f25"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"40b8ed12df74cf1add94f99f6ab9c1474eec0b3e","unresolved":false,"context_lines":[{"line_number":42,"context_line":"      \u003cdt\u003e{% trans \"Hostname\" %}\u003c/dt\u003e"},{"line_number":43,"context_line":"      \u003cdd\u003e{{ instance.hostname }}\u003c/dd\u003e"},{"line_number":44,"context_line":"    {% endif %}"},{"line_number":45,"context_line":"    {% if instance.kernel_id %}"},{"line_number":46,"context_line":"      \u003cdt\u003e{% trans \"Kernel ID\" %}\u003c/dt\u003e"},{"line_number":47,"context_line":"      \u003cdd\u003e{{ instance.kernel_id }}\u003c/dd\u003e"},{"line_number":48,"context_line":"    {% endif %}"}],"source_content_type":"text/html","patch_set":2,"id":"ff570b3c_99730581","line":45,"in_reply_to":"ff570b3c_500969db","updated":"2020-05-12 15:52:38.000000000","message":"TBH, I didn\u0027t think about it. My customer asks me to show all fields if policy allows it.  I can add  a required logic if needed.","commit_id":"e306b7ed4e633fbf979def23155c752ef3de6f25"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"24a485544891cd1aa5a76debbb254c054ea57a37","unresolved":false,"context_lines":[{"line_number":46,"context_line":"      \u003cdt\u003e{% trans \"Kernel ID\" %}\u003c/dt\u003e"},{"line_number":47,"context_line":"      \u003cdd\u003e{{ instance.kernel_id }}\u003c/dd\u003e"},{"line_number":48,"context_line":"    {% endif %}"},{"line_number":49,"context_line":"    {% if instance.ramdisk_id %}"},{"line_number":50,"context_line":"      \u003cdt\u003e{% trans \"Ramdisk ID\" %}\u003c/dt\u003e"},{"line_number":51,"context_line":"      \u003cdd\u003e{{ instance.ramdisk_id }}\u003c/dd\u003e"},{"line_number":52,"context_line":"    {% endif %}"}],"source_content_type":"text/html","patch_set":2,"id":"ff570b3c_b00e05e3","line":49,"updated":"2020-05-10 19:36:29.000000000","message":"same as the above","commit_id":"e306b7ed4e633fbf979def23155c752ef3de6f25"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"62eab5ef408ab26716c03514a8008f49cb131d78","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      \u003cdt\u003e{% trans \"Hostname\" %}\u003c/dt\u003e"},{"line_number":35,"context_line":"      \u003cdd\u003e{{ instance.hostname }}\u003c/dd\u003e"},{"line_number":36,"context_line":"      \u003cdt\u003e{% trans \"Kernel ID\" %}\u003c/dt\u003e"},{"line_number":37,"context_line":"      \u003cdd\u003e{{ instance.kernel_id }}\u003c/dd\u003e"},{"line_number":38,"context_line":"      \u003cdt\u003e{% trans \"Ramdisk ID\" %}\u003c/dt\u003e"},{"line_number":39,"context_line":"      \u003cdd\u003e{{ instance.ramdisk_id }}\u003c/dd\u003e"},{"line_number":40,"context_line":"      \u003cdt\u003e{% trans \"Device Name\" %}\u003c/dt\u003e"}],"source_content_type":"text/html","patch_set":5,"id":"9f560f44_402404b3","line":37,"range":{"start_line":37,"start_character":6,"end_line":37,"end_character":39},"updated":"2020-09-14 09:26:02.000000000","message":"When I test this patch in my case there is no Kernal_id for the instance but in the horizon it doesn\u0027t show anything not even \u0027None\u0027.\nShould we need to pass default:_(\"-\") here.","commit_id":"9c1a29e94e18e8f8a683aa3ac18c4d873c8489ef"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"e85aba59a331574fd9f8bd8465a2f1213b9a1902","unresolved":false,"context_lines":[{"line_number":34,"context_line":"      \u003cdt\u003e{% trans \"Hostname\" %}\u003c/dt\u003e"},{"line_number":35,"context_line":"      \u003cdd\u003e{{ instance.hostname }}\u003c/dd\u003e"},{"line_number":36,"context_line":"      \u003cdt\u003e{% trans \"Kernel ID\" %}\u003c/dt\u003e"},{"line_number":37,"context_line":"      \u003cdd\u003e{{ instance.kernel_id }}\u003c/dd\u003e"},{"line_number":38,"context_line":"      \u003cdt\u003e{% trans \"Ramdisk ID\" %}\u003c/dt\u003e"},{"line_number":39,"context_line":"      \u003cdd\u003e{{ instance.ramdisk_id }}\u003c/dd\u003e"},{"line_number":40,"context_line":"      \u003cdt\u003e{% trans \"Device Name\" %}\u003c/dt\u003e"}],"source_content_type":"text/html","patch_set":5,"id":"9f560f44_c672c3b0","line":37,"range":{"start_line":37,"start_character":6,"end_line":37,"end_character":39},"in_reply_to":"9f560f44_402404b3","updated":"2020-09-16 06:46:55.000000000","message":"Will fix it in the next patch","commit_id":"9c1a29e94e18e8f8a683aa3ac18c4d873c8489ef"},{"author":{"_account_id":29313,"name":"Vishal Manchanda","email":"manchandavishal143@gmail.com","username":"vishalmanchanda"},"change_message_id":"62eab5ef408ab26716c03514a8008f49cb131d78","unresolved":false,"context_lines":[{"line_number":36,"context_line":"      \u003cdt\u003e{% trans \"Kernel ID\" %}\u003c/dt\u003e"},{"line_number":37,"context_line":"      \u003cdd\u003e{{ instance.kernel_id }}\u003c/dd\u003e"},{"line_number":38,"context_line":"      \u003cdt\u003e{% trans \"Ramdisk ID\" %}\u003c/dt\u003e"},{"line_number":39,"context_line":"      \u003cdd\u003e{{ instance.ramdisk_id }}\u003c/dd\u003e"},{"line_number":40,"context_line":"      \u003cdt\u003e{% trans \"Device Name\" %}\u003c/dt\u003e"},{"line_number":41,"context_line":"      \u003cdd\u003e{{ instance.root_device_name }}\u003c/dd\u003e"},{"line_number":42,"context_line":"      \u003cdt\u003e{% trans \"User Data\" %}\u003c/dt\u003e"}],"source_content_type":"text/html","patch_set":5,"id":"9f560f44_a03400e1","line":39,"range":{"start_line":39,"start_character":6,"end_line":39,"end_character":40},"updated":"2020-09-14 09:26:02.000000000","message":"ditto.","commit_id":"9c1a29e94e18e8f8a683aa3ac18c4d873c8489ef"}]}
