)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"2727443fd15fe31f263ecf79a332bea523dbdbd2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Lajos Katona \u003clajos.katona@ericsson.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-10-31 13:28:14 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Trunks admin panel"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Icfc01612cc60798e4b0ff7379a9c8b83d3f1d60b"},{"line_number":10,"context_line":"Implements: blueprint neutron-trunk-ui"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f4b6375_cc5f9ce3","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":18},"updated":"2017-10-31 13:13:58.000000000","message":"I know what this patch is because you told me, but for others we could have a bit more wordy commit message.","commit_id":"f90285ae0dc8d662771358018218bcc189759b18"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"c7dc75558232f9e372f10f2a7f35b3464c909b7b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Lajos Katona \u003clajos.katona@ericsson.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-10-31 13:28:14 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Trunks admin panel"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Icfc01612cc60798e4b0ff7379a9c8b83d3f1d60b"},{"line_number":10,"context_line":"Implements: blueprint neutron-trunk-ui"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df87a7cf_47f915c6","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":18},"in_reply_to":"3f4b6375_cc5f9ce3","updated":"2017-12-05 13:30:56.000000000","message":"Done","commit_id":"f90285ae0dc8d662771358018218bcc189759b18"}],"openstack_dashboard/dashboards/admin/trunks/panel.py":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"2727443fd15fe31f263ecf79a332bea523dbdbd2","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        except Exception:"},{"line_number":42,"context_line":"            LOG.error(\"Call to list enabled services failed. This is likely \""},{"line_number":43,"context_line":"                      \"due to a problem communicating with the Neutron \""},{"line_number":44,"context_line":"                      \"endpoint. Trunks panel will not be displayed.\")"},{"line_number":45,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4b6375_2cf3d0e9","line":44,"range":{"start_line":44,"start_character":33,"end_line":44,"end_character":45},"updated":"2017-10-31 13:13:58.000000000","message":"\"Trunks admin panel\". Otherwise we may not know which panel logged this message.","commit_id":"f90285ae0dc8d662771358018218bcc189759b18"},{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"029190c47effe43b351201912767c92c2ea5a45c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        except Exception:"},{"line_number":42,"context_line":"            LOG.error(\"Call to list enabled services failed. This is likely \""},{"line_number":43,"context_line":"                      \"due to a problem communicating with the Neutron \""},{"line_number":44,"context_line":"                      \"endpoint. Trunks panel will not be displayed.\")"},{"line_number":45,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff82abbf_54f17e94","line":44,"range":{"start_line":44,"start_character":33,"end_line":44,"end_character":45},"updated":"2017-11-25 09:03:07.000000000","message":"As Bence\u0027s comments in patch set 1.\n\"Trunks admin panel\". Otherwise we may not know which panel logged this message.","commit_id":"93507a9fd95ff174211044a57c7bd3eb532ec689"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"3f17940973f6fc37de8fc0feb6a8be4d1821aa91","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        except Exception:"},{"line_number":42,"context_line":"            LOG.error(\"Call to list enabled services failed. This is likely \""},{"line_number":43,"context_line":"                      \"due to a problem communicating with the Neutron \""},{"line_number":44,"context_line":"                      \"endpoint. Trunks panel will not be displayed.\")"},{"line_number":45,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff82abbf_deb49df4","line":44,"range":{"start_line":44,"start_character":33,"end_line":44,"end_character":45},"in_reply_to":"ff82abbf_54f17e94","updated":"2017-11-28 12:24:44.000000000","message":"Thanks for noticing, Done","commit_id":"93507a9fd95ff174211044a57c7bd3eb532ec689"}],"openstack_dashboard/dashboards/admin/trunks/urls.py":[{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"849c56c78af4ee49ce06d2558b508c3c83b0de0f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"title \u003d _(\"Trunks\")"},{"line_number":22,"context_line":"urlpatterns \u003d ["},{"line_number":23,"context_line":"    url(r\u0027^$\u0027, AngularIndexView.as_view(title\u003dtitle), name\u003d\u0027index\u0027),"},{"line_number":24,"context_line":"    url(r\u0027^(?P\u003ctrunk_id\u003e[^/]+)/detail/$\u0027,"},{"line_number":25,"context_line":"        AngularIndexView.as_view(title\u003dtitle), name\u003d\u0027detail\u0027),"},{"line_number":26,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":18,"id":"7f96bb07_c23677b5","line":24,"range":{"start_line":24,"start_character":31,"end_line":24,"end_character":38},"updated":"2018-01-23 03:23:36.000000000","message":"if you don\u0027t have plan to implement other view underneath the trunk, I think \u0027detail/\u0027 is not needed.","commit_id":"9905e3d345659bb757f4203a1cc11a8123a21648"}],"openstack_dashboard/enabled/_2340_admin_trunks_panel.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b60fbc922ff4fc4919cd2ab96bed0d406a4fa781","unresolved":false,"context_lines":[{"line_number":6,"context_line":"PANEL_GROUP \u003d \u0027network\u0027"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"# Python panel class of the PANEL to be added."},{"line_number":9,"context_line":"ADD_PANEL \u003d \\"},{"line_number":10,"context_line":"    \u0027openstack_dashboard.dashboards.admin.trunks.panel.Trunks\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff82abbf_e5b65a3f","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":62},"updated":"2017-11-30 23:36:43.000000000","message":"No need to wrap lines.","commit_id":"e2590c690ae6d35828350cdc400eb8b738182f15"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8e5fab031d39380f6b7ee89b28501bce4a555a10","unresolved":false,"context_lines":[{"line_number":6,"context_line":"PANEL_GROUP \u003d \u0027network\u0027"},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"# Python panel class of the PANEL to be added."},{"line_number":9,"context_line":"ADD_PANEL \u003d \\"},{"line_number":10,"context_line":"    \u0027openstack_dashboard.dashboards.admin.trunks.panel.Trunks\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff82abbf_12305807","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":62},"in_reply_to":"ff82abbf_e5b65a3f","updated":"2017-12-01 11:00:08.000000000","message":"Done","commit_id":"e2590c690ae6d35828350cdc400eb8b738182f15"}],"openstack_dashboard/static/app/core/openstack-service-api/neutron.service.js":[{"author":{"_account_id":6763,"name":"jingliuqing","email":"jing.liuqing@99cloud.net","username":"jing"},"change_message_id":"95fc225b1d087412a1e8fccaa4868130985b3e04","unresolved":false,"context_lines":[{"line_number":449,"context_line":"     * @param {boolean} suppressError (optional)"},{"line_number":450,"context_line":"     * Suppress the error toast. Default to showing it."},{"line_number":451,"context_line":"     */"},{"line_number":452,"context_line":"    function deleteTrunk(trunkId, suppressError) {"},{"line_number":453,"context_line":"      var promise \u003d apiService.delete(\u0027/api/neutron/trunks/\u0027 + trunkId + \u0027/\u0027);"},{"line_number":454,"context_line":"      promise \u003d suppressError ? promise : promise.error(function() {"},{"line_number":455,"context_line":"        var msg \u003d gettext(\u0027Unable to delete trunk: %(id)s\u0027);"}],"source_content_type":"text/javascript","patch_set":17,"id":"9f91af0f_a1527e66","side":"PARENT","line":452,"range":{"start_line":452,"start_character":34,"end_line":452,"end_character":47},"updated":"2018-01-02 04:27:54.000000000","message":"why remove the arg, sometimes we could customize error message","commit_id":"335e7681e93374d9417c9d0856830db0cbf23dac"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"000ebe5ea1ebb4fdea781e32d8c4889964f00110","unresolved":false,"context_lines":[{"line_number":449,"context_line":"     * @param {boolean} suppressError (optional)"},{"line_number":450,"context_line":"     * Suppress the error toast. Default to showing it."},{"line_number":451,"context_line":"     */"},{"line_number":452,"context_line":"    function deleteTrunk(trunkId, suppressError) {"},{"line_number":453,"context_line":"      var promise \u003d apiService.delete(\u0027/api/neutron/trunks/\u0027 + trunkId + \u0027/\u0027);"},{"line_number":454,"context_line":"      promise \u003d suppressError ? promise : promise.error(function() {"},{"line_number":455,"context_line":"        var msg \u003d gettext(\u0027Unable to delete trunk: %(id)s\u0027);"}],"source_content_type":"text/javascript","patch_set":17,"id":"7f96bb07_f7b10de3","side":"PARENT","line":452,"range":{"start_line":452,"start_character":34,"end_line":452,"end_character":47},"in_reply_to":"9f91af0f_a1527e66","updated":"2018-01-12 09:34:22.000000000","message":"Done","commit_id":"335e7681e93374d9417c9d0856830db0cbf23dac"}],"openstack_dashboard/static/app/core/trunks/actions/actions.module.js":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"b60fbc922ff4fc4919cd2ab96bed0d406a4fa781","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    // NOTE(lajos katona): in case of admin let\u0027s disable all actions."},{"line_number":55,"context_line":"    // TODO(lajos katona): make possble to create/delete/edit from admin panel"},{"line_number":56,"context_line":"    if (fromNonAdminUrl) {"},{"line_number":57,"context_line":"      trunkResourceType.globalActions"},{"line_number":58,"context_line":"        .append({"}],"source_content_type":"text/javascript","patch_set":14,"id":"ff82abbf_45c14680","line":55,"range":{"start_line":55,"start_character":43,"end_line":55,"end_character":61},"updated":"2017-11-30 23:36:43.000000000","message":"I think \u0027delete\u0027 can be supported now. \"Delete\" action is useful for admin.","commit_id":"e2590c690ae6d35828350cdc400eb8b738182f15"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8e5fab031d39380f6b7ee89b28501bce4a555a10","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    // NOTE(lajos katona): in case of admin let\u0027s disable all actions."},{"line_number":55,"context_line":"    // TODO(lajos katona): make possble to create/delete/edit from admin panel"},{"line_number":56,"context_line":"    if (fromNonAdminUrl) {"},{"line_number":57,"context_line":"      trunkResourceType.globalActions"},{"line_number":58,"context_line":"        .append({"}],"source_content_type":"text/javascript","patch_set":14,"id":"ff82abbf_920c6843","line":55,"range":{"start_line":55,"start_character":43,"end_line":55,"end_character":61},"in_reply_to":"ff82abbf_45c14680","updated":"2017-12-01 11:00:08.000000000","message":"I added back the delete operation for admin, but to make that work as expected I moved the patch on top of Shu\u0027s ngdetails series","commit_id":"e2590c690ae6d35828350cdc400eb8b738182f15"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5b1e98512067e38d644b08009624c83e93333b5b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    $location"},{"line_number":50,"context_line":"  ) {"},{"line_number":51,"context_line":"    var trunkResourceType \u003d registry.getResourceType(trunkResourceTypeCode);"},{"line_number":52,"context_line":"    var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    // NOTE(lajos katona): in case of admin let\u0027s disable all actions."},{"line_number":55,"context_line":"    // TODO(lajos katona): make possible to create/edit from admin panel"}],"source_content_type":"text/javascript","patch_set":17,"id":"bf8cb3f7_9d3254a7","line":52,"range":{"start_line":52,"start_character":4,"end_line":52,"end_character":68},"updated":"2017-12-20 19:16:16.000000000","message":"The current horizon allows operators to relocate a panel to another dashboard. This prevents from relocating the panel.\n\nCan\u0027t we declare this is the admin dashboard for example from trunk-admin.html or something?\n\nI am not familiar with this area so I might be wrong.","commit_id":"d32a56bc9b2a100f0c65d2f9744b8d604026d41c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"479f944ce76a6ef680d1884ced43bb7d7da04490","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    $location"},{"line_number":50,"context_line":"  ) {"},{"line_number":51,"context_line":"    var trunkResourceType \u003d registry.getResourceType(trunkResourceTypeCode);"},{"line_number":52,"context_line":"    var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    // NOTE(lajos katona): in case of admin let\u0027s disable all actions."},{"line_number":55,"context_line":"    // TODO(lajos katona): make possible to create/edit from admin panel"}],"source_content_type":"text/javascript","patch_set":17,"id":"7f96bb07_9fbe7ed2","line":52,"range":{"start_line":52,"start_character":4,"end_line":52,"end_character":68},"in_reply_to":"7f96bb07_77217dfb","updated":"2018-01-23 11:29:16.000000000","message":"A Usecase in my mind last time I commented is not to move some panel from project to admin or vice versa. What in my mind is to to prepare more dashboard group other than \"project\" or \"admin\" as we do for \"identity\" group.\n\nI am okay with the current version. it is beyond the scope of your patch and perhaps it is an issue around AngularJS migration. I was not involved in discussions around AngularJS migration and I guess they didn\u0027t take care of this kind of problems (like ngdetail refresh issue as you see).","commit_id":"d32a56bc9b2a100f0c65d2f9744b8d604026d41c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"000ebe5ea1ebb4fdea781e32d8c4889964f00110","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    $location"},{"line_number":50,"context_line":"  ) {"},{"line_number":51,"context_line":"    var trunkResourceType \u003d registry.getResourceType(trunkResourceTypeCode);"},{"line_number":52,"context_line":"    var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    // NOTE(lajos katona): in case of admin let\u0027s disable all actions."},{"line_number":55,"context_line":"    // TODO(lajos katona): make possible to create/edit from admin panel"}],"source_content_type":"text/javascript","patch_set":17,"id":"7f96bb07_b7cb8551","line":52,"range":{"start_line":52,"start_character":4,"end_line":52,"end_character":68},"in_reply_to":"9f91af0f_e1d5e6ba","updated":"2018-01-12 09:34:22.000000000","message":"I moved the check to allowed functions, please check create.action.service.js and edit.action.service.js","commit_id":"d32a56bc9b2a100f0c65d2f9744b8d604026d41c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"f80653123c52a27fa49e9939c40fe69c8deda6c9","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    $location"},{"line_number":50,"context_line":"  ) {"},{"line_number":51,"context_line":"    var trunkResourceType \u003d registry.getResourceType(trunkResourceTypeCode);"},{"line_number":52,"context_line":"    var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    // NOTE(lajos katona): in case of admin let\u0027s disable all actions."},{"line_number":55,"context_line":"    // TODO(lajos katona): make possible to create/edit from admin panel"}],"source_content_type":"text/javascript","patch_set":17,"id":"7f96bb07_77217dfb","line":52,"range":{"start_line":52,"start_character":4,"end_line":52,"end_character":68},"in_reply_to":"bf8cb3f7_9d3254a7","updated":"2018-01-12 09:51:47.000000000","message":"Akihiro, I tried to add the check to admin-panel.html but due to variable visibility problems (features) I was not able to propagate that to the necessary places. I moved the logic otherwise to create and edit action.service.js allowed functions as Liuqing asked.\nFor the relocation problem if I understand well the issue appears only if the operator moves the panel from admin dashboard to project or vica-versa, and that seems anyway a strange usecase for me.","commit_id":"d32a56bc9b2a100f0c65d2f9744b8d604026d41c"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"5fbd70c3b9283bb2387b43cfd236ecfa390daf94","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    $location"},{"line_number":50,"context_line":"  ) {"},{"line_number":51,"context_line":"    var trunkResourceType \u003d registry.getResourceType(trunkResourceTypeCode);"},{"line_number":52,"context_line":"    var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    // NOTE(lajos katona): in case of admin let\u0027s disable all actions."},{"line_number":55,"context_line":"    // TODO(lajos katona): make possible to create/edit from admin panel"}],"source_content_type":"text/javascript","patch_set":17,"id":"9f91af0f_4993025c","line":52,"range":{"start_line":52,"start_character":4,"end_line":52,"end_character":68},"in_reply_to":"bf8cb3f7_9d3254a7","updated":"2018-01-09 15:18:31.000000000","message":"Akihiro, thanks for commenting, and warning for the issue with panel relocation.\n\nI tried to declare this variable from html, but if I understand well due to the embedded templates / or due to some visibility issue which I don\u0027t understand that is not visible from the module or from the service files.\nI try to find some solution or somebody who can help in this.\n\nCome back as soon as possible.","commit_id":"d32a56bc9b2a100f0c65d2f9744b8d604026d41c"},{"author":{"_account_id":6763,"name":"jingliuqing","email":"jing.liuqing@99cloud.net","username":"jing"},"change_message_id":"95fc225b1d087412a1e8fccaa4868130985b3e04","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    $location"},{"line_number":50,"context_line":"  ) {"},{"line_number":51,"context_line":"    var trunkResourceType \u003d registry.getResourceType(trunkResourceTypeCode);"},{"line_number":52,"context_line":"    var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    // NOTE(lajos katona): in case of admin let\u0027s disable all actions."},{"line_number":55,"context_line":"    // TODO(lajos katona): make possible to create/edit from admin panel"}],"source_content_type":"text/javascript","patch_set":17,"id":"9f91af0f_e1d5e6ba","line":52,"range":{"start_line":52,"start_character":4,"end_line":52,"end_character":68},"in_reply_to":"bf8cb3f7_9d3254a7","updated":"2018-01-02 04:27:54.000000000","message":"prefer use it in action allowed()","commit_id":"d32a56bc9b2a100f0c65d2f9744b8d604026d41c"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"72b00c5c91f2997239e31b435694e76cb0dc7d8c","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    var trunkResourceType \u003d registry.getResourceType(trunkResourceTypeCode);"},{"line_number":52,"context_line":"    var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    // NOTE(lajos katona): in case of admin let\u0027s disable all actions."},{"line_number":55,"context_line":"    // TODO(lajos katona): make possible to create/edit from admin panel"},{"line_number":56,"context_line":"    if (fromNonAdminUrl) {"},{"line_number":57,"context_line":"      trunkResourceType.globalActions"}],"source_content_type":"text/javascript","patch_set":17,"id":"df87a7cf_211b8581","line":54,"range":{"start_line":54,"start_character":0,"end_line":54,"end_character":70},"updated":"2017-12-06 10:23:22.000000000","message":"nit: s/all/create and edit/","commit_id":"d32a56bc9b2a100f0c65d2f9744b8d604026d41c"}],"openstack_dashboard/static/app/core/trunks/actions/create.action.service.js":[{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"f6fe79bc8572a51e4c5ed52442256a5865a2df15","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    ////////////"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    function allowed() {"},{"line_number":69,"context_line":"      // NOTE(lajos katona): in case of admin let\u0027s disable edit actions."},{"line_number":70,"context_line":"      // TODO(lajos katona): make possible to create/edit from admin panel"},{"line_number":71,"context_line":"      var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":72,"context_line":"      var deferred \u003d $q.defer();"}],"source_content_type":"text/javascript","patch_set":20,"id":"5f93b717_fb8a1d19","line":69,"range":{"start_line":69,"start_character":60,"end_line":69,"end_character":64},"updated":"2018-01-29 16:23:01.000000000","message":"create","commit_id":"11bf568502c47c418a9eafaae69e04567cfd3b44"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"f1910621017294e6b82b68e45685241f58ec6ffd","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    ////////////"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    function allowed() {"},{"line_number":69,"context_line":"      // NOTE(lajos katona): in case of admin let\u0027s disable edit actions."},{"line_number":70,"context_line":"      // TODO(lajos katona): make possible to create/edit from admin panel"},{"line_number":71,"context_line":"      var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":72,"context_line":"      var deferred \u003d $q.defer();"}],"source_content_type":"text/javascript","patch_set":20,"id":"5f93b717_93ff3d33","line":69,"range":{"start_line":69,"start_character":60,"end_line":69,"end_character":64},"in_reply_to":"5f93b717_fb8a1d19","updated":"2018-01-29 19:26:41.000000000","message":"Thanks for the feedback, done :-)","commit_id":"11bf568502c47c418a9eafaae69e04567cfd3b44"}],"openstack_dashboard/static/app/core/trunks/actions/edit.action.service.js":[{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"029190c47effe43b351201912767c92c2ea5a45c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"      return $q.all({"},{"line_number":80,"context_line":"        getNetworks: userSession.get().then(function(session) {"},{"line_number":81,"context_line":"          var params \u003d {};"},{"line_number":82,"context_line":"          if ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1) {"},{"line_number":83,"context_line":"            params \u003d {project_id: session.project_id};"},{"line_number":84,"context_line":"          }"},{"line_number":85,"context_line":"          return neutron.getNetworks(params);"}],"source_content_type":"text/javascript","patch_set":10,"id":"ff82abbf_54aade70","line":82,"range":{"start_line":82,"start_character":14,"end_line":82,"end_character":53},"updated":"2017-11-25 09:03:07.000000000","message":"The trunk details page also has row actions, when we edit trunk in its detail page, the url we get is the details url(“/ngdetails/OS::Neutron::Trunk/uuid”), which does not contain dashboard information.","commit_id":"93507a9fd95ff174211044a57c7bd3eb532ec689"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"3f17940973f6fc37de8fc0feb6a8be4d1821aa91","unresolved":false,"context_lines":[{"line_number":79,"context_line":"      return $q.all({"},{"line_number":80,"context_line":"        getNetworks: userSession.get().then(function(session) {"},{"line_number":81,"context_line":"          var params \u003d {};"},{"line_number":82,"context_line":"          if ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1) {"},{"line_number":83,"context_line":"            params \u003d {project_id: session.project_id};"},{"line_number":84,"context_line":"          }"},{"line_number":85,"context_line":"          return neutron.getNetworks(params);"}],"source_content_type":"text/javascript","patch_set":10,"id":"ff82abbf_5e9ded63","line":82,"range":{"start_line":82,"start_character":14,"end_line":82,"end_character":53},"in_reply_to":"ff82abbf_54aade70","updated":"2017-11-28 12:24:44.000000000","message":"Thanks for noticing, for this one as I see I need Shu\u0027s patch: https://review.openstack.org/491346 for ngdetails navigation problem.","commit_id":"93507a9fd95ff174211044a57c7bd3eb532ec689"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"54b617508f665777972202acd774c0d4c72c7378","unresolved":false,"context_lines":[{"line_number":79,"context_line":"      return $q.all({"},{"line_number":80,"context_line":"        getNetworks: userSession.get().then(function(session) {"},{"line_number":81,"context_line":"          var params \u003d {};"},{"line_number":82,"context_line":"          if ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1) {"},{"line_number":83,"context_line":"            params \u003d {project_id: session.project_id};"},{"line_number":84,"context_line":"          }"},{"line_number":85,"context_line":"          return neutron.getNetworks(params);"}],"source_content_type":"text/javascript","patch_set":10,"id":"ff82abbf_6d46a552","line":82,"range":{"start_line":82,"start_character":14,"end_line":82,"end_character":53},"in_reply_to":"ff82abbf_5e9ded63","updated":"2017-12-01 11:02:26.000000000","message":"Hi Wei, after Akihiro\u0027s comments I removed the possibilty of editing \u0026 creating trunks from admin panel, I will check that in another patch, but I have to consider all possibilities for filtering ports etc.\nThanks for the help.","commit_id":"93507a9fd95ff174211044a57c7bd3eb532ec689"},{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"029190c47effe43b351201912767c92c2ea5a45c","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        }),"},{"line_number":87,"context_line":"        getPorts: userSession.get().then(function(session) {"},{"line_number":88,"context_line":"          var params \u003d {};"},{"line_number":89,"context_line":"          if ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1) {"},{"line_number":90,"context_line":"            params \u003d {project_id: session.project_id};"},{"line_number":91,"context_line":"          }"},{"line_number":92,"context_line":"          return neutron.getPorts(params);"}],"source_content_type":"text/javascript","patch_set":10,"id":"ff82abbf_74a7e2a8","line":89,"range":{"start_line":89,"start_character":14,"end_line":89,"end_character":53},"updated":"2017-11-25 09:03:07.000000000","message":"Ditto.","commit_id":"93507a9fd95ff174211044a57c7bd3eb532ec689"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"3f17940973f6fc37de8fc0feb6a8be4d1821aa91","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        }),"},{"line_number":87,"context_line":"        getPorts: userSession.get().then(function(session) {"},{"line_number":88,"context_line":"          var params \u003d {};"},{"line_number":89,"context_line":"          if ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1) {"},{"line_number":90,"context_line":"            params \u003d {project_id: session.project_id};"},{"line_number":91,"context_line":"          }"},{"line_number":92,"context_line":"          return neutron.getPorts(params);"}],"source_content_type":"text/javascript","patch_set":10,"id":"ff82abbf_7e98f173","line":89,"range":{"start_line":89,"start_character":14,"end_line":89,"end_character":53},"in_reply_to":"ff82abbf_74a7e2a8","updated":"2017-11-28 12:24:44.000000000","message":"The same as above.","commit_id":"93507a9fd95ff174211044a57c7bd3eb532ec689"},{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"d7c4d20f65d29eb945a3ed439b55a04662a36f30","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    $rootScope"},{"line_number":57,"context_line":"  ) {"},{"line_number":58,"context_line":"    // Note(lajos katona): To have a workaround for the fact that on the details"},{"line_number":59,"context_line":"    // pagethere is no way to find out if we are in the project or the admin"},{"line_number":60,"context_line":"    // dashboard, try to fetch the previous url by catching the locationChangesucces"},{"line_number":61,"context_line":"    // event."},{"line_number":62,"context_line":"    var urlFromLocationChangeNonAdmin \u003d true;"}],"source_content_type":"text/javascript","patch_set":19,"id":"5f93b717_397ae3f0","line":59,"range":{"start_line":59,"start_character":7,"end_line":59,"end_character":16},"updated":"2018-01-28 16:00:28.000000000","message":"page, there","commit_id":"63af220ddafa923a3a3dccb45cc93683d8b006a5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"39df57735626d13c42907155c3b0ad80e0319252","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    $rootScope"},{"line_number":57,"context_line":"  ) {"},{"line_number":58,"context_line":"    // Note(lajos katona): To have a workaround for the fact that on the details"},{"line_number":59,"context_line":"    // pagethere is no way to find out if we are in the project or the admin"},{"line_number":60,"context_line":"    // dashboard, try to fetch the previous url by catching the locationChangesucces"},{"line_number":61,"context_line":"    // event."},{"line_number":62,"context_line":"    var urlFromLocationChangeNonAdmin \u003d true;"}],"source_content_type":"text/javascript","patch_set":19,"id":"5f93b717_47a579b4","line":59,"range":{"start_line":59,"start_character":7,"end_line":59,"end_character":16},"in_reply_to":"5f93b717_397ae3f0","updated":"2018-01-29 11:14:12.000000000","message":"Done","commit_id":"63af220ddafa923a3a3dccb45cc93683d8b006a5"},{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"f6fe79bc8572a51e4c5ed52442256a5865a2df15","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    ////////////"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    function allowed() {"},{"line_number":75,"context_line":"      // NOTE(lajos katona): in case of admin let\u0027s disable create actions."},{"line_number":76,"context_line":"      // TODO(lajos katona): make possible to create/edit from admin panel"},{"line_number":77,"context_line":"      var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":78,"context_line":"      var deferred \u003d $q.defer();"}],"source_content_type":"text/javascript","patch_set":20,"id":"5f93b717_3b788528","line":75,"range":{"start_line":75,"start_character":60,"end_line":75,"end_character":66},"updated":"2018-01-29 16:23:01.000000000","message":"edit","commit_id":"11bf568502c47c418a9eafaae69e04567cfd3b44"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"f1910621017294e6b82b68e45685241f58ec6ffd","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    ////////////"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    function allowed() {"},{"line_number":75,"context_line":"      // NOTE(lajos katona): in case of admin let\u0027s disable create actions."},{"line_number":76,"context_line":"      // TODO(lajos katona): make possible to create/edit from admin panel"},{"line_number":77,"context_line":"      var fromNonAdminUrl \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":78,"context_line":"      var deferred \u003d $q.defer();"}],"source_content_type":"text/javascript","patch_set":20,"id":"5f93b717_b39fd901","line":75,"range":{"start_line":75,"start_character":60,"end_line":75,"end_character":66},"in_reply_to":"5f93b717_3b788528","updated":"2018-01-29 19:26:41.000000000","message":"Done","commit_id":"11bf568502c47c418a9eafaae69e04567cfd3b44"}],"openstack_dashboard/static/app/core/trunks/admin-panel.html":[{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"d7c4d20f65d29eb945a3ed439b55a04662a36f30","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"5f93b717_dc0e4d31","updated":"2018-01-28 16:00:28.000000000","message":"There is no difference between the admin trunks and the project trunks template［1］, why not use one?\n［1］ https://github.com/openstack/horizon/blob/master/openstack_dashboard/static/app/core/trunks/panel.html","commit_id":"63af220ddafa923a3a3dccb45cc93683d8b006a5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"39df57735626d13c42907155c3b0ad80e0319252","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"5f93b717_a7955d42","in_reply_to":"5f93b717_dc0e4d31","updated":"2018-01-29 11:14:12.000000000","message":"True, Those files can be the same, thanks for noticing.","commit_id":"63af220ddafa923a3a3dccb45cc93683d8b006a5"}],"openstack_dashboard/static/app/core/trunks/trunks.service.js":[{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"2727443fd15fe31f263ecf79a332bea523dbdbd2","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        // the listing is for the Admin panel, check here the"},{"line_number":73,"context_line":"        // location.url."},{"line_number":74,"context_line":"        // there should be a better way to check for admin or project panel??"},{"line_number":75,"context_line":"        if ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1) {"},{"line_number":76,"context_line":"          params.project_id \u003d userSession.project_id;"},{"line_number":77,"context_line":"        } else {"},{"line_number":78,"context_line":"          delete params.project_id;"}],"source_content_type":"text/javascript","patch_set":1,"id":"3f4b6375_8c98846a","line":75,"range":{"start_line":75,"start_character":37,"end_line":75,"end_character":42},"updated":"2017-10-31 13:13:58.000000000","message":"\"indexOf(\u0027/admin/\u0027)\" would be a bit more robust.","commit_id":"f90285ae0dc8d662771358018218bcc189759b18"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"inactive contributor"},"change_message_id":"2727443fd15fe31f263ecf79a332bea523dbdbd2","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        // location.url."},{"line_number":74,"context_line":"        // there should be a better way to check for admin or project panel??"},{"line_number":75,"context_line":"        if ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1) {"},{"line_number":76,"context_line":"          params.project_id \u003d userSession.project_id;"},{"line_number":77,"context_line":"        } else {"},{"line_number":78,"context_line":"          delete params.project_id;"},{"line_number":79,"context_line":"        }"}],"source_content_type":"text/javascript","patch_set":1,"id":"3f4b6375_2c787029","line":76,"updated":"2017-10-31 13:13:58.000000000","message":"Why do we need to set project_id here? It is passed to us already, isn\u0027t it?","commit_id":"f90285ae0dc8d662771358018218bcc189759b18"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5b1e98512067e38d644b08009624c83e93333b5b","unresolved":false,"context_lines":[{"line_number":77,"context_line":"      function getTrunksForProject(userSession) {"},{"line_number":78,"context_line":"        var navigationUrlNotAdmin \u003d ("},{"line_number":79,"context_line":"          navigationsService.getActivePanelUrl().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":80,"context_line":"        var locationURLNotAdmin \u003d ($location.url().indexOf(\u0027admin\u0027) \u003d\u003d\u003d -1);"},{"line_number":81,"context_line":"        // Note(lajoskatona): To list all trunks in case of"},{"line_number":82,"context_line":"        // the listing is for the Admin panel, check here the"},{"line_number":83,"context_line":"        // location.url."}],"source_content_type":"text/javascript","patch_set":17,"id":"bf8cb3f7_3ddc6845","line":80,"updated":"2017-12-20 19:16:16.000000000","message":"Same comment for trunks/actions/actions.module.js","commit_id":"d32a56bc9b2a100f0c65d2f9744b8d604026d41c"},{"author":{"_account_id":16352,"name":"Shu Muto","email":"shu.mutow@gmail.com","username":"shu.mutow"},"change_message_id":"849c56c78af4ee49ce06d2558b508c3c83b0de0f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"7f96bb07_62c6834c","updated":"2018-01-23 03:23:36.000000000","message":"this seems to be same as https://review.openstack.org/#/c/524619/5/openstack_dashboard/static/app/core/trunks/trunks.service.js\nbut this diverged from above. you should separate this patch and above patch from this dependency tree, and reconstruct another patch tree for them. Only navigationsService staffs should be implemented here.","commit_id":"9905e3d345659bb757f4203a1cc11a8123a21648"}],"openstack_dashboard/static/app/core/trunks/trunks.service.spec.js":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"5b1e98512067e38d644b08009624c83e93333b5b","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        expect(result.$$state.value.data.items[0].id).toBe(1);"},{"line_number":58,"context_line":"      }));"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"      it(\u0027removes project_id in case of calling from admin panel\u0027, inject(function($q,"},{"line_number":61,"context_line":"                                                                                   $timeout) {"},{"line_number":62,"context_line":"        var deferred \u003d $q.defer();"},{"line_number":63,"context_line":"        var deferredSession \u003d $q.defer();"},{"line_number":64,"context_line":"        var updatedAt \u003d new Date(\u0027November 15, 2017\u0027);"}],"source_content_type":"text/javascript","patch_set":17,"id":"bf8cb3f7_aa1ef06d","line":61,"range":{"start_line":60,"start_character":66,"end_line":61,"end_character":94},"updated":"2017-12-20 19:16:16.000000000","message":"The line looks long. Can\u0027t you wrap lines before inject?","commit_id":"d32a56bc9b2a100f0c65d2f9744b8d604026d41c"}],"openstack_dashboard/test/settings.py":[{"author":{"_account_id":24056,"name":"wei.ying","email":"wei.ying@easystack.cn","username":"wei.ying"},"change_message_id":"d7c4d20f65d29eb945a3ed439b55a04662a36f30","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                   \u0027.aggregates.panel.Aggregates.can_access\u0027),"},{"line_number":298,"context_line":"        \u0027return_value\u0027: True,"},{"line_number":299,"context_line":"    },"},{"line_number":300,"context_line":"    \u0027trunk\u0027: {"},{"line_number":301,"context_line":"        \u0027method\u0027: (\u0027openstack_dashboard.dashboards.project\u0027"},{"line_number":302,"context_line":"                   \u0027.trunks.panel.Trunks.can_access\u0027),"},{"line_number":303,"context_line":"        \u0027return_value\u0027: True,"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f93b717_99721711","line":300,"range":{"start_line":300,"start_character":5,"end_line":300,"end_character":10},"updated":"2018-01-28 16:00:28.000000000","message":"trunk-project","commit_id":"63af220ddafa923a3a3dccb45cc93683d8b006a5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"39df57735626d13c42907155c3b0ad80e0319252","unresolved":false,"context_lines":[{"line_number":297,"context_line":"                   \u0027.aggregates.panel.Aggregates.can_access\u0027),"},{"line_number":298,"context_line":"        \u0027return_value\u0027: True,"},{"line_number":299,"context_line":"    },"},{"line_number":300,"context_line":"    \u0027trunk\u0027: {"},{"line_number":301,"context_line":"        \u0027method\u0027: (\u0027openstack_dashboard.dashboards.project\u0027"},{"line_number":302,"context_line":"                   \u0027.trunks.panel.Trunks.can_access\u0027),"},{"line_number":303,"context_line":"        \u0027return_value\u0027: True,"}],"source_content_type":"text/x-python","patch_set":19,"id":"5f93b717_679f555f","line":300,"range":{"start_line":300,"start_character":5,"end_line":300,"end_character":10},"in_reply_to":"5f93b717_99721711","updated":"2018-01-29 11:14:12.000000000","message":"Done","commit_id":"63af220ddafa923a3a3dccb45cc93683d8b006a5"}]}
