)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d8feaa404e27006bfa9465900a2144e8857fe3d1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Ankur Gupta \u003cankur.gupta@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-08-24 11:18:32 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Port-Create in Project Dashboard"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Gives end-users the ability to create and delete ports in their"},{"line_number":10,"context_line":"networks. The functionality will be implemented into the project"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa7ab95a_98260967","line":7,"updated":"2016-08-26 11:24:30.000000000","message":"a release note also needs to be added.","commit_id":"69d67c10f7cf127ecc12a54e1e919042e8aa6dd6"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"3a4b0ec92aded5b0540342dadc5f6130fa9a1b39","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Ankur Gupta \u003cankur.gupta@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-08-24 11:18:32 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add Port-Create in Project Dashboard"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Gives end-users the ability to create and delete ports in their"},{"line_number":10,"context_line":"networks. The functionality will be implemented into the project"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa7ab95a_09023f3d","line":7,"in_reply_to":"fa7ab95a_98260967","updated":"2016-08-29 14:54:28.000000000","message":"Ah yes, I missed it. Thanks.","commit_id":"69d67c10f7cf127ecc12a54e1e919042e8aa6dd6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d8feaa404e27006bfa9465900a2144e8857fe3d1","unresolved":false,"context_lines":[{"line_number":11,"context_line":"network details table."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Following the discussions in the bug discussion."},{"line_number":14,"context_line":"This functionality will be enabled/disabled via policy."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements Blueprint:"},{"line_number":17,"context_line":"https://blueprints.launchpad.net/horizon/+spec/network-ports-tenant"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa7ab95a_ed6af519","line":14,"updated":"2016-08-26 11:24:30.000000000","message":"IMHO this functionality should be provided in the initial implementation. I am not that controlling this feature via policy is a good idea or not. In the default configuration, Neutron allows regular users to delete a port even when it is attached an instance or something other. On the other hand, the dashboard is for more light users, so I thought it was better not to provide a way to delete a port directly in the initial network dashboard implementation. This feature raises this question again.\n\nI don\u0027t oppose this feature itself. It is useful.\n\nI think there are several options.\n\n- Add a new setting option which enable/disable the project port-create feature.\n- Add a check button \"Okay to delete port(s) being used\" to confirm an operation if a user tries to delete a port being used.\n\nMessage example: \"you are deleting a port used by instance(s) or other resources. This may leads to a situation where your resource(s) does not work properly.\"\n\nThe first option is simple enough. The second option provides more flexibility.\n\nThought?","commit_id":"69d67c10f7cf127ecc12a54e1e919042e8aa6dd6"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"3a4b0ec92aded5b0540342dadc5f6130fa9a1b39","unresolved":false,"context_lines":[{"line_number":11,"context_line":"network details table."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Following the discussions in the bug discussion."},{"line_number":14,"context_line":"This functionality will be enabled/disabled via policy."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements Blueprint:"},{"line_number":17,"context_line":"https://blueprints.launchpad.net/horizon/+spec/network-ports-tenant"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa7ab95a_d46aaeb2","line":14,"in_reply_to":"fa7ab95a_ed6af519","updated":"2016-08-29 14:54:28.000000000","message":"I do agree there needs to be a fuller message for delete. Something to point out the possible repercussions of deleting a port. However, if we are going to allow create port in the project dash, then delete will have to be there. \n\nLike you said in the first paragraph. Horizon if for more light users. And in my opinion, regardless of what the default is in Neutron. Horizon should do it based on policy. policy \"port-create\" \"port-delete\", which after that point its up to each implementation of what is allowed.","commit_id":"69d67c10f7cf127ecc12a54e1e919042e8aa6dd6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d8feaa404e27006bfa9465900a2144e8857fe3d1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Following the discussions in the bug discussion."},{"line_number":14,"context_line":"This functionality will be enabled/disabled via policy."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements Blueprint:"},{"line_number":17,"context_line":"https://blueprints.launchpad.net/horizon/+spec/network-ports-tenant"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I560b42b94acb6a2424fbc9b574b6e376c34ac9ee"},{"line_number":20,"context_line":"Implements Blueprint: network-ports-tenant"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa7ab95a_cddb71ec","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":67},"updated":"2016-08-26 11:24:30.000000000","message":"This and L.20 are duplicated. I think L.20 is enough.","commit_id":"69d67c10f7cf127ecc12a54e1e919042e8aa6dd6"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"3a4b0ec92aded5b0540342dadc5f6130fa9a1b39","unresolved":false,"context_lines":[{"line_number":13,"context_line":"Following the discussions in the bug discussion."},{"line_number":14,"context_line":"This functionality will be enabled/disabled via policy."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements Blueprint:"},{"line_number":17,"context_line":"https://blueprints.launchpad.net/horizon/+spec/network-ports-tenant"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I560b42b94acb6a2424fbc9b574b6e376c34ac9ee"},{"line_number":20,"context_line":"Implements Blueprint: network-ports-tenant"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa7ab95a_f467b2e6","line":17,"range":{"start_line":16,"start_character":0,"end_line":17,"end_character":67},"in_reply_to":"fa7ab95a_cddb71ec","updated":"2016-08-29 14:54:28.000000000","message":"will remove on next patchset","commit_id":"69d67c10f7cf127ecc12a54e1e919042e8aa6dd6"}],"openstack_dashboard/dashboards/admin/networks/ports/tables.py":[{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"c6a04f51c07b11873a61245698f028e671de4469","unresolved":false,"context_lines":[{"line_number":29,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class DeletePort(policy.PolicyTargetMixin, tables.DeleteAction):"},{"line_number":33,"context_line":"    @staticmethod"},{"line_number":34,"context_line":"    def action_present(count):"},{"line_number":35,"context_line":"        return ungettext_lazy("}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_56404834","line":32,"updated":"2016-06-08 04:32:08.000000000","message":"Can we inherit from project?","commit_id":"9079858ff43c2e7047d2d25f9e7921f0f233ef22"}],"openstack_dashboard/dashboards/project/networks/ports/forms.py":[{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"440bf4bc9a17511a6e720bd82a8f8894a9d8572e","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                help_text\u003d_(\"Device ID attached to the port\"),"},{"line_number":49,"context_line":"                                required\u003dFalse)"},{"line_number":50,"context_line":"    device_owner \u003d forms.CharField(max_length\u003d100, label\u003d_(\"Device Owner\"),"},{"line_number":51,"context_line":"                                   help_text\u003d_(\"Device owner attached to the \""},{"line_number":52,"context_line":"                                               \"port\"),"},{"line_number":53,"context_line":"                                   required\u003dFalse)"},{"line_number":54,"context_line":"    binding__host_id \u003d forms.CharField("}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_54827e53","line":51,"updated":"2016-05-27 18:52:23.000000000","message":"Suggest changing this help text to something like \"Owner of the device attached to the port\"","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"87a95c67aeff89a5b3143353485388b7304b1af0","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                help_text\u003d_(\"Device ID attached to the port\"),"},{"line_number":49,"context_line":"                                required\u003dFalse)"},{"line_number":50,"context_line":"    device_owner \u003d forms.CharField(max_length\u003d100, label\u003d_(\"Device Owner\"),"},{"line_number":51,"context_line":"                                   help_text\u003d_(\"Device owner attached to the \""},{"line_number":52,"context_line":"                                               \"port\"),"},{"line_number":53,"context_line":"                                   required\u003dFalse)"},{"line_number":54,"context_line":"    binding__host_id \u003d forms.CharField("}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_12de346d","line":51,"in_reply_to":"9abb7d3a_54827e53","updated":"2016-05-28 21:14:56.000000000","message":"Done","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"440bf4bc9a17511a6e720bd82a8f8894a9d8572e","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                    \"hosts.\"),"},{"line_number":59,"context_line":"        required\u003dFalse)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    failure_url \u003d \u0027horizon:project:networks:detail\u0027"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __init__(self, request, *args, **kwargs):"},{"line_number":64,"context_line":"        super(CreatePort, self).__init__(request, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_daddf571","line":61,"updated":"2016-05-27 18:52:23.000000000","message":"Should we redirect to port detail instead of network detail here?","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"f01118a2441d0d23028ae6405eccbd75830262e3","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                    \"hosts.\"),"},{"line_number":59,"context_line":"        required\u003dFalse)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    failure_url \u003d \u0027horizon:project:networks:detail\u0027"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __init__(self, request, *args, **kwargs):"},{"line_number":64,"context_line":"        super(CreatePort, self).__init__(request, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_fa6be782","line":61,"in_reply_to":"9abb7d3a_52e8bc10","updated":"2016-06-24 23:25:44.000000000","message":"Yeah, I think you\u0027re right here.","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"87a95c67aeff89a5b3143353485388b7304b1af0","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                    \"hosts.\"),"},{"line_number":59,"context_line":"        required\u003dFalse)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    failure_url \u003d \u0027horizon:project:networks:detail\u0027"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __init__(self, request, *args, **kwargs):"},{"line_number":64,"context_line":"        super(CreatePort, self).__init__(request, *args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_52e8bc10","line":61,"in_reply_to":"9abb7d3a_daddf571","updated":"2016-05-28 21:14:56.000000000","message":"I might be misunderstanding. But this is the CreatePort, so if a port has not been created it redirects to the failure_url. In which case is the network.detail since the port has not been created... right? Please correct me if I am wrong. Thanks","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"440bf4bc9a17511a6e720bd82a8f8894a9d8572e","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                del data[\u0027mac_state\u0027]"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"            port \u003d api.neutron.port_create(request, **data)"},{"line_number":104,"context_line":"            msg \u003d _(\u0027Port %s was successfully created.\u0027) % port[\u0027id\u0027]"},{"line_number":105,"context_line":"            LOG.debug(msg)"},{"line_number":106,"context_line":"            messages.success(request, msg)"},{"line_number":107,"context_line":"            return port"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_3f04f313","line":104,"updated":"2016-05-27 18:52:23.000000000","message":"I think it would be more user friendly to put the name of the port in this message if the user supplied a name.","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"87a95c67aeff89a5b3143353485388b7304b1af0","unresolved":false,"context_lines":[{"line_number":101,"context_line":"                del data[\u0027mac_state\u0027]"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"            port \u003d api.neutron.port_create(request, **data)"},{"line_number":104,"context_line":"            msg \u003d _(\u0027Port %s was successfully created.\u0027) % port[\u0027id\u0027]"},{"line_number":105,"context_line":"            LOG.debug(msg)"},{"line_number":106,"context_line":"            messages.success(request, msg)"},{"line_number":107,"context_line":"            return port"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_f2c1f081","line":104,"in_reply_to":"9abb7d3a_3f04f313","updated":"2016-05-28 21:14:56.000000000","message":"Done","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"440bf4bc9a17511a6e720bd82a8f8894a9d8572e","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            messages.success(request, msg)"},{"line_number":107,"context_line":"            return port"},{"line_number":108,"context_line":"        except Exception:"},{"line_number":109,"context_line":"            msg \u003d _(\u0027Failed to create a port for network %s\u0027) \\"},{"line_number":110,"context_line":"                % data[\u0027network_id\u0027]"},{"line_number":111,"context_line":"            LOG.info(msg)"},{"line_number":112,"context_line":"            redirect \u003d reverse(self.failure_url,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_7f0e7b35","line":109,"updated":"2016-05-27 18:52:23.000000000","message":"Same comment as above.","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"87a95c67aeff89a5b3143353485388b7304b1af0","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            messages.success(request, msg)"},{"line_number":107,"context_line":"            return port"},{"line_number":108,"context_line":"        except Exception:"},{"line_number":109,"context_line":"            msg \u003d _(\u0027Failed to create a port for network %s\u0027) \\"},{"line_number":110,"context_line":"                % data[\u0027network_id\u0027]"},{"line_number":111,"context_line":"            LOG.info(msg)"},{"line_number":112,"context_line":"            redirect \u003d reverse(self.failure_url,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_b2464821","line":109,"in_reply_to":"9abb7d3a_7f0e7b35","updated":"2016-05-28 21:14:56.000000000","message":"I would like to leave this the same, since it is referencing the network id rather than port information","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"f01118a2441d0d23028ae6405eccbd75830262e3","unresolved":false,"context_lines":[{"line_number":106,"context_line":"            messages.success(request, msg)"},{"line_number":107,"context_line":"            return port"},{"line_number":108,"context_line":"        except Exception:"},{"line_number":109,"context_line":"            msg \u003d _(\u0027Failed to create a port for network %s\u0027) \\"},{"line_number":110,"context_line":"                % data[\u0027network_id\u0027]"},{"line_number":111,"context_line":"            LOG.info(msg)"},{"line_number":112,"context_line":"            redirect \u003d reverse(self.failure_url,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3aaa91ec_3a08cfd9","line":109,"in_reply_to":"9abb7d3a_b2464821","updated":"2016-06-24 23:25:44.000000000","message":"That makes sense.","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":14151,"name":"ziyu032","email":"chen.qiaomin@99cloud.net","username":"ziyu032"},"change_message_id":"0b7b1859303dd8b0c060c4f4f7a691b01cef16f6","unresolved":false,"context_lines":[{"line_number":30,"context_line":"              (\u0027macvtap\u0027, _(\u0027MacVTap\u0027))]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class CreatePort(forms.SelfHandlingForm):"},{"line_number":34,"context_line":"    network_name \u003d forms.CharField(label\u003d_(\"Network Name\"),"},{"line_number":35,"context_line":"                                   widget\u003dforms.TextInput("},{"line_number":36,"context_line":"                                       attrs\u003d{\u0027readonly\u0027: \u0027readonly\u0027}),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9abb7d3a_73da5d18","line":33,"updated":"2016-06-02 07:23:30.000000000","message":"This class is much same with \"CreatePort\" in \"openstack/dashboards/admin/networks/ports/forms.py\",\ncan we inherit it.","commit_id":"8914bfe2c11376493e6cd1958d2463bbdcf47fb5"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"72aa4860de908a4a601c489adaa7bbcbc9f7c345","unresolved":false,"context_lines":[{"line_number":30,"context_line":"              (\u0027macvtap\u0027, _(\u0027MacVTap\u0027))]"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"class CreatePort(forms.SelfHandlingForm):"},{"line_number":34,"context_line":"    network_name \u003d forms.CharField(label\u003d_(\"Network Name\"),"},{"line_number":35,"context_line":"                                   widget\u003dforms.TextInput("},{"line_number":36,"context_line":"                                       attrs\u003d{\u0027readonly\u0027: \u0027readonly\u0027}),"}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_110e5834","line":33,"in_reply_to":"9abb7d3a_73da5d18","updated":"2016-06-06 01:45:36.000000000","message":"In current implementation, admin\u0027s implementation is inheriting project\u0027s it like UpdatePort in forms.py, DetailView and UpdateView in views.py.\n\nSo, IMO, we should basically implement project side and admin side is using project implementation (inherit it).","commit_id":"8914bfe2c11376493e6cd1958d2463bbdcf47fb5"},{"author":{"_account_id":17172,"name":"Kenji Ishii","email":"ken-ishii@sx.jp.nec.com","username":"kenji-ishii"},"change_message_id":"72aa4860de908a4a601c489adaa7bbcbc9f7c345","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def __init__(self, request, *args, **kwargs):"},{"line_number":64,"context_line":"        super(CreatePort, self).__init__(request, *args, **kwargs)"},{"line_number":65,"context_line":"        if api.neutron.is_extension_supported(request, \u0027binding\u0027):"},{"line_number":66,"context_line":"            neutron_settings \u003d getattr(settings,"},{"line_number":67,"context_line":"                                       \u0027OPENSTACK_NEUTRON_NETWORK\u0027, {})"},{"line_number":68,"context_line":"            supported_vnic_types \u003d neutron_settings.get("}],"source_content_type":"text/x-python","patch_set":3,"id":"7aa08908_71419c39","line":65,"updated":"2016-06-06 01:45:36.000000000","message":"non-admin user don\u0027t allow to set \u0027binding__host_id\u0027 in default neutron policy.\nSo when we implement this feature to Project, we should check whether user have a privilege or not.","commit_id":"8914bfe2c11376493e6cd1958d2463bbdcf47fb5"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"eb068f2096ed1d00a14378388d4b559c51e080cf","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                help_text\u003d_(\"Device ID attached to the port\"),"},{"line_number":49,"context_line":"                                required\u003dFalse)"},{"line_number":50,"context_line":"    device_owner \u003d forms.CharField(max_length\u003d100, label\u003d_(\"Device Owner\"),"},{"line_number":51,"context_line":"                                   help_text\u003d_(\"Owner of the device attached \""},{"line_number":52,"context_line":"                                               \"to the port\"),"},{"line_number":53,"context_line":"                                   required\u003dFalse)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_1aefd31e","line":51,"updated":"2016-06-24 23:21:59.000000000","message":"I think more specific help text would be helpful here. Is the owner of the device the project ID of the device? If so, this help text should ask for the project ID.","commit_id":"a17a2307f91a0da4918fa4d0ce00b9877849614b"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"8f60c9264f3b7f75d4887fa77e5000ddf4e4463b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                help_text\u003d_(\"Device ID attached to the port\"),"},{"line_number":49,"context_line":"                                required\u003dFalse)"},{"line_number":50,"context_line":"    device_owner \u003d forms.CharField(max_length\u003d100, label\u003d_(\"Device Owner\"),"},{"line_number":51,"context_line":"                                   help_text\u003d_(\"Owner of the device attached \""},{"line_number":52,"context_line":"                                               \"to the port\"),"},{"line_number":53,"context_line":"                                   required\u003dFalse)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_e9a02ef6","line":51,"in_reply_to":"3aaa91ec_1aefd31e","updated":"2016-06-27 04:31:14.000000000","message":"I am actually not sure. I went through the Neutron port-create help text and it also reads \"Device owner of this port.\" Will look into it","commit_id":"a17a2307f91a0da4918fa4d0ce00b9877849614b"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"a99ec885a7d0ac74e53e485ba74cfd1c8cb86261","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                help_text\u003d_(\"Device ID attached to the port\"),"},{"line_number":49,"context_line":"                                required\u003dFalse)"},{"line_number":50,"context_line":"    device_owner \u003d forms.CharField(max_length\u003d100, label\u003d_(\"Device Owner\"),"},{"line_number":51,"context_line":"                                   help_text\u003d_(\"Owner of the device attached \""},{"line_number":52,"context_line":"                                               \"to the port\"),"},{"line_number":53,"context_line":"                                   required\u003dFalse)"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_c851c2da","line":51,"updated":"2016-06-27 18:27:02.000000000","message":"I\u0027d still like to have more descriptive help text here, but after reading the neutron docs, there\u0027s a lot of inconsistency about what device_owner is. From our production installation, the field is filled with what looks like descriptive text about the entity that created the port, like \"compute:None\".\n\nSince there\u0027s no reliable documentation on it, I agree we might as well stick with the crappy text from the port-create help text.","commit_id":"0842c74a857a9939b89df9cdb7ddf520922832e8"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8b76065890d39d092fb44e698ec3b44d04a11529","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                help_text\u003d_(\"Device ID attached to the port\"),"},{"line_number":49,"context_line":"                                required\u003dFalse)"},{"line_number":50,"context_line":"    device_owner \u003d forms.CharField(max_length\u003d100, label\u003d_(\"Device Owner\"),"},{"line_number":51,"context_line":"                                   help_text\u003d_(\"Owner of the device attached \""},{"line_number":52,"context_line":"                                               \"to the port\"),"},{"line_number":53,"context_line":"                                   required\u003dFalse)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    failure_url \u003d \u0027horizon:project:networks:detail\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ac06dbe_f014a4e9","line":52,"range":{"start_line":51,"start_character":35,"end_line":52,"end_character":62},"updated":"2016-08-23 18:25:23.000000000","message":"nit: Consider changing the place of line breaks. It improves the readability.\n\n  forms.CharField(\n      max_length\u003d100, label\u003d_(\"Device Owner\"),\n      help_text\u003d_(\"Owner of the device attached to the port\"),\n      required\u003dFalse)","commit_id":"65d4cba4f6222938eeba883d8dbd381bfdb71217"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"2fd81ba8559ec4cd228fbcec5cfb8fce8bcc3aff","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                help_text\u003d_(\"Device ID attached to the port\"),"},{"line_number":49,"context_line":"                                required\u003dFalse)"},{"line_number":50,"context_line":"    device_owner \u003d forms.CharField(max_length\u003d100, label\u003d_(\"Device Owner\"),"},{"line_number":51,"context_line":"                                   help_text\u003d_(\"Owner of the device attached \""},{"line_number":52,"context_line":"                                               \"to the port\"),"},{"line_number":53,"context_line":"                                   required\u003dFalse)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    failure_url \u003d \u0027horizon:project:networks:detail\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ac06dbe_9502420a","line":52,"range":{"start_line":51,"start_character":35,"end_line":52,"end_character":62},"in_reply_to":"1ac06dbe_f014a4e9","updated":"2016-08-24 15:43:05.000000000","message":"Done","commit_id":"65d4cba4f6222938eeba883d8dbd381bfdb71217"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8b76065890d39d092fb44e698ec3b44d04a11529","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def handle(self, request, data):"},{"line_number":65,"context_line":"        try:"},{"line_number":66,"context_line":"            # We must specify tenant_id of the network which a subnet is"},{"line_number":67,"context_line":"            # created for if admin user does not belong to the tenant."},{"line_number":68,"context_line":"            network \u003d api.neutron.network_get(request, data[\u0027network_id\u0027])"},{"line_number":69,"context_line":"            data[\u0027tenant_id\u0027] \u003d network.tenant_id"},{"line_number":70,"context_line":"            data[\u0027admin_state_up\u0027] \u003d (data[\u0027admin_state\u0027] \u003d\u003d \u0027True\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ac06dbe_10c86073","line":67,"range":{"start_line":66,"start_character":12,"end_line":67,"end_character":70},"updated":"2016-08-23 18:25:23.000000000","message":"Why is this comment required in the form in the project panel.\nI think this comment only applies to the admin panel.","commit_id":"65d4cba4f6222938eeba883d8dbd381bfdb71217"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"2fd81ba8559ec4cd228fbcec5cfb8fce8bcc3aff","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def handle(self, request, data):"},{"line_number":65,"context_line":"        try:"},{"line_number":66,"context_line":"            # We must specify tenant_id of the network which a subnet is"},{"line_number":67,"context_line":"            # created for if admin user does not belong to the tenant."},{"line_number":68,"context_line":"            network \u003d api.neutron.network_get(request, data[\u0027network_id\u0027])"},{"line_number":69,"context_line":"            data[\u0027tenant_id\u0027] \u003d network.tenant_id"},{"line_number":70,"context_line":"            data[\u0027admin_state_up\u0027] \u003d (data[\u0027admin_state\u0027] \u003d\u003d \u0027True\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ac06dbe_58363fe8","line":67,"range":{"start_line":66,"start_character":12,"end_line":67,"end_character":70},"in_reply_to":"1ac06dbe_10c86073","updated":"2016-08-24 15:43:05.000000000","message":"Done","commit_id":"65d4cba4f6222938eeba883d8dbd381bfdb71217"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8b76065890d39d092fb44e698ec3b44d04a11529","unresolved":false,"context_lines":[{"line_number":66,"context_line":"            # We must specify tenant_id of the network which a subnet is"},{"line_number":67,"context_line":"            # created for if admin user does not belong to the tenant."},{"line_number":68,"context_line":"            network \u003d api.neutron.network_get(request, data[\u0027network_id\u0027])"},{"line_number":69,"context_line":"            data[\u0027tenant_id\u0027] \u003d network.tenant_id"},{"line_number":70,"context_line":"            data[\u0027admin_state_up\u0027] \u003d (data[\u0027admin_state\u0027] \u003d\u003d \u0027True\u0027)"},{"line_number":71,"context_line":"            del data[\u0027network_name\u0027]"},{"line_number":72,"context_line":"            del data[\u0027admin_state\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ac06dbe_308e3c2e","line":69,"range":{"start_line":69,"start_character":12,"end_line":69,"end_character":49},"updated":"2016-08-23 18:25:23.000000000","message":"Unnecessary for regular users.","commit_id":"65d4cba4f6222938eeba883d8dbd381bfdb71217"}],"openstack_dashboard/dashboards/project/networks/ports/tables.py":[{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"440bf4bc9a17511a6e720bd82a8f8894a9d8572e","unresolved":false,"context_lines":[{"line_number":70,"context_line":")"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class CreatePort(tables.LinkAction):"},{"line_number":74,"context_line":"    name \u003d \"create\""},{"line_number":75,"context_line":"    verbose_name \u003d _(\"Create Port\")"},{"line_number":76,"context_line":"    url \u003d \"horizon:project:networks:addport\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_d495ce40","line":73,"updated":"2016-05-27 18:52:23.000000000","message":"Do we need the PolicyTargetMixin here as well? Just wondering why it\u0027s used for UpdatePort and not Create.","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"87a95c67aeff89a5b3143353485388b7304b1af0","unresolved":false,"context_lines":[{"line_number":70,"context_line":")"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class CreatePort(tables.LinkAction):"},{"line_number":74,"context_line":"    name \u003d \"create\""},{"line_number":75,"context_line":"    verbose_name \u003d _(\"Create Port\")"},{"line_number":76,"context_line":"    url \u003d \"horizon:project:networks:addport\""}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_5256fcd2","line":73,"in_reply_to":"9abb7d3a_d495ce40","updated":"2016-05-28 21:14:56.000000000","message":"I am unsure. Will wait and see what others say.","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"440bf4bc9a17511a6e720bd82a8f8894a9d8572e","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    policy_rules \u003d ((\"network\", \"delete_port\"),)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def delete(self, request, obj_id):"},{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            api.neutron.port_delete(request, obj_id)"},{"line_number":108,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_b4ff6a33","line":105,"updated":"2016-05-27 18:52:23.000000000","message":"(nit) Suggest changing obj_id -\u003e port_id","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"87a95c67aeff89a5b3143353485388b7304b1af0","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    policy_rules \u003d ((\"network\", \"delete_port\"),)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def delete(self, request, obj_id):"},{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            api.neutron.port_delete(request, obj_id)"},{"line_number":108,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_726340b2","line":105,"in_reply_to":"9abb7d3a_b4ff6a33","updated":"2016-05-28 21:14:56.000000000","message":"Done","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"440bf4bc9a17511a6e720bd82a8f8894a9d8572e","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            api.neutron.port_delete(request, obj_id)"},{"line_number":108,"context_line":"        except Exception as e:"},{"line_number":109,"context_line":"            msg \u003d _(\u0027Failed to delete port: %s\u0027) % e"},{"line_number":110,"context_line":"            LOG.info(msg)"},{"line_number":111,"context_line":"            network_id \u003d self.table.kwargs[\u0027network_id\u0027]"},{"line_number":112,"context_line":"            redirect \u003d reverse(\u0027horizon:project:networks:detail\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_b46aca18","line":109,"updated":"2016-05-27 18:52:23.000000000","message":"Are there cases where msg will be shown to the user? If so, we should not put e into it, as it exposes system details that could be used by an attacker.","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"87a95c67aeff89a5b3143353485388b7304b1af0","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        try:"},{"line_number":107,"context_line":"            api.neutron.port_delete(request, obj_id)"},{"line_number":108,"context_line":"        except Exception as e:"},{"line_number":109,"context_line":"            msg \u003d _(\u0027Failed to delete port: %s\u0027) % e"},{"line_number":110,"context_line":"            LOG.info(msg)"},{"line_number":111,"context_line":"            network_id \u003d self.table.kwargs[\u0027network_id\u0027]"},{"line_number":112,"context_line":"            redirect \u003d reverse(\u0027horizon:project:networks:detail\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_b25da8eb","line":109,"in_reply_to":"9abb7d3a_b46aca18","updated":"2016-05-28 21:14:56.000000000","message":"Done","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"440bf4bc9a17511a6e720bd82a8f8894a9d8572e","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            msg \u003d _(\u0027Failed to delete port: %s\u0027) % e"},{"line_number":110,"context_line":"            LOG.info(msg)"},{"line_number":111,"context_line":"            network_id \u003d self.table.kwargs[\u0027network_id\u0027]"},{"line_number":112,"context_line":"            redirect \u003d reverse(\u0027horizon:project:networks:detail\u0027,"},{"line_number":113,"context_line":"                               args\u003d[network_id])"},{"line_number":114,"context_line":"            exceptions.handle(request, msg, redirect\u003dredirect)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_b4a00a92","line":112,"updated":"2016-05-27 18:52:23.000000000","message":"I think it would be better to redirect to the ports detail page if the port deletion fails.","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"87a95c67aeff89a5b3143353485388b7304b1af0","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            msg \u003d _(\u0027Failed to delete port: %s\u0027) % e"},{"line_number":110,"context_line":"            LOG.info(msg)"},{"line_number":111,"context_line":"            network_id \u003d self.table.kwargs[\u0027network_id\u0027]"},{"line_number":112,"context_line":"            redirect \u003d reverse(\u0027horizon:project:networks:detail\u0027,"},{"line_number":113,"context_line":"                               args\u003d[network_id])"},{"line_number":114,"context_line":"            exceptions.handle(request, msg, redirect\u003dredirect)"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_526d5c97","line":112,"in_reply_to":"9abb7d3a_b4a00a92","updated":"2016-05-28 21:14:56.000000000","message":"given the action is from the networks:detail table, I think it should redirect back to the same page. The port details page deletion action will redirect back to the port details page. \n\nBut thats another patch","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"eb068f2096ed1d00a14378388d4b559c51e080cf","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        return reverse(self.url, args\u003d(network_id,))"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class DeletePort(policy.PolicyTargetMixin, tables.DeleteAction):"},{"line_number":87,"context_line":"    @staticmethod"},{"line_number":88,"context_line":"    def action_present(count):"},{"line_number":89,"context_line":"        return ungettext_lazy("}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_7a56d706","line":86,"updated":"2016-06-24 23:21:59.000000000","message":"DeletePort still needs some work.\n\n\nWhen I click the name of a port to go to its detail screen and then click the \"Delete Port\" button, I get this message without the name or ID filled in:\n\n\nYou have selected: . Please confirm your selection. This action cannot be undone.\n\n\nAnd when I try to delete a port that has a name from the Ports tab, it shows a message with the ID, such as the one below. It would be more user friendly if the message contained the name of the port.\n\n\nYou have selected: \"009770d3-9cf8-49c5-b04c-388ed0c766c7\". Please confirm your selection. This action cannot be undone.","commit_id":"a17a2307f91a0da4918fa4d0ce00b9877849614b"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"8f60c9264f3b7f75d4887fa77e5000ddf4e4463b","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        return reverse(self.url, args\u003d(network_id,))"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class DeletePort(policy.PolicyTargetMixin, tables.DeleteAction):"},{"line_number":87,"context_line":"    @staticmethod"},{"line_number":88,"context_line":"    def action_present(count):"},{"line_number":89,"context_line":"        return ungettext_lazy("}],"source_content_type":"text/x-python","patch_set":7,"id":"3aaa91ec_498182fa","line":86,"in_reply_to":"3aaa91ec_7a56d706","updated":"2016-06-27 04:31:14.000000000","message":"Good catch!!! Although I believe this should be filed under another bug, beyond the scope of this patchset. You can replicate the same problem in admin when you go into details for ports, subnets, etc... When you try from the table it shows the name/id. But if you do into a ports/subnets/networks details and try deleting it omits the name/id just like above.\n\nActually I think this points to a much larger problem with the tabled/tabbed view. I actually am not even able to successfully delete the port, subnet or anything. I tried deleting a subnet while looking at the details and was not able to delete it. I submitted a bug, although not 100% sure if its an error in my env or globally. \n\nhttps://bugs.launchpad.net/horizon/+bug/1596411","commit_id":"a17a2307f91a0da4918fa4d0ce00b9877849614b"}],"openstack_dashboard/dashboards/project/networks/ports/views.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8b76065890d39d092fb44e698ec3b44d04a11529","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                       args\u003d(self.kwargs[\u0027network_id\u0027],))"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @memoized.memoized_method"},{"line_number":52,"context_line":"    def get_object(self):"},{"line_number":53,"context_line":"        try:"},{"line_number":54,"context_line":"            network_id \u003d self.kwargs[\"network_id\"]"},{"line_number":55,"context_line":"            return api.neutron.network_get(self.request, network_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"bacf61ea_87bc796d","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":18},"updated":"2016-08-23 18:25:23.000000000","message":"I think \u0027get_network\u0027 is a clearer name. This class is about a port, so \u0027get_object\u0027 sounds a bit tricky to me.","commit_id":"65d4cba4f6222938eeba883d8dbd381bfdb71217"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"2fd81ba8559ec4cd228fbcec5cfb8fce8bcc3aff","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                       args\u003d(self.kwargs[\u0027network_id\u0027],))"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @memoized.memoized_method"},{"line_number":52,"context_line":"    def get_object(self):"},{"line_number":53,"context_line":"        try:"},{"line_number":54,"context_line":"            network_id \u003d self.kwargs[\"network_id\"]"},{"line_number":55,"context_line":"            return api.neutron.network_get(self.request, network_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ac06dbe_58d91f83","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":18},"in_reply_to":"bacf61ea_87bc796d","updated":"2016-08-24 15:43:05.000000000","message":"Done","commit_id":"65d4cba4f6222938eeba883d8dbd381bfdb71217"}],"openstack_dashboard/dashboards/project/networks/templates/networks/ports/_create.html":[{"author":{"_account_id":20506,"name":"Juan Pablo lopez Gutierrez","email":"juan.pablo.lopez.gutierrez@intel.com","username":"jlopezgu"},"change_message_id":"05f10f90975f8119a8506a2aee1033a2582e01ef","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block modal-body-right %}"},{"line_number":5,"context_line":"  \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":6,"context_line":"  \u003cp\u003e{% trans \"You can create a port for the network. If you specify device ID to be attached, the device specified will be attached to the port created.\"%}\u003c/p\u003e"},{"line_number":7,"context_line":"{% endblock %}"}],"source_content_type":"text/html","patch_set":2,"id":"bab6814e_a4b3214c","line":6,"updated":"2016-05-26 19:25:51.000000000","message":"Are templates allowed to have this line size?","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":20506,"name":"Juan Pablo lopez Gutierrez","email":"juan.pablo.lopez.gutierrez@intel.com","username":"jlopezgu"},"change_message_id":"3d828d096694f5f0c260996f2aaa0b8014cb5286","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block modal-body-right %}"},{"line_number":5,"context_line":"  \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":6,"context_line":"  \u003cp\u003e{% trans \"You can create a port for the network. If you specify device ID to be attached, the device specified will be attached to the port created.\"%}\u003c/p\u003e"},{"line_number":7,"context_line":"{% endblock %}"}],"source_content_type":"text/html","patch_set":2,"id":"9abb7d3a_3a308156","line":6,"in_reply_to":"9abb7d3a_1aae5d85","updated":"2016-05-27 18:59:21.000000000","message":":o ok, Thanks. It\u0027s good to know it","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":20506,"name":"Juan Pablo lopez Gutierrez","email":"juan.pablo.lopez.gutierrez@intel.com","username":"jlopezgu"},"change_message_id":"d8ca990ba093ae23d81d49a4a3bbdd704a9a0cee","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block modal-body-right %}"},{"line_number":5,"context_line":"  \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":6,"context_line":"  \u003cp\u003e{% trans \"You can create a port for the network. If you specify device ID to be attached, the device specified will be attached to the port created.\"%}\u003c/p\u003e"},{"line_number":7,"context_line":"{% endblock %}"}],"source_content_type":"text/html","patch_set":2,"id":"9abb7d3a_ba511165","line":6,"in_reply_to":"9abb7d3a_1aae5d85","updated":"2016-05-27 19:00:23.000000000","message":"Done","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":7179,"name":"Brad Pokorny","email":"brad_pokorny@symantec.com","username":"bpokorny"},"change_message_id":"2ac82196c400c807372f2fa0525e139a84331ac5","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block modal-body-right %}"},{"line_number":5,"context_line":"  \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":6,"context_line":"  \u003cp\u003e{% trans \"You can create a port for the network. If you specify device ID to be attached, the device specified will be attached to the port created.\"%}\u003c/p\u003e"},{"line_number":7,"context_line":"{% endblock %}"}],"source_content_type":"text/html","patch_set":2,"id":"9abb7d3a_1aae5d85","line":6,"in_reply_to":"bab6814e_a4b3214c","updated":"2016-05-27 18:53:56.000000000","message":"Yeah, the length of this line is fine. We do this in quite a few html files, since I think there\u0027s no good way in the Django language to split lines.","commit_id":"0aaf0c949e5373bf2cbff7ee1edeadba8d0bdd04"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"8b76065890d39d092fb44e698ec3b44d04a11529","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block modal-body-right %}"},{"line_number":5,"context_line":"  \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":6,"context_line":"  \u003cp\u003e{% trans \"You can create a port for the network. If you specify device ID to be attached, the device specified will be attached to the port created.\"%}\u003c/p\u003e"},{"line_number":7,"context_line":"{% endblock %}"}],"source_content_type":"text/html","patch_set":10,"id":"1ac06dbe_d04ec839","line":6,"updated":"2016-08-23 18:25:23.000000000","message":"The line is too long.\nConsider using blocktrans instead.","commit_id":"65d4cba4f6222938eeba883d8dbd381bfdb71217"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"78c5df77844785c6e2874e1489bf6c14bf54a775","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block modal-body-right %}"},{"line_number":5,"context_line":"  \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":6,"context_line":"  \u003cp\u003e{% trans \"You can create a port for the network. If you specify device ID to be attached, the device specified will be attached to the port created.\"%}\u003c/p\u003e"},{"line_number":7,"context_line":"{% endblock %}"}],"source_content_type":"text/html","patch_set":10,"id":"1ac06dbe_9e7d3fb4","line":6,"in_reply_to":"1ac06dbe_d04ec839","updated":"2016-08-24 16:13:16.000000000","message":"Done","commit_id":"65d4cba4f6222938eeba883d8dbd381bfdb71217"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"d8feaa404e27006bfa9465900a2144e8857fe3d1","unresolved":false,"context_lines":[{"line_number":3,"context_line":""},{"line_number":4,"context_line":"{% block modal-body-right %}"},{"line_number":5,"context_line":"  \u003ch3\u003e{% trans \"Description:\" %}\u003c/h3\u003e"},{"line_number":6,"context_line":"  \u003cp\u003e{% blocktrans %} You can create a port for the network. If you specify device ID to be attached, the device specified will be attached to the port created.{% endblocktrans %}\u003c/p\u003e"},{"line_number":7,"context_line":"{% endblock %}"}],"source_content_type":"text/html","patch_set":11,"id":"fa7ab95a_ad3aad34","line":6,"updated":"2016-08-26 11:24:30.000000000","message":"Could you wrap lines with appropriate width?\nblocktrans is now used, so you can wrap lines.","commit_id":"69d67c10f7cf127ecc12a54e1e919042e8aa6dd6"}]}
