)]}'
{"openstack_dashboard/api/neutron.py":[{"author":{"_account_id":11885,"name":"Ying Zuo","email":"yingzuo4@gmail.com","username":"yingzuo"},"change_message_id":"a15a2f69a8031d7cb8e6ccb73830a1b1b1cb8ec4","unresolved":false,"context_lines":[{"line_number":1337,"context_line":""},{"line_number":1338,"context_line":"@memoized"},{"line_number":1339,"context_line":"def security_group_list(request, **params):"},{"line_number":1340,"context_line":"    LOG.debug(\u0027#### params: %s\u0027, params)"},{"line_number":1341,"context_line":"    return SecurityGroupManager(request).list(**params)"},{"line_number":1342,"context_line":""},{"line_number":1343,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"5f2577a7_38ca764d","line":1340,"updated":"2017-09-18 01:34:32.000000000","message":"can you remove this?","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bf4721086241e44c62451a2012976b18c3ccd2bf","unresolved":false,"context_lines":[{"line_number":1337,"context_line":""},{"line_number":1338,"context_line":"@memoized"},{"line_number":1339,"context_line":"def security_group_list(request, **params):"},{"line_number":1340,"context_line":"    LOG.debug(\u0027#### params: %s\u0027, params)"},{"line_number":1341,"context_line":"    return SecurityGroupManager(request).list(**params)"},{"line_number":1342,"context_line":""},{"line_number":1343,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"1f2f7f8d_6bbb41e5","line":1340,"in_reply_to":"5f2577a7_38ca764d","updated":"2017-09-19 00:18:29.000000000","message":"Done","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"}],"openstack_dashboard/dashboards/admin/networks/ports/tests.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"9a825a3ed98f122cee5692ac7f10686110717bc0","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from django.core.urlresolvers import reverse"},{"line_number":17,"context_line":"from django import http"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from horizon.workflows import views"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from mox3.mox import IsA  # noqa"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1a1ced50_ba748ccf","line":19,"updated":"2017-03-17 18:04:26.000000000","message":"horizon is a project import. This needs to be placed after mox3.","commit_id":"a02486d3820843b7b9fd119435c76df19846fc42"}],"openstack_dashboard/dashboards/admin/networks/ports/views.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c508feef7008c18d57e9ac6ee9b2d855a343cb6d","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    def allowed_port_security_step(self, port):"},{"line_number":117,"context_line":"        if \u0027port_security_enabled\u0027 in port:"},{"line_number":118,"context_line":"            admin_workflows.UpdatePort.register("},{"line_number":119,"context_line":"                admin_workflows.UpdatePortSecurityGroup)"},{"line_number":120,"context_line":"        else:"},{"line_number":121,"context_line":"            admin_workflows.UpdatePort.unregister("},{"line_number":122,"context_line":"                admin_workflows.UpdatePortSecurityGroup, if_exist\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":11,"id":"ffe62b97_71b91f13","line":119,"updated":"2017-03-29 06:50:30.000000000","message":"I think you can define a class attribute which stores UpdatePortSecurity step. If so, you can change this to something like:\n\n  self.workflow_class.register(self.step_update_securitygroup)\n\nand this method no longer needs to be overridden.","commit_id":"5e95ed695934363c85204face4b00043360beb2f"}],"openstack_dashboard/dashboards/admin/networks/ports/workflows.py":[{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"566e65ac83b9690a1ff4697b2062411bb7a66bc0","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                # even if its value is empty."},{"line_number":107,"context_line":"                groups \u003d map(filters.get_int_or_uuid, data[\u0027wanted_groups\u0027])"},{"line_number":108,"context_line":"                extension_kwargs[\u0027security_groups\u0027] \u003d groups"},{"line_number":109,"context_line":"            except Exception:"},{"line_number":110,"context_line":"                pass"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"            port \u003d api.neutron.port_update("}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_ccafefe1","line":109,"updated":"2016-12-13 09:31:40.000000000","message":"Can you catch a more specific exception here? Especially since you are completely ignoring it, without even logging a warning.","commit_id":"d4971fce92fd463afd3f96b34bbae5a77d38450f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"ef1222d7386c0795c75c8d13e1463f9817cebe52","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                # even if its value is empty."},{"line_number":107,"context_line":"                groups \u003d map(filters.get_int_or_uuid, data[\u0027wanted_groups\u0027])"},{"line_number":108,"context_line":"                extension_kwargs[\u0027security_groups\u0027] \u003d groups"},{"line_number":109,"context_line":"            except Exception:"},{"line_number":110,"context_line":"                pass"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"            port \u003d api.neutron.port_update("}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_297a0b25","line":109,"in_reply_to":"1a6eadb0_ccafefe1","updated":"2016-12-13 13:47:43.000000000","message":"When a workflow doesn\u0027t have the step of UpdatePortSecurityGroup, error will occur.\nThis is to avoid this exception, however current implementation is bad because essentially it doesn\u0027t need to use try-exept, so I changed.","commit_id":"d4971fce92fd463afd3f96b34bbae5a77d38450f"},{"author":{"_account_id":11885,"name":"Ying Zuo","email":"yingzuo4@gmail.com","username":"yingzuo"},"change_message_id":"ffb305358186233d4f70c740f418a812d49bac2b","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return extension_kwargs"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"class UpdatePortWithSecGroups(UpdatePort):"},{"line_number":130,"context_line":"    slug \u003d \"update_port_with_sec_groups\""},{"line_number":131,"context_line":"    default_steps \u003d (UpdatePortInfo, UpdatePortSecurityGroup)"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ffe62b97_f7e6b416","line":129,"updated":"2017-03-27 04:25:19.000000000","message":"I think we should spell out the whole word \"security\" in the class name.","commit_id":"ff3cf3e88ee06d8d0a0a3b3e3867b2f606589032"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"514fbf0a8e3cc355a0efb9e2437b0e06fcc9b48e","unresolved":false,"context_lines":[{"line_number":126,"context_line":"        return extension_kwargs"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"class UpdatePortWithSecGroups(UpdatePort):"},{"line_number":130,"context_line":"    slug \u003d \"update_port_with_sec_groups\""},{"line_number":131,"context_line":"    default_steps \u003d (UpdatePortInfo, UpdatePortSecurityGroup)"},{"line_number":132,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ffe62b97_afa77e0b","line":129,"in_reply_to":"ffe62b97_f7e6b416","updated":"2017-03-28 01:41:06.000000000","message":"I changed to the same as Project way. So this class is  already not needed.","commit_id":"ff3cf3e88ee06d8d0a0a3b3e3867b2f606589032"}],"openstack_dashboard/dashboards/admin/networks/templates/networks/ports/_edit_port_help.html":[{"author":{"_account_id":11885,"name":"Ying Zuo","email":"yingzuo4@gmail.com","username":"yingzuo"},"change_message_id":"a15a2f69a8031d7cb8e6ccb73830a1b1b1cb8ec4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"5f2577a7_588ae2be","updated":"2017-09-18 01:34:32.000000000","message":"Some of the fields have been defined on the other help template in this patch so we can extend that template here.","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"68e2abcdafe85488ba57345fa35123a4840eed62","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"1f2f7f8d_71d1f057","in_reply_to":"1f2f7f8d_312128a1","updated":"2017-09-19 02:29:54.000000000","message":"Hmm.... I am not sure how such partial optimization helps us.\n\"Enable Admin State\" still exists in both templates though.\nPerhaps it is better to introduce some flag and all fields are defined in the project template, but I am not sure.","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"},{"author":{"_account_id":11885,"name":"Ying Zuo","email":"yingzuo4@gmail.com","username":"yingzuo"},"change_message_id":"944f48677c40bfd0b3779b53a410182d5d1b7e95","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"1f2f7f8d_312128a1","in_reply_to":"1f2f7f8d_6bb7c1da","updated":"2017-09-19 02:10:06.000000000","message":"I think you can add a block tag after the \"Enable Admin State\" field on the other template. This template can then extend that one and add the extra fields needed in the block.","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"},{"author":{"_account_id":11885,"name":"Ying Zuo","email":"yingzuo4@gmail.com","username":"yingzuo"},"change_message_id":"26dc39a9bfb3f4ff9129b60af6de1d19da3a6aef","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"bf57530f_e2aaaad0","in_reply_to":"1f2f7f8d_71d1f057","updated":"2017-09-20 03:16:37.000000000","message":"Yes. \"Enable Admin State\" is on both templates. So just to be clear, these are the steps:\n1. Add the {% block extra_fields %}{% endblock %} on the other template right after the \"Enable Admin State\" field.\n2. On this template: extends the other template and override the extra_fields block with the extra fields here which are Device ID, Device Owner, Binding: Host, and MAC Address.","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bf4721086241e44c62451a2012976b18c3ccd2bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"1f2f7f8d_6bb7c1da","in_reply_to":"5f2577a7_588ae2be","updated":"2017-09-19 00:18:29.000000000","message":"I don\u0027t see any convenient way to match the field order by including another template. I thought using include in the past, but I gave it up from this reason. Any suggestion?","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"fca3d62678b0e55c271d2d879068d5acfa1a8354","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":26,"id":"bf57530f_6398f969","in_reply_to":"bf57530f_e2aaaad0","updated":"2017-10-20 23:57:34.000000000","message":"Done.\n\nThis introduces the dependency between the view and the template. IMHO it is not a good idea but okay. I would like to pass the review first.","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"}],"openstack_dashboard/dashboards/project/instances/workflows/update_instance.py":[{"author":{"_account_id":11885,"name":"Ying Zuo","email":"yingzuo4@gmail.com","username":"yingzuo"},"change_message_id":"ffb305358186233d4f70c740f418a812d49bac2b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            exceptions.handle(request, err_msg)"},{"line_number":63,"context_line":"        self.fields[field_name].initial \u003d sec_groups"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _get_initial_security_groups():"},{"line_number":66,"context_line":"        # This depends on each cases"},{"line_number":67,"context_line":"        pass"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ffe62b97_572e80fa","line":65,"updated":"2017-03-27 04:25:19.000000000","message":"context should be passed in","commit_id":"ff3cf3e88ee06d8d0a0a3b3e3867b2f606589032"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"514fbf0a8e3cc355a0efb9e2437b0e06fcc9b48e","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            exceptions.handle(request, err_msg)"},{"line_number":63,"context_line":"        self.fields[field_name].initial \u003d sec_groups"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def _get_initial_security_groups():"},{"line_number":66,"context_line":"        # This depends on each cases"},{"line_number":67,"context_line":"        pass"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"ffe62b97_19647c49","line":65,"in_reply_to":"ffe62b97_572e80fa","updated":"2017-03-28 01:41:06.000000000","message":"Done","commit_id":"ff3cf3e88ee06d8d0a0a3b3e3867b2f606589032"}],"openstack_dashboard/dashboards/project/networks/ports/views.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"886b47d55d4f254c19c08dcd0241bd2e016e586a","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            # MAC Learning is not set"},{"line_number":179,"context_line":"            pass"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        if port[\u0027port_security_enabled\u0027]:"},{"line_number":182,"context_line":"            self.workflow_class \u003d project_workflows.UpdatePortWithSecGroups"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        return initial"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba2be162_75aa8886","line":182,"range":{"start_line":181,"start_character":8,"end_line":182,"end_character":75},"updated":"2017-03-04 04:43:47.000000000","message":"This looks tricky. Can\u0027t we use allowed() in the workflow?","commit_id":"9f7fb2e76b3170eef1e5cb528928fc7692f27c90"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"559f793fb3c4c79699ed7ca4694c245d4c89534e","unresolved":false,"context_lines":[{"line_number":178,"context_line":"            # MAC Learning is not set"},{"line_number":179,"context_line":"            pass"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        if port[\u0027port_security_enabled\u0027]:"},{"line_number":182,"context_line":"            self.workflow_class \u003d project_workflows.UpdatePortWithSecGroups"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        return initial"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a1ced50_bf3c7e30","line":182,"range":{"start_line":181,"start_character":8,"end_line":182,"end_character":75},"in_reply_to":"ba2be162_75aa8886","updated":"2017-03-17 17:35:12.000000000","message":"workflow does not have allowed().\nInstead, it seems better to use Workflow.register() and unregister().","commit_id":"9f7fb2e76b3170eef1e5cb528928fc7692f27c90"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"53323f8d27f0da14e231486f225c997401090454","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        if \u0027port_security_enabled\u0027 in port:"},{"line_number":181,"context_line":"            initial[\u0027port_security_enabled\u0027] \u003d port[\u0027port_security_enabled\u0027]"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        # TODO(amotoki): We now supports editing port_security_enabled field"},{"line_number":184,"context_line":"        # in the same form. Security Group tab (step) should be toggled"},{"line_number":185,"context_line":"        # based on a value of port_security_enabled specified in the form."},{"line_number":186,"context_line":"        # NOTE(amotoki): It looks better to support allowed() in workflow"},{"line_number":187,"context_line":"        # steps. Using register/unregister has a side effect that an registered"},{"line_number":188,"context_line":"        # step class remains after processing a request. In a subsequent"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a1ced50_aab15491","line":185,"range":{"start_line":183,"start_character":8,"end_line":185,"end_character":74},"updated":"2017-03-21 01:28:25.000000000","message":"Can we achieve this in a similar way we do in the network workflow?\n\nhttps://github.com/openstack/horizon/blob/master/openstack_dashboard/dashboards/project/networks/workflows.py#L57-L68","commit_id":"c3d200b8a70ab4ead018319364aee8c2c869f030"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"3e2929d7501c87bf7c1835309894b157f098d0d8","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        if \u0027port_security_enabled\u0027 in port:"},{"line_number":181,"context_line":"            initial[\u0027port_security_enabled\u0027] \u003d port[\u0027port_security_enabled\u0027]"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"        # TODO(amotoki): We now supports editing port_security_enabled field"},{"line_number":184,"context_line":"        # in the same form. Security Group tab (step) should be toggled"},{"line_number":185,"context_line":"        # based on a value of port_security_enabled specified in the form."},{"line_number":186,"context_line":"        # NOTE(amotoki): It looks better to support allowed() in workflow"},{"line_number":187,"context_line":"        # steps. Using register/unregister has a side effect that an registered"},{"line_number":188,"context_line":"        # step class remains after processing a request. In a subsequent"}],"source_content_type":"text/x-python","patch_set":8,"id":"ffe62b97_9acc3abd","line":185,"range":{"start_line":183,"start_character":8,"end_line":185,"end_character":74},"in_reply_to":"1a1ced50_aab15491","updated":"2017-03-26 08:58:22.000000000","message":"Yes, I did in patch set 9. Thanks for your good idea.","commit_id":"c3d200b8a70ab4ead018319364aee8c2c869f030"}],"openstack_dashboard/dashboards/project/networks/ports/workflows.py":[{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"566e65ac83b9690a1ff4697b2062411bb7a66bc0","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                    label\u003d_(\"MAC Learning State\"), initial\u003dFalse,"},{"line_number":79,"context_line":"                    required\u003dFalse)"},{"line_number":80,"context_line":"        except Exception:"},{"line_number":81,"context_line":"            msg \u003d _(\"Unable to retrieve MAC learning state\")"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    class Meta(object):"},{"line_number":84,"context_line":"        name \u003d _(\"Info\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_ac463321","line":81,"updated":"2016-12-13 09:31:40.000000000","message":"Shouldn\u0027t there be exceptions.handle() here?","commit_id":"d4971fce92fd463afd3f96b34bbae5a77d38450f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"ef1222d7386c0795c75c8d13e1463f9817cebe52","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                    label\u003d_(\"MAC Learning State\"), initial\u003dFalse,"},{"line_number":79,"context_line":"                    required\u003dFalse)"},{"line_number":80,"context_line":"        except Exception:"},{"line_number":81,"context_line":"            msg \u003d _(\"Unable to retrieve MAC learning state\")"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    class Meta(object):"},{"line_number":84,"context_line":"        name \u003d _(\"Info\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_aca0e9f5","line":81,"in_reply_to":"1a6eadb0_ac463321","updated":"2016-12-13 13:47:43.000000000","message":"Done","commit_id":"d4971fce92fd463afd3f96b34bbae5a77d38450f"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"566e65ac83b9690a1ff4697b2062411bb7a66bc0","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                self.contributes.remove(\u0027binding__vnic_type\u0027)"},{"line_number":99,"context_line":"            if not api.neutron.is_extension_supported(request, \u0027mac-learning\u0027):"},{"line_number":100,"context_line":"                self.contributes.remove(\u0027mac_state\u0027)"},{"line_number":101,"context_line":"        except Exception:"},{"line_number":102,"context_line":"            pass"},{"line_number":103,"context_line":"        if data:"},{"line_number":104,"context_line":"            for key in self.contributes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_ec6f4b90","line":101,"updated":"2016-12-13 09:31:40.000000000","message":"Again, ignoring all exceptions without even a warning. Can you catch a specific exception here?","commit_id":"d4971fce92fd463afd3f96b34bbae5a77d38450f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"ef1222d7386c0795c75c8d13e1463f9817cebe52","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                self.contributes.remove(\u0027binding__vnic_type\u0027)"},{"line_number":99,"context_line":"            if not api.neutron.is_extension_supported(request, \u0027mac-learning\u0027):"},{"line_number":100,"context_line":"                self.contributes.remove(\u0027mac_state\u0027)"},{"line_number":101,"context_line":"        except Exception:"},{"line_number":102,"context_line":"            pass"},{"line_number":103,"context_line":"        if data:"},{"line_number":104,"context_line":"            for key in self.contributes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_8c740d9d","line":101,"in_reply_to":"1a6eadb0_ec6f4b90","updated":"2016-12-13 13:47:43.000000000","message":"Done. I changed this to a proper condition.","commit_id":"d4971fce92fd463afd3f96b34bbae5a77d38450f"},{"author":{"_account_id":8648,"name":"Radomir Dopieralski","email":"openstack@dopieralski.pl","username":"thesheep"},"change_message_id":"566e65ac83b9690a1ff4697b2062411bb7a66bc0","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                # even if its value is empty to clear sec group setting."},{"line_number":163,"context_line":"                groups \u003d map(filters.get_int_or_uuid, data[\u0027wanted_groups\u0027])"},{"line_number":164,"context_line":"                extension_kwargs[\u0027security_groups\u0027] \u003d groups"},{"line_number":165,"context_line":"            except Exception:"},{"line_number":166,"context_line":"                pass"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"            port \u003d api.neutron.port_update(request,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_ccf9afca","line":165,"updated":"2016-12-13 09:31:40.000000000","message":"ditto","commit_id":"d4971fce92fd463afd3f96b34bbae5a77d38450f"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"ef1222d7386c0795c75c8d13e1463f9817cebe52","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                # even if its value is empty to clear sec group setting."},{"line_number":163,"context_line":"                groups \u003d map(filters.get_int_or_uuid, data[\u0027wanted_groups\u0027])"},{"line_number":164,"context_line":"                extension_kwargs[\u0027security_groups\u0027] \u003d groups"},{"line_number":165,"context_line":"            except Exception:"},{"line_number":166,"context_line":"                pass"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"            port \u003d api.neutron.port_update(request,"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_09d2af00","line":165,"in_reply_to":"1a6eadb0_ccf9afca","updated":"2016-12-13 13:47:43.000000000","message":"Done","commit_id":"d4971fce92fd463afd3f96b34bbae5a77d38450f"},{"author":{"_account_id":11885,"name":"Ying Zuo","email":"yingzuo4@gmail.com","username":"yingzuo"},"change_message_id":"a15a2f69a8031d7cb8e6ccb73830a1b1b1cb8ec4","unresolved":false,"context_lines":[{"line_number":115,"context_line":"class UpdatePortSecurityGroup(base_sec_group.BaseSecurityGroups):"},{"line_number":116,"context_line":"    action_class \u003d UpdatePortSecurityGroupAction"},{"line_number":117,"context_line":"    members_list_title \u003d _(\"Port Security Groups\")"},{"line_number":118,"context_line":"    help_text \u003d _(\"Add and remove security groups to this port \""},{"line_number":119,"context_line":"                  \"from the list of available security groups.\")"},{"line_number":120,"context_line":"    depends_on \u003d (\"port_id\", \u0027target_tenant_id\u0027)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"5f2577a7_f8de2ed8","line":118,"updated":"2017-09-18 01:34:32.000000000","message":"I don\u0027t think this is needed.","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"},{"author":{"_account_id":11885,"name":"Ying Zuo","email":"yingzuo4@gmail.com","username":"yingzuo"},"change_message_id":"944f48677c40bfd0b3779b53a410182d5d1b7e95","unresolved":false,"context_lines":[{"line_number":115,"context_line":"class UpdatePortSecurityGroup(base_sec_group.BaseSecurityGroups):"},{"line_number":116,"context_line":"    action_class \u003d UpdatePortSecurityGroupAction"},{"line_number":117,"context_line":"    members_list_title \u003d _(\"Port Security Groups\")"},{"line_number":118,"context_line":"    help_text \u003d _(\"Add and remove security groups to this port \""},{"line_number":119,"context_line":"                  \"from the list of available security groups.\")"},{"line_number":120,"context_line":"    depends_on \u003d (\"port_id\", \u0027target_tenant_id\u0027)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"1f2f7f8d_8e031b10","line":118,"in_reply_to":"1f2f7f8d_8b9aed6b","updated":"2017-09-19 02:10:06.000000000","message":"Yes. Please remove it.","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"68e2abcdafe85488ba57345fa35123a4840eed62","unresolved":false,"context_lines":[{"line_number":115,"context_line":"class UpdatePortSecurityGroup(base_sec_group.BaseSecurityGroups):"},{"line_number":116,"context_line":"    action_class \u003d UpdatePortSecurityGroupAction"},{"line_number":117,"context_line":"    members_list_title \u003d _(\"Port Security Groups\")"},{"line_number":118,"context_line":"    help_text \u003d _(\"Add and remove security groups to this port \""},{"line_number":119,"context_line":"                  \"from the list of available security groups.\")"},{"line_number":120,"context_line":"    depends_on \u003d (\"port_id\", \u0027target_tenant_id\u0027)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"1f2f7f8d_b1907897","line":118,"in_reply_to":"1f2f7f8d_8e031b10","updated":"2017-09-19 02:29:54.000000000","message":"Perhaps you also want to drop [1] but it is beyond the scope of this patch. I am okay to drop it for consistency if [1] plans to be dropped.\n\n[1] http://git.openstack.org/cgit/openstack/horizon/tree/openstack_dashboard/dashboards/project/instances/workflows/update_instance.py#n86","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"},{"author":{"_account_id":11885,"name":"Ying Zuo","email":"yingzuo4@gmail.com","username":"yingzuo"},"change_message_id":"26dc39a9bfb3f4ff9129b60af6de1d19da3a6aef","unresolved":false,"context_lines":[{"line_number":115,"context_line":"class UpdatePortSecurityGroup(base_sec_group.BaseSecurityGroups):"},{"line_number":116,"context_line":"    action_class \u003d UpdatePortSecurityGroupAction"},{"line_number":117,"context_line":"    members_list_title \u003d _(\"Port Security Groups\")"},{"line_number":118,"context_line":"    help_text \u003d _(\"Add and remove security groups to this port \""},{"line_number":119,"context_line":"                  \"from the list of available security groups.\")"},{"line_number":120,"context_line":"    depends_on \u003d (\"port_id\", \u0027target_tenant_id\u0027)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"bf57530f_17185e7f","line":118,"in_reply_to":"1f2f7f8d_b1907897","updated":"2017-09-20 03:16:37.000000000","message":"We have to start somewhere. If you really want to keep this help message, it should be \"Add or remove...\" instead of \"Add and remove..\"","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"bf4721086241e44c62451a2012976b18c3ccd2bf","unresolved":false,"context_lines":[{"line_number":115,"context_line":"class UpdatePortSecurityGroup(base_sec_group.BaseSecurityGroups):"},{"line_number":116,"context_line":"    action_class \u003d UpdatePortSecurityGroupAction"},{"line_number":117,"context_line":"    members_list_title \u003d _(\"Port Security Groups\")"},{"line_number":118,"context_line":"    help_text \u003d _(\"Add and remove security groups to this port \""},{"line_number":119,"context_line":"                  \"from the list of available security groups.\")"},{"line_number":120,"context_line":"    depends_on \u003d (\"port_id\", \u0027target_tenant_id\u0027)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"1f2f7f8d_8b9aed6b","line":118,"in_reply_to":"5f2577a7_f8de2ed8","updated":"2017-09-19 00:18:29.000000000","message":"Do you want me to drop the help message from all similar cases? I am not sure the exact reason. Inconsistency? Is it too clear to all users? There is no other place to provide some instruction to users in this case.","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"fca3d62678b0e55c271d2d879068d5acfa1a8354","unresolved":false,"context_lines":[{"line_number":115,"context_line":"class UpdatePortSecurityGroup(base_sec_group.BaseSecurityGroups):"},{"line_number":116,"context_line":"    action_class \u003d UpdatePortSecurityGroupAction"},{"line_number":117,"context_line":"    members_list_title \u003d _(\"Port Security Groups\")"},{"line_number":118,"context_line":"    help_text \u003d _(\"Add and remove security groups to this port \""},{"line_number":119,"context_line":"                  \"from the list of available security groups.\")"},{"line_number":120,"context_line":"    depends_on \u003d (\"port_id\", \u0027target_tenant_id\u0027)"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"bf57530f_a3bb91e3","line":118,"in_reply_to":"bf57530f_17185e7f","updated":"2017-10-20 23:57:34.000000000","message":"I fixed the message.\n\nIMHO this kind of change is better to be done at once, so my vote is to keep the consistency in this patch, file a bug and change all of related messages in a single patch to keep the consistency.","commit_id":"cc039c6a38a5c36ec905c3edae2a66c53616716d"}]}
