)]}'
{"lib/neutron-legacy":[{"author":{"_account_id":14257,"name":"Mahito Ogura","email":"m.ogura@ntt.com","username":"Mahito"},"change_message_id":"d05069ac167d32be561c196144555b7ff697fcc4","unresolved":false,"context_lines":[{"line_number":874,"context_line":"    # Use security group or not"},{"line_number":875,"context_line":"    if type has_neutron_plugin_security_group \u003e/dev/null 2\u003e\u00261; then"},{"line_number":876,"context_line":"        if has_neutron_plugin_security_group; then"},{"line_number":877,"context_line":"            Q_USE_SECGROUP\u003d${Q_USE_SECGROUP:-True}"},{"line_number":878,"context_line":"        else"},{"line_number":879,"context_line":"            Q_USE_SECGROUP\u003dFalse"},{"line_number":880,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"1a4dcd0f_a57c4bb6","line":877,"updated":"2015-08-14 05:45:23.000000000","message":"I think that you should use function of `trueorfalse` as follow.\n\nQ_USE_SECGROUP\u003d$(trueorfalse True Q_USE_SECGROUP)","commit_id":"96c741af20e779ebcebe8bc0a7974ab59a4662c0"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"15b03e5c0956171efe49d9de55e7906dc6c27e52","unresolved":false,"context_lines":[{"line_number":874,"context_line":"    # Use security group or not"},{"line_number":875,"context_line":"    if type has_neutron_plugin_security_group \u003e/dev/null 2\u003e\u00261; then"},{"line_number":876,"context_line":"        if has_neutron_plugin_security_group; then"},{"line_number":877,"context_line":"            Q_USE_SECGROUP\u003d${Q_USE_SECGROUP:-True}"},{"line_number":878,"context_line":"        else"},{"line_number":879,"context_line":"            Q_USE_SECGROUP\u003dFalse"},{"line_number":880,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"1a4dcd0f_00816dc3","line":877,"in_reply_to":"1a4dcd0f_a57c4bb6","updated":"2015-08-14 06:16:36.000000000","message":"I think that trueorfalse method is needed by some parameters which have used \"1 or 0\" and \"yes or no\" long ago. There are some parameters have such debt in devstack. Therefore, we don\u0027t need to use it surely. Otherwise, we should apply it to all parameters which is set \"True or False\" ;-)\n\nHowever, I\u0027m careful guy so I will fix if respin.","commit_id":"96c741af20e779ebcebe8bc0a7974ab59a4662c0"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"93c4904c2f86400a52347162ab4b787a8a374ee3","unresolved":false,"context_lines":[{"line_number":878,"context_line":"    sed -i \u0027s/\"context_is_admin\":  \"role:admin\"/\"context_is_admin\":  \"role:admin or user_name:neutron\"/g\u0027 $Q_POLICY_FILE"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"    # Use security group or not"},{"line_number":881,"context_line":"    if type has_neutron_plugin_security_group \u003e/dev/null 2\u003e\u00261; then"},{"line_number":882,"context_line":"        if has_neutron_plugin_security_group; then"},{"line_number":883,"context_line":"            Q_USE_SECGROUP\u003d$(trueorfalse True Q_USE_SECGROUP)"},{"line_number":884,"context_line":"        else"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"da20952f_2cbf87ab","line":881,"updated":"2015-09-10 09:57:28.000000000","message":"is this check necessary?","commit_id":"f295da42f04f6f41c900cd78972e722fbd23f5a6"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"c9426f54abff3d8d026b2f080bf83bcdbca888bb","unresolved":false,"context_lines":[{"line_number":878,"context_line":"    sed -i \u0027s/\"context_is_admin\":  \"role:admin\"/\"context_is_admin\":  \"role:admin or user_name:neutron\"/g\u0027 $Q_POLICY_FILE"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"    # Use security group or not"},{"line_number":881,"context_line":"    if type has_neutron_plugin_security_group \u003e/dev/null 2\u003e\u00261; then"},{"line_number":882,"context_line":"        if has_neutron_plugin_security_group; then"},{"line_number":883,"context_line":"            Q_USE_SECGROUP\u003d$(trueorfalse True Q_USE_SECGROUP)"},{"line_number":884,"context_line":"        else"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"da20952f_c579c794","line":881,"in_reply_to":"da20952f_2048b9b2","updated":"2015-09-11 14:25:38.000000000","message":"I saw history[1]. Maybe, Motoki and Dean didn\u0027t expect neutron devstack plugin to be out of devstack tree and they might expect users to mistake Q_USE_SECGROUP configuration. For example, users may set Q_USE_SECGROUP\u003dTrue although their plugin cannot use security group.\n\nDo you mean that I just rename \"Q_USE_SECGROUP\" \"NEUTRON_SUPPORTS_SECGROUPS\" based on this code? That is, do you agree that this patch checks the function by \"type\"?\n\n[1]: https://review.openstack.org/#/c/16921/","commit_id":"f295da42f04f6f41c900cd78972e722fbd23f5a6"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"a02c9493d949f591fe84ad612186f658ee4fdbe7","unresolved":false,"context_lines":[{"line_number":878,"context_line":"    sed -i \u0027s/\"context_is_admin\":  \"role:admin\"/\"context_is_admin\":  \"role:admin or user_name:neutron\"/g\u0027 $Q_POLICY_FILE"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"    # Use security group or not"},{"line_number":881,"context_line":"    if type has_neutron_plugin_security_group \u003e/dev/null 2\u003e\u00261; then"},{"line_number":882,"context_line":"        if has_neutron_plugin_security_group; then"},{"line_number":883,"context_line":"            Q_USE_SECGROUP\u003d$(trueorfalse True Q_USE_SECGROUP)"},{"line_number":884,"context_line":"        else"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"da20952f_37b3410c","line":881,"in_reply_to":"da20952f_2cbf87ab","updated":"2015-09-10 18:29:36.000000000","message":"honestly, this is all done in an incredibly convoluted way to the point that I\u0027m not even really sure what\u0027s attempted here.","commit_id":"f295da42f04f6f41c900cd78972e722fbd23f5a6"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"8bd8361f87a9c712b1beec87ed3704f5299acf0d","unresolved":false,"context_lines":[{"line_number":878,"context_line":"    sed -i \u0027s/\"context_is_admin\":  \"role:admin\"/\"context_is_admin\":  \"role:admin or user_name:neutron\"/g\u0027 $Q_POLICY_FILE"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"    # Use security group or not"},{"line_number":881,"context_line":"    if type has_neutron_plugin_security_group \u003e/dev/null 2\u003e\u00261; then"},{"line_number":882,"context_line":"        if has_neutron_plugin_security_group; then"},{"line_number":883,"context_line":"            Q_USE_SECGROUP\u003d$(trueorfalse True Q_USE_SECGROUP)"},{"line_number":884,"context_line":"        else"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"da20952f_5d184b84","line":881,"in_reply_to":"da20952f_37b3410c","updated":"2015-09-11 00:14:11.000000000","message":"Yes, it\u0027s very complicated.\n\nSo far, stack.sh checks has_neutron_plugin_security_group as it runs. So external plugin cannot provide the function. First, moving this code block enable external plugin to provide the function in Phase install.\n\nSecond, current plugins are out of devstack and they freely  configures config for themselves. We don\u0027t need to force plugins to prepare the function yet. Therefore, this checks whether or not the function exists.\n\nHowever, if you don\u0027t agree with second since it changes traditional behavior, I can remove it. We must give priority to remove the restriction.","commit_id":"f295da42f04f6f41c900cd78972e722fbd23f5a6"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"b8345966c9a140aab40ce696296a633205516214","unresolved":false,"context_lines":[{"line_number":878,"context_line":"    sed -i \u0027s/\"context_is_admin\":  \"role:admin\"/\"context_is_admin\":  \"role:admin or user_name:neutron\"/g\u0027 $Q_POLICY_FILE"},{"line_number":879,"context_line":""},{"line_number":880,"context_line":"    # Use security group or not"},{"line_number":881,"context_line":"    if type has_neutron_plugin_security_group \u003e/dev/null 2\u003e\u00261; then"},{"line_number":882,"context_line":"        if has_neutron_plugin_security_group; then"},{"line_number":883,"context_line":"            Q_USE_SECGROUP\u003d$(trueorfalse True Q_USE_SECGROUP)"},{"line_number":884,"context_line":"        else"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"da20952f_2048b9b2","line":881,"in_reply_to":"da20952f_5d184b84","updated":"2015-09-11 12:11:33.000000000","message":"Why is this being done as a function then? Why don\u0027t we just have the plugins set the Q_USE_SECGROUP in their settings file?\n\nThough if we\u0027re going to make that a contract variable it should probably be renamed to:\n\nNEUTRON_SUPPORTS_SECGROUPS","commit_id":"f295da42f04f6f41c900cd78972e722fbd23f5a6"}]}
