)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1be22eda237b8823e473b1e68ccebc4140b17899","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     liyingjun \u003cyingjun.li@kylin-cloud.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-14 09:29:57 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use security group id for launch instance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When there are two security groups with the same name, it would"},{"line_number":10,"context_line":"not be possible to launch instance with security group name."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a4dcd0f_289e9d63","line":7,"updated":"2015-08-15 11:35:04.000000000","message":"Add \"for Neutron\". This only applies to Neutron case.","commit_id":"e16599988eb7b041febaab51a815753a039b012e"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"82c1315bea4b05cf89ae00bceea46139e23adb55","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     liyingjun \u003cyingjun.li@kylin-cloud.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-08-14 09:29:57 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use security group id for launch instance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When there are two security groups with the same name, it would"},{"line_number":10,"context_line":"not be possible to launch instance with security group name."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a4dcd0f_c61118b1","line":7,"in_reply_to":"1a4dcd0f_289e9d63","updated":"2015-08-17 02:19:43.000000000","message":"Done","commit_id":"e16599988eb7b041febaab51a815753a039b012e"}],"openstack_dashboard/dashboards/project/instances/workflows/create_instance.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"ced5146761ef8ec449319bca8e222196825f8a2f","unresolved":false,"context_lines":[{"line_number":580,"context_line":"    def populate_groups_choices(self, request, context):"},{"line_number":581,"context_line":"        try:"},{"line_number":582,"context_line":"            groups \u003d api.network.security_group_list(request)"},{"line_number":583,"context_line":"            security_group_list \u003d [(sg.id, sg.name) for sg in groups]"},{"line_number":584,"context_line":"        except Exception:"},{"line_number":585,"context_line":"            exceptions.handle(request,"},{"line_number":586,"context_line":"                              _(\u0027Unable to retrieve list of security groups\u0027))"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_bbb6cc86","line":583,"updated":"2015-08-13 15:03:19.000000000","message":"Does it work for nova-network?\n\nIIRC, security group implemention with nova-network requries security group NAME to specify security group, so I am afraid it breaks nova-network deployment.\n\nI know it works with Neutron.","commit_id":"37a9ace3c6d27b2fef8e54c6601adc8b05a59631"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1be22eda237b8823e473b1e68ccebc4140b17899","unresolved":false,"context_lines":[{"line_number":579,"context_line":""},{"line_number":580,"context_line":"    def populate_groups_choices(self, request, context):"},{"line_number":581,"context_line":"        try:"},{"line_number":582,"context_line":"            groups \u003d api.network.security_group_list(request)"},{"line_number":583,"context_line":"            if base.is_service_enabled(request, \u0027network\u0027):"},{"line_number":584,"context_line":"                security_group_list \u003d [(sg.id, sg.name) for sg in groups]"},{"line_number":585,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_4870c940","line":582,"updated":"2015-08-15 11:35:04.000000000","message":"Could you add a comment which describes the background?\nWe need to use sg name for nova-network and can use sg ID for neutron.","commit_id":"e16599988eb7b041febaab51a815753a039b012e"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"82c1315bea4b05cf89ae00bceea46139e23adb55","unresolved":false,"context_lines":[{"line_number":579,"context_line":""},{"line_number":580,"context_line":"    def populate_groups_choices(self, request, context):"},{"line_number":581,"context_line":"        try:"},{"line_number":582,"context_line":"            groups \u003d api.network.security_group_list(request)"},{"line_number":583,"context_line":"            if base.is_service_enabled(request, \u0027network\u0027):"},{"line_number":584,"context_line":"                security_group_list \u003d [(sg.id, sg.name) for sg in groups]"},{"line_number":585,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_66c5a43b","line":582,"in_reply_to":"1a4dcd0f_4870c940","updated":"2015-08-17 02:19:43.000000000","message":"Done","commit_id":"e16599988eb7b041febaab51a815753a039b012e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1be22eda237b8823e473b1e68ccebc4140b17899","unresolved":false,"context_lines":[{"line_number":580,"context_line":"    def populate_groups_choices(self, request, context):"},{"line_number":581,"context_line":"        try:"},{"line_number":582,"context_line":"            groups \u003d api.network.security_group_list(request)"},{"line_number":583,"context_line":"            if base.is_service_enabled(request, \u0027network\u0027):"},{"line_number":584,"context_line":"                security_group_list \u003d [(sg.id, sg.name) for sg in groups]"},{"line_number":585,"context_line":"            else:"},{"line_number":586,"context_line":"                security_group_list \u003d [(sg.name, sg.name) for sg in groups]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_c8b139e2","line":583,"updated":"2015-08-15 11:35:04.000000000","message":"Ideally  this kind of things should be handled in openstack_dashboard/api/{nova,neutron}.py.\nThis is a topic specific to back-ends, so the presentation layer should not be aware of it in theory. Any idea?","commit_id":"e16599988eb7b041febaab51a815753a039b012e"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"82c1315bea4b05cf89ae00bceea46139e23adb55","unresolved":false,"context_lines":[{"line_number":580,"context_line":"    def populate_groups_choices(self, request, context):"},{"line_number":581,"context_line":"        try:"},{"line_number":582,"context_line":"            groups \u003d api.network.security_group_list(request)"},{"line_number":583,"context_line":"            if base.is_service_enabled(request, \u0027network\u0027):"},{"line_number":584,"context_line":"                security_group_list \u003d [(sg.id, sg.name) for sg in groups]"},{"line_number":585,"context_line":"            else:"},{"line_number":586,"context_line":"                security_group_list \u003d [(sg.name, sg.name) for sg in groups]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_26d6bcf1","line":583,"in_reply_to":"1a4dcd0f_c8b139e2","updated":"2015-08-17 02:19:43.000000000","message":"There is no such method in api.network, so do i need to create a new method in api.network using base.is_service_enabled? but this seems redundant to me.","commit_id":"e16599988eb7b041febaab51a815753a039b012e"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"1be22eda237b8823e473b1e68ccebc4140b17899","unresolved":false,"context_lines":[{"line_number":581,"context_line":"        try:"},{"line_number":582,"context_line":"            groups \u003d api.network.security_group_list(request)"},{"line_number":583,"context_line":"            if base.is_service_enabled(request, \u0027network\u0027):"},{"line_number":584,"context_line":"                security_group_list \u003d [(sg.id, sg.name) for sg in groups]"},{"line_number":585,"context_line":"            else:"},{"line_number":586,"context_line":"                security_group_list \u003d [(sg.name, sg.name) for sg in groups]"},{"line_number":587,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_68a2659c","line":584,"range":{"start_line":584,"start_character":47,"end_line":584,"end_character":54},"updated":"2015-08-15 11:35:04.000000000","message":"(no action required) This raises another question. How can users distinguish two security groups with a same name? It is not directly related to this patch, but it is a deeply related.","commit_id":"e16599988eb7b041febaab51a815753a039b012e"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"82c1315bea4b05cf89ae00bceea46139e23adb55","unresolved":false,"context_lines":[{"line_number":581,"context_line":"        try:"},{"line_number":582,"context_line":"            groups \u003d api.network.security_group_list(request)"},{"line_number":583,"context_line":"            if base.is_service_enabled(request, \u0027network\u0027):"},{"line_number":584,"context_line":"                security_group_list \u003d [(sg.id, sg.name) for sg in groups]"},{"line_number":585,"context_line":"            else:"},{"line_number":586,"context_line":"                security_group_list \u003d [(sg.name, sg.name) for sg in groups]"},{"line_number":587,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1a4dcd0f_66f364a0","line":584,"in_reply_to":"1a4dcd0f_68a2659c","updated":"2015-08-17 02:19:43.000000000","message":"Maybe add part of security_group id with name? something like: test_sg(72f5d546)","commit_id":"e16599988eb7b041febaab51a815753a039b012e"}]}
