)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"5187a8dc3825a829859b409fa43c92dcbdc63dd4","unresolved":false,"context_lines":[{"line_number":10,"context_line":"some plugin config files may no longer exist in neutron repo."},{"line_number":11,"context_line":"We need to provide alternate path for neutron-legacy to locate them."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The new logic for locating the source config file is:"},{"line_number":14,"context_line":"1. If Q_PLUGIN_SRC_CONF_PATH is defined, check if it is an absolute path."},{"line_number":15,"context_line":"   If true, use it directly."},{"line_number":16,"context_line":"   Otherwise, join it with root directory DEST."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"fa1b9901_26aa0a72","line":13,"updated":"2015-08-26 02:16:02.000000000","message":"This describes what is being done, which is actually pretty clear from the code itself.\n\nCan you please say *why* this is the right way to go about this.  I see some conversation from many changesets ago but not sure if it\u0027s still relevant","commit_id":"af3604559911ec7d98d131fcee724d5485c200ff"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"dc1a28b0ab8be82b94efef83072aad270a9dc1dc","unresolved":false,"context_lines":[{"line_number":10,"context_line":"some plugin config files may no longer exist in neutron repo."},{"line_number":11,"context_line":"We need to provide alternate path for neutron-legacy to locate them."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The new logic for locating the source config file is:"},{"line_number":14,"context_line":"1. If Q_PLUGIN_SRC_CONF_PATH is defined, check if it is an absolute path."},{"line_number":15,"context_line":"   If true, use it directly."},{"line_number":16,"context_line":"   Otherwise, join it with root directory DEST."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"fa1b9901_4dde366e","line":13,"in_reply_to":"fa1b9901_1b7abb88","updated":"2015-08-26 06:38:20.000000000","message":"The latest patch is actually simpler than the earlier ones. So you can ignore earlier comments. I have described how the new variables are used inside the code (i.e. in neutron-legacy) in each patch and updated them accordingly.\n\nAmong those variables, Q_PLUGIN_CONF_PATH and Q_PLUGIN_CONF_FILENAME are not new. I couldn\u0027t find where they are explained and only found their names are mentioned in README.md. Could you tell me where they are explained, so I can add the description for the new variable in the same file.\n\nQ_PLUGIN_REMOTE_SOURCE_DIR is added by I5bd6d8f611c2a134f2e8f14c074c1a4185d9c522 and probably will only be used by plumgrid locally unless this patch is merged, then all vendors need to define that in their neutron_plugin_configure_common.\n\nI add Q_PLUGIN_SRC_CONF_PATH in my latest patch. It should be the only new variable needed if my patch get merged.\n\nThanks.","commit_id":"af3604559911ec7d98d131fcee724d5485c200ff"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"8854965a346e0552551e02d583c70ba9f8da4950","unresolved":false,"context_lines":[{"line_number":10,"context_line":"some plugin config files may no longer exist in neutron repo."},{"line_number":11,"context_line":"We need to provide alternate path for neutron-legacy to locate them."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The new logic for locating the source config file is:"},{"line_number":14,"context_line":"1. If Q_PLUGIN_SRC_CONF_PATH is defined, check if it is an absolute path."},{"line_number":15,"context_line":"   If true, use it directly."},{"line_number":16,"context_line":"   Otherwise, join it with root directory DEST."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"fa1b9901_2cc50b5b","line":13,"in_reply_to":"fa1b9901_26aa0a72","updated":"2015-08-26 03:48:04.000000000","message":"Most of the conversations for earlier changesets are not relevant any more.\nThe reasons or ideas for the latest changeset are:\n\n(1) Vendors should have the freedom to decide which directory in their own repo to store the config files.\n\n(2) I think neutron_plugin_configure_common should just define the relative paths inside the plugin directory (or vendor\u0027s directory), like the way Q_PLUGIN_CONF_PATH is defined now. We should let neutron-legacy to add the root directory to those relative paths when it deploys the setup, just like what neutron-legacy is doing for Q_PLUGIN_CONF_PATH now. For example, it adds NEUTRON_DIR (i.e. $DEST/neutron) to Q_PLUGIN_CONF_PATH to locate the config file.\n\n(3) To be compatible with I5bd6d8f611c2a134f2e8f14c074c1a4185d9c522. Thus vendors can still define absolute paths inside neutron_plugin_configure_common if they want.\n\nTo integrate I5bd6d8f611c2a134f2e8f14c074c1a4185d9c522 with my change, it can be done by defining neutron_plugin_configure_common as\n\nfunction neutron_plugin_configure_common {\n    Q_PLUGIN_CONF_PATH\u003detc/neutron/plugins/plumgrid\n    Q_PLUGIN_CONF_FILENAME\u003dplumgrid.ini\n    Q_PLUGIN_REMOTE_SOURCE_DIR\u003d/opt/stack/networking-plumgrid/networking_plumgrid\n    Q_PLUGIN_SRC_CONF_PATH\u003d$Q_PLUGIN_REMOTE_SOURCE_DIR/$Q_PLUGIN_CONF_PATH\n    ...\n}\n\nBut it can not be done vice versa because in vmware-nsx repo, we plan to shorten the directory path to the ini file, i.e. it is no longer like etc/neutron/plugins/vmware under neutron repo. It will be in the etc directory under vmware-nsx repo. The new neutron_plugin_configure_common will be defined like\n\nfunction neutron_plugin_configure_common {\n    Q_PLUGIN_CONF_PATH\u003detc/neutron/plugins/vmware\n    Q_PLUGIN_CONF_FILENAME\u003dnsx.ini\n    Q_PLUGIN_SRC_CONF_PATH\u003dvmware-nsx/etc\n    ...\n}\n\nHope this helps. Thanks.","commit_id":"af3604559911ec7d98d131fcee724d5485c200ff"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"88f1dbed82ab9d192a4c20abdddb82cf8d6a4eb7","unresolved":false,"context_lines":[{"line_number":10,"context_line":"some plugin config files may no longer exist in neutron repo."},{"line_number":11,"context_line":"We need to provide alternate path for neutron-legacy to locate them."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The new logic for locating the source config file is:"},{"line_number":14,"context_line":"1. If Q_PLUGIN_SRC_CONF_PATH is defined, check if it is an absolute path."},{"line_number":15,"context_line":"   If true, use it directly."},{"line_number":16,"context_line":"   Otherwise, join it with root directory DEST."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"fa1b9901_1b7abb88","line":13,"in_reply_to":"fa1b9901_2cc50b5b","updated":"2015-08-26 06:02:38.000000000","message":"all this needs to be explained in the change, not in a comment ... it\u0027s taken 13 revisions and a huge explanations at several steps so it\u0027s obviously more complicated than maybe it seems it should be at first glance.\n\nfor example, in the change description, explain how the files are laid out in various plugin repos and how this will consume them whilst maintaining compatibility.  \n\nthe 4 variables aren\u0027t obvious; it seems worthy of a separate sub-section in the README.md.  put in discussion about like what\u0027s in the comment above, mentioning the different layouts.","commit_id":"af3604559911ec7d98d131fcee724d5485c200ff"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"409c5541b22a3f62c4737614ea1b60eced0ce774","unresolved":false,"context_lines":[{"line_number":10,"context_line":"some plugin config files may no longer exist in neutron repo."},{"line_number":11,"context_line":"We need to provide alternate path for neutron-legacy to locate them."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The new logic for locating the source config file is:"},{"line_number":14,"context_line":"1. If Q_PLUGIN_SRC_CONF_PATH is defined, check if it is an absolute path."},{"line_number":15,"context_line":"   If true, use it directly."},{"line_number":16,"context_line":"   Otherwise, join it with root directory DEST."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"da20952f_e6018707","line":13,"in_reply_to":"fa1b9901_4dde366e","updated":"2015-08-28 21:57:33.000000000","message":"Please update the commit message with your reasoning. That will help the reviewers understand why this change is the right approach.","commit_id":"af3604559911ec7d98d131fcee724d5485c200ff"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"4a8036bad26e937a62a43d59e5b6be6e38baf409","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since we are in the process of decomposing vendor specific plugins,"},{"line_number":10,"context_line":"some plugin config files may no longer exist in neutron repo."},{"line_number":11,"context_line":"We need to provide alternate path for neutron-legacy to locate them."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The proposed new logic for locating the source config file is:"},{"line_number":14,"context_line":"1. If Q_PLUGIN_SRC_CONF_PATH is defined, check if it is an absolute path."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"da20952f_ddaa0d71","line":11,"updated":"2015-09-04 05:41:39.000000000","message":"I am a bit confused by your statement here. We have out of tree plugins that integrate with Neutron today, and do not have config files located in the neutron repo (and never have - for instance [1]), and they seem to integrate without issues.\n\nSo why this extra level of indirection? I\u0027ll keep on reading...\n\n[1] https://github.com/openstack/networking-l2gw/","commit_id":"5e7ae41ab0c327a5007983c46643ea676cb7fabe"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"73a3c1dc8621c5e99861fd376296b48ef237348e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since we are in the process of decomposing vendor specific plugins,"},{"line_number":10,"context_line":"some plugin config files may no longer exist in neutron repo."},{"line_number":11,"context_line":"We need to provide alternate path for neutron-legacy to locate them."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The proposed new logic for locating the source config file is:"},{"line_number":14,"context_line":"1. If Q_PLUGIN_SRC_CONF_PATH is defined, check if it is an absolute path."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"da20952f_8b89ab28","line":11,"in_reply_to":"da20952f_ddaa0d71","updated":"2015-09-04 07:07:16.000000000","message":"I did a quick look at networking-l2gw repo. I didn\u0027t find any file defining \nfunction neutron_plugin_configure_common or defining Q_PLUGIN_CONF_PATH. So I don\u0027t think networking-l2gw is affected by the\nproblem we are trying to fix here.","commit_id":"5e7ae41ab0c327a5007983c46643ea676cb7fabe"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"bd622b95dd2d275e5587fd865c2ab6bb7d341dcf","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since we are in the process of decomposing vendor specific plugins,"},{"line_number":10,"context_line":"some plugin config files may no longer exist in neutron repo."},{"line_number":11,"context_line":"We need to provide alternate path for neutron-legacy to locate them."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The proposed new logic for locating the source config file is:"},{"line_number":14,"context_line":"1. If Q_PLUGIN_SRC_CONF_PATH is defined, check if it is an absolute path."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"da20952f_e6ec1ebd","line":11,"in_reply_to":"da20952f_ddaa0d71","updated":"2015-09-04 07:11:48.000000000","message":"networking-l2gw is service plugin. This issue happens in case using core plugin.","commit_id":"5e7ae41ab0c327a5007983c46643ea676cb7fabe"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d9712a062962ea4b3506b3669e55d0acce840237","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Since we are in the process of decomposing vendor specific plugins,"},{"line_number":10,"context_line":"some plugin config files may no longer exist in neutron repo."},{"line_number":11,"context_line":"We need to provide alternate path for neutron-legacy to locate them."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The proposed new logic for locating the source config file is:"},{"line_number":14,"context_line":"1. If Q_PLUGIN_SRC_CONF_PATH is defined, check if it is an absolute path."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"da20952f_979d24be","line":11,"in_reply_to":"da20952f_e6ec1ebd","updated":"2015-09-05 15:13:58.000000000","message":"that shouldn\u0027t matter though. The devstack mechanism to integrate with neutron is the same.","commit_id":"5e7ae41ab0c327a5007983c46643ea676cb7fabe"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"4a8036bad26e937a62a43d59e5b6be6e38baf409","unresolved":false,"context_lines":[{"line_number":20,"context_line":"The rationales behind this design are:"},{"line_number":21,"context_line":"1. The current neutron-legacy adds root directory NEUTRON_DIR"},{"line_number":22,"context_line":"   (i.e. DEST/neutron/) to Q_PLUGIN_CONF_PATH to locate the source"},{"line_number":23,"context_line":"   config file, where Q_PLUGIN_CONF_PATH is a relative path defined"},{"line_number":24,"context_line":"   in vendor\u0027s neutron_plugin_configure_common function."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"   Since we are decomposing vendor specific plugins from neutron repo,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"da20952f_805c2a7e","line":23,"updated":"2015-09-04 05:41:39.000000000","message":"if you don\u0027t like this, it should be possible to change by creating a file called `override-defaults` in your project\u0027s devstack directory. This means that you can declare Q_PLUGIN_CONF_PATH to whatever you want and neutron-legacy will pick it up.","commit_id":"5e7ae41ab0c327a5007983c46643ea676cb7fabe"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d9712a062962ea4b3506b3669e55d0acce840237","unresolved":false,"context_lines":[{"line_number":20,"context_line":"The rationales behind this design are:"},{"line_number":21,"context_line":"1. The current neutron-legacy adds root directory NEUTRON_DIR"},{"line_number":22,"context_line":"   (i.e. DEST/neutron/) to Q_PLUGIN_CONF_PATH to locate the source"},{"line_number":23,"context_line":"   config file, where Q_PLUGIN_CONF_PATH is a relative path defined"},{"line_number":24,"context_line":"   in vendor\u0027s neutron_plugin_configure_common function."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"   Since we are decomposing vendor specific plugins from neutron repo,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"da20952f_777df06b","line":23,"in_reply_to":"da20952f_0615923e","updated":"2015-09-05 15:13:58.000000000","message":"I wouldn\u0027t invite you to explore why my suggestions do not work, you don\u0027t seem to have given any thought to that. Also, bear in mind that bw compatibility is not a problem, devstack \u0027master\u0027 can and should work with \u0027master\u0027 of your repo of choice only.","commit_id":"5e7ae41ab0c327a5007983c46643ea676cb7fabe"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"73a3c1dc8621c5e99861fd376296b48ef237348e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"The rationales behind this design are:"},{"line_number":21,"context_line":"1. The current neutron-legacy adds root directory NEUTRON_DIR"},{"line_number":22,"context_line":"   (i.e. DEST/neutron/) to Q_PLUGIN_CONF_PATH to locate the source"},{"line_number":23,"context_line":"   config file, where Q_PLUGIN_CONF_PATH is a relative path defined"},{"line_number":24,"context_line":"   in vendor\u0027s neutron_plugin_configure_common function."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"   Since we are decomposing vendor specific plugins from neutron repo,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"da20952f_0615923e","line":23,"in_reply_to":"da20952f_805c2a7e","updated":"2015-09-04 07:07:16.000000000","message":"The problem is Q_PLUGIN_CONF_PATH is currently used in both the source (i.e. copy from) directory and destination (i.e. copy to) directory of the config file by neutron-legacy.\n\nFor example, given Q_PLUGIN_CONF_PATH\u003detc/neutron/plugins/vmware,\nthe source and destination directory computed by neutron-legacy are:\n\n  SRC_DIR \u003d NEUTRON_DIR/Q_PLUGIN_CONF_PATH\n          \u003d /opt/stack/neutron/etc/neutron/plugins/vmware\n\n  DST_DIR \u003d /Q_PLUGIN_CONF_PATH\n          \u003d /etc/neutron/plugins/vmware\n\nNotice that Q_PLUGIN_CONF_PATH is the subdirectory path in the neutron repo. After the decomposition, the config file will be moved to vendor\u0027s repo and may be placed in a different directory structure. For backward compatibility, we will keep the same destination directory for the config file. So if some components hardcode the old destination directory to locate the config file, it will still work.\n\nIn our solution here, we still use the original variable Q_PLUGIN_CONF_PATH, but only for the destination directory. For the source directory, we propose a new variable Q_PLUGIN_SRC_CONF_PATH. For example, it can be defined in a different directory in vmware-nsx repo, such as\n\n  Q_PLUGIN_SRC_CONF_PATH\u003dvmware-nsx/vmware_nsx/etc\n\nThe point here is to use separate definitions for the source and destination directories. And vendors can store the config file wherever they like in their own repo (i.e. no need to tie to the destination directory).","commit_id":"5e7ae41ab0c327a5007983c46643ea676cb7fabe"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"4a8036bad26e937a62a43d59e5b6be6e38baf409","unresolved":false,"context_lines":[{"line_number":36,"context_line":"   each vendor may place them in different directories. This design"},{"line_number":37,"context_line":"   allow vendors to place wherever they want in their own repo."},{"line_number":38,"context_line":"   Thus it is no longer tied to the original path in neutron repo,"},{"line_number":39,"context_line":"   i.e. the value defined in Q_PLUGIN_CONF_PATH."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   In other words, Q_PLUGIN_CONF_PATH is more like the destination"},{"line_number":42,"context_line":"   config path (where the config files are copied to by neutron-legacy),"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"da20952f_60ceb62e","line":39,"updated":"2015-09-04 05:41:39.000000000","message":"as I said before, we have at least one example where we have a project that has a conf file outside the tree, and that works fine. It might be need to be polished, but it doesn\u0027t seem to require this new logic you\u0027re proposing.\n\nCan you elaborate in light of my notes?","commit_id":"5e7ae41ab0c327a5007983c46643ea676cb7fabe"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"73a3c1dc8621c5e99861fd376296b48ef237348e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"   each vendor may place them in different directories. This design"},{"line_number":37,"context_line":"   allow vendors to place wherever they want in their own repo."},{"line_number":38,"context_line":"   Thus it is no longer tied to the original path in neutron repo,"},{"line_number":39,"context_line":"   i.e. the value defined in Q_PLUGIN_CONF_PATH."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"   In other words, Q_PLUGIN_CONF_PATH is more like the destination"},{"line_number":42,"context_line":"   config path (where the config files are copied to by neutron-legacy),"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"da20952f_66848e0a","line":39,"in_reply_to":"da20952f_60ceb62e","updated":"2015-09-04 07:07:16.000000000","message":"Using the same example above where Q_PLUGIN_CONF_PATH\u003detc/neutron/plugins/vmware, the current neutron-legacy (in function _configure_neutron_common) does\n\n  cp NEUTRON_DIR/Q_PLUGIN_CONF_FILE /Q_PLUGIN_CONF_FILE\n\nwhich will become\n\n  cp /opt/stack/neutron/etc/neutron/plugins/vmware/nsx.ini /etc/neutron/plugins/vmware/nsx.ini\n\nBut after the decomposition, the subdirectory etc/neutron/plugins/vmware/ will be removed from neutron repo. Thus \"cp\" will fail because /opt/stack/neutron/etc/neutron/plugins/vmware/ no longer exist. To fix this, we need to change neutron-legacy to locate the config file from a different source directory.","commit_id":"5e7ae41ab0c327a5007983c46643ea676cb7fabe"}],"lib/neutron-legacy":[{"author":{"_account_id":14257,"name":"Mahito Ogura","email":"m.ogura@ntt.com","username":"Mahito"},"change_message_id":"f1231b427589f9b36431b37e60daee1d46142d5e","unresolved":false,"context_lines":[{"line_number":895,"context_line":"    # from plugin-specific repo (defined in ``Q_PLUGIN_ALT_CONF_PATH``)."},{"line_number":896,"context_line":"    mkdir -p /$Q_PLUGIN_CONF_PATH"},{"line_number":897,"context_line":"    Q_PLUGIN_CONF_FILE\u003d$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME"},{"line_number":898,"context_line":"    if [[ -f $$NEUTRON_DIR/$Q_PLUGIN_CONF_FILE ]]; then"},{"line_number":899,"context_line":"        cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"},{"line_number":900,"context_line":"    else"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"1a4dcd0f_62539ee3","line":898,"updated":"2015-08-14 01:20:35.000000000","message":"I think that\n$$NEUTRON_DIR -\u003e $NEUTRON_DIR","commit_id":"c9af1ba19cc682be6bdc28298c84c9428485c0bc"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"3a29aa01e9f2983f7cb6d9056bc3fd062e847667","unresolved":false,"context_lines":[{"line_number":895,"context_line":"    # from plugin-specific repo (defined in ``Q_PLUGIN_ALT_CONF_PATH``)."},{"line_number":896,"context_line":"    mkdir -p /$Q_PLUGIN_CONF_PATH"},{"line_number":897,"context_line":"    Q_PLUGIN_CONF_FILE\u003d$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME"},{"line_number":898,"context_line":"    if [[ -f $$NEUTRON_DIR/$Q_PLUGIN_CONF_FILE ]]; then"},{"line_number":899,"context_line":"        cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"},{"line_number":900,"context_line":"    else"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"1a4dcd0f_22027673","line":898,"in_reply_to":"1a4dcd0f_62539ee3","updated":"2015-08-14 01:33:20.000000000","message":"Missed that. Thanks","commit_id":"c9af1ba19cc682be6bdc28298c84c9428485c0bc"},{"author":{"_account_id":14257,"name":"Mahito Ogura","email":"m.ogura@ntt.com","username":"Mahito"},"change_message_id":"d8e836b7bb663f1093ed31e0ba7bd5062f2ce56f","unresolved":false,"context_lines":[{"line_number":898,"context_line":"    if [[ -f $$NEUTRON_DIR/$Q_PLUGIN_CONF_FILE ]]; then"},{"line_number":899,"context_line":"        cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"},{"line_number":900,"context_line":"    else"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"            cp $DEST/$Q_PLUGIN_ALT_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            die $LINENO \"Neutron plugin not found.. exiting\""}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"1a4dcd0f_7ca82378","line":901,"updated":"2015-08-14 00:17:12.000000000","message":"Where is \u0027Q_PLUGIN_ALT_CONF_PATH\u0027 defined or set ?","commit_id":"c9af1ba19cc682be6bdc28298c84c9428485c0bc"},{"author":{"_account_id":14257,"name":"Mahito Ogura","email":"m.ogura@ntt.com","username":"Mahito"},"change_message_id":"f1231b427589f9b36431b37e60daee1d46142d5e","unresolved":false,"context_lines":[{"line_number":898,"context_line":"    if [[ -f $$NEUTRON_DIR/$Q_PLUGIN_CONF_FILE ]]; then"},{"line_number":899,"context_line":"        cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"},{"line_number":900,"context_line":"    else"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"            cp $DEST/$Q_PLUGIN_ALT_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            die $LINENO \"Neutron plugin not found.. exiting\""}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"1a4dcd0f_82e26a2e","line":901,"in_reply_to":"1a4dcd0f_5c044717","updated":"2015-08-14 01:20:35.000000000","message":"Gate log shows as follow.[1]\n\n```\n[ERROR] /opt/stack/new/devstack/lib/neutron-legacy:904 Neutron plugin not found.. exiting\n```\n\nIt looks that $$NEUTRON_DIR/$Q_PLUGIN_CONF_FILE and Q_PLUGIN_ALT_CONF_PATH is not defined.\nIf you want to pass the gate, you should set $Q_PLUGIN_CONF_FILE or Q_PLUGIN_ALT_CONF_PATH.\n\n[1] http://logs.openstack.org/86/212786/4/check/gate-tempest-dsvm-neutron-large-ops/1c73629/logs/devstacklog.txt.gz#_2015-08-14_00_26_52_448","commit_id":"c9af1ba19cc682be6bdc28298c84c9428485c0bc"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"3166b2d22c39e40ea6ca57cb1fdcd31b33a11691","unresolved":false,"context_lines":[{"line_number":898,"context_line":"    if [[ -f $$NEUTRON_DIR/$Q_PLUGIN_CONF_FILE ]]; then"},{"line_number":899,"context_line":"        cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"},{"line_number":900,"context_line":"    else"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"            cp $DEST/$Q_PLUGIN_ALT_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            die $LINENO \"Neutron plugin not found.. exiting\""}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"1a4dcd0f_5c044717","line":901,"in_reply_to":"1a4dcd0f_7ca82378","updated":"2015-08-14 00:30:46.000000000","message":"It is defined in vendor\u0027s neutron_plugin_configure_common function, where Q_PLUGIN_CONF_PATH and Q_PLUGIN_CONF_FILENAME are defined.\n\nThe purpose of this new variable is to tell neutron-legacy where to find the source config file (in vendor-specific repo).\n\nYou can find some examples in\nhttps://review.openstack.org/#/c/212765/","commit_id":"c9af1ba19cc682be6bdc28298c84c9428485c0bc"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"4a1d1679357a0ef28c9b0cc19a5bcca1dec4f2b7","unresolved":false,"context_lines":[{"line_number":892,"context_line":""},{"line_number":893,"context_line":"    # If needed, move config file from ``$NEUTRON_DIR/etc/neutron`` to ``NEUTRON_CONF_DIR``."},{"line_number":894,"context_line":"    # If it does not exist (mostly due to moving to plugin-specific repo), then try to copy it"},{"line_number":895,"context_line":"    # from plugin-specific repo (defined in ``Q_PLUGIN_ALT_CONF_PATH``)."},{"line_number":896,"context_line":"    mkdir -p /$Q_PLUGIN_CONF_PATH"},{"line_number":897,"context_line":"    Q_PLUGIN_CONF_FILE\u003d$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME"},{"line_number":898,"context_line":"    if [[ -f $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1a4dcd0f_763a7f9a","line":895,"updated":"2015-08-14 02:19:47.000000000","message":"I guess that it\u0027s better to explain and define global variable on the top of this script.","commit_id":"c8309d83f890075a03819c2e614e880e71390ad9"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"c697ace1406117fcc8bc1b65eaefe89d7d156139","unresolved":false,"context_lines":[{"line_number":892,"context_line":""},{"line_number":893,"context_line":"    # If needed, move config file from ``$NEUTRON_DIR/etc/neutron`` to ``NEUTRON_CONF_DIR``."},{"line_number":894,"context_line":"    # If it does not exist (mostly due to moving to plugin-specific repo), then try to copy it"},{"line_number":895,"context_line":"    # from plugin-specific repo (defined in ``Q_PLUGIN_ALT_CONF_PATH``)."},{"line_number":896,"context_line":"    mkdir -p /$Q_PLUGIN_CONF_PATH"},{"line_number":897,"context_line":"    Q_PLUGIN_CONF_FILE\u003d$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME"},{"line_number":898,"context_line":"    if [[ -f $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1a4dcd0f_d9cce48c","line":895,"in_reply_to":"1a4dcd0f_763a7f9a","updated":"2015-08-14 02:47:53.000000000","message":"I will mention it in neutron_plugins/README.md, where Q_PLUGIN_CONF_PATH and Q_PLUGIN_CONF_FILENAME are mentioned.\n\nI didn\u0027t find where Q_PLUGIN_CONF_PATH and Q_PLUGIN_CONF_FILENAME\nare explained and declared global. Could you tell me where that is?\nThis set should be described together. Thanks.","commit_id":"c8309d83f890075a03819c2e614e880e71390ad9"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"835d85f4bf3b5446d8bfd29ae5123d60d8d3e695","unresolved":false,"context_lines":[{"line_number":892,"context_line":""},{"line_number":893,"context_line":"    # If needed, move config file from ``$NEUTRON_DIR/etc/neutron`` to ``NEUTRON_CONF_DIR``."},{"line_number":894,"context_line":"    # If it does not exist (mostly due to moving to plugin-specific repo), then try to copy it"},{"line_number":895,"context_line":"    # from plugin-specific repo (defined in ``Q_PLUGIN_ALT_CONF_PATH``)."},{"line_number":896,"context_line":"    mkdir -p /$Q_PLUGIN_CONF_PATH"},{"line_number":897,"context_line":"    Q_PLUGIN_CONF_FILE\u003d$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME"},{"line_number":898,"context_line":"    if [[ -f $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1a4dcd0f_453547a6","line":895,"in_reply_to":"1a4dcd0f_d9cce48c","updated":"2015-08-14 05:21:48.000000000","message":"It make sense. \n\nI mean Neutron Network Configuration section but it seems other plugin config isn\u0027t set as you suggest...\n\nI\u0027m OK. Please ignore above my comment.","commit_id":"c8309d83f890075a03819c2e614e880e71390ad9"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"4a1d1679357a0ef28c9b0cc19a5bcca1dec4f2b7","unresolved":false,"context_lines":[{"line_number":899,"context_line":"        cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"},{"line_number":900,"context_line":"    else"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"            cp $DEST/$Q_PLUGIN_ALT_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            die $LINENO \"Neutron plugin not found.. exiting\""},{"line_number":905,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1a4dcd0f_f63a0f34","line":902,"updated":"2015-08-14 02:19:47.000000000","message":"It\u0027s more simple to use Q_PLUGIN_CONF_FILE.","commit_id":"c8309d83f890075a03819c2e614e880e71390ad9"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"835d85f4bf3b5446d8bfd29ae5123d60d8d3e695","unresolved":false,"context_lines":[{"line_number":899,"context_line":"        cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"},{"line_number":900,"context_line":"    else"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"            cp $DEST/$Q_PLUGIN_ALT_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            die $LINENO \"Neutron plugin not found.. exiting\""},{"line_number":905,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1a4dcd0f_653ac39a","line":902,"in_reply_to":"1a4dcd0f_1956ccce","updated":"2015-08-14 05:21:48.000000000","message":"That is, I prefer the implement of https://review.openstack.org/#/c/211598/\n\nI think that Q_PLUGIN_CONF_PATH and Q_PLUGIN_ALT_CONF_PATH are the same sense. Therefore, I\u0027d like to recommend to use Q_PLUGIN_CONF_FILE and prepare a variable like Q_PLUGIN_DIR above Q_PLUGIN_CONF_FILE.","commit_id":"c8309d83f890075a03819c2e614e880e71390ad9"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"6f79039c1ea3b79434f43d4a5d5e4b6383214f02","unresolved":false,"context_lines":[{"line_number":899,"context_line":"        cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"},{"line_number":900,"context_line":"    else"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"            cp $DEST/$Q_PLUGIN_ALT_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            die $LINENO \"Neutron plugin not found.. exiting\""},{"line_number":905,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1a4dcd0f_db3a9434","line":902,"in_reply_to":"1a4dcd0f_2001096b","updated":"2015-08-14 06:54:09.000000000","message":"Exactly, your suggestion looks good for me but on the other hand some thirdparty-ci maintainers might not want to put plugin source into DEST. I can sympathize both opinions although I\u0027m not sure whether there are them really.\n\nMy intuitiveness supports your opinion.","commit_id":"c8309d83f890075a03819c2e614e880e71390ad9"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"c313c9a7bdf41826b3628bc05b65fcd2eccbfc63","unresolved":false,"context_lines":[{"line_number":899,"context_line":"        cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"},{"line_number":900,"context_line":"    else"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"            cp $DEST/$Q_PLUGIN_ALT_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            die $LINENO \"Neutron plugin not found.. exiting\""},{"line_number":905,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1a4dcd0f_db685424","line":902,"in_reply_to":"1a4dcd0f_2001096b","updated":"2015-08-14 06:55:15.000000000","message":"Sorry, I read it again.\n\nQ_PLUGIN_REMOTE_SOURCE_DIR !\u003d DEST + Q_PLUGIN_ALT_CONF_PATH\n\nIt looks like Q_PLUGIN_REMOTE_SOURCE_DIR will require vendors to use the same sub-directory in neutron repo (i.e. etc/neutron/plugins) in their own repo.\n\nI will update my change. So you will see the difference easier.","commit_id":"c8309d83f890075a03819c2e614e880e71390ad9"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"d60c0e9c8bf84eb6b6af47222b73c7d2a7b7ef4e","unresolved":false,"context_lines":[{"line_number":899,"context_line":"        cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"},{"line_number":900,"context_line":"    else"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"            cp $DEST/$Q_PLUGIN_ALT_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            die $LINENO \"Neutron plugin not found.. exiting\""},{"line_number":905,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1a4dcd0f_2001096b","line":902,"in_reply_to":"1a4dcd0f_653ac39a","updated":"2015-08-14 06:18:37.000000000","message":"Yes, the change in the other review is simpler and equally effective. I like that too.\n\nYou can see Q_PLUGIN_REMOTE_SOURCE_DIR added in the other review is \nalmost same as Q_PLUGIN_ALT_CONF_PATH added here.\n\nI believe Q_PLUGIN_REMOTE_SOURCE_DIR includes DEST as the prefix.\nThus,\n\nQ_PLUGIN_REMOTE_SOURCE_DIR \u003d DEST + Q_PLUGIN_ALT_CONF_PATH\n\nI prefer to separate DEST out because DEST is a required parameter for neutron-legacy. So we use it freely here. And it will leave those variables defined in function neutron_plugin_configure_common as relative path,\njust like Q_PLUGIN_CONF_PATH there.\n\nI believe Q_PLUGIN_REMOTE_SOURCE_DIR is defined as an absolute path according to its usage in the other review.\n\nThanks.","commit_id":"c8309d83f890075a03819c2e614e880e71390ad9"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"c697ace1406117fcc8bc1b65eaefe89d7d156139","unresolved":false,"context_lines":[{"line_number":899,"context_line":"        cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"},{"line_number":900,"context_line":"    else"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"            cp $DEST/$Q_PLUGIN_ALT_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            die $LINENO \"Neutron plugin not found.. exiting\""},{"line_number":905,"context_line":"        fi"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1a4dcd0f_1956ccce","line":902,"in_reply_to":"1a4dcd0f_f63a0f34","updated":"2015-08-14 02:47:53.000000000","message":"Could you explain what this means? Thanks.","commit_id":"c8309d83f890075a03819c2e614e880e71390ad9"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"4a1d1679357a0ef28c9b0cc19a5bcca1dec4f2b7","unresolved":false,"context_lines":[{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"            cp $DEST/$Q_PLUGIN_ALT_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            die $LINENO \"Neutron plugin not found.. exiting\""},{"line_number":905,"context_line":"        fi"},{"line_number":906,"context_line":"    fi"},{"line_number":907,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1a4dcd0f_16fc5b71","line":904,"updated":"2015-08-14 02:19:47.000000000","message":"nit: Neutron plugin config not found.. exiting","commit_id":"c8309d83f890075a03819c2e614e880e71390ad9"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"c697ace1406117fcc8bc1b65eaefe89d7d156139","unresolved":false,"context_lines":[{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_ALT_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"            cp $DEST/$Q_PLUGIN_ALT_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            die $LINENO \"Neutron plugin not found.. exiting\""},{"line_number":905,"context_line":"        fi"},{"line_number":906,"context_line":"    fi"},{"line_number":907,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"1a4dcd0f_595c54f0","line":904,"in_reply_to":"1a4dcd0f_16fc5b71","updated":"2015-08-14 02:47:53.000000000","message":"will do","commit_id":"c8309d83f890075a03819c2e614e880e71390ad9"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"6eaafc46cd96343394cf7e6a81cb32aae4eeee20","unresolved":false,"context_lines":[{"line_number":893,"context_line":"    # If needed, move config file from ``$NEUTRON_DIR/etc/neutron`` to ``NEUTRON_CONF_DIR``."},{"line_number":894,"context_line":"    # For the source config file, if the full path ``Q_PLUGIN_SRC_CONF_DIR`` is defined, use it."},{"line_number":895,"context_line":"    # Otherwise, try the relative path ``Q_PLUGIN_SRC_CONF_PATH`` under directory ``DEST``."},{"line_number":896,"context_line":"    # If neither of them is defined, use ``Q_PLUGIN_CONF_PATH`` under directory ``NEUTRON_DIR``."},{"line_number":897,"context_line":"    mkdir -p /$Q_PLUGIN_CONF_PATH"},{"line_number":898,"context_line":"    Q_PLUGIN_CONF_FILE\u003d$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME"},{"line_number":899,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"fa1b9901_83acc4ee","line":896,"updated":"2015-08-17 11:34:30.000000000","message":"nit: it\u0027s Q_PLUGIN_CONF_FILE","commit_id":"5b785ddf00659d9f844c49aa9e81dea4fa6240ae"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"4ed1bb0fc8a49342887cb5ca4eedd56b5a5254c2","unresolved":false,"context_lines":[{"line_number":893,"context_line":"    # If needed, move config file from ``$NEUTRON_DIR/etc/neutron`` to ``NEUTRON_CONF_DIR``."},{"line_number":894,"context_line":"    # For the source config file, if the full path ``Q_PLUGIN_SRC_CONF_DIR`` is defined, use it."},{"line_number":895,"context_line":"    # Otherwise, try the relative path ``Q_PLUGIN_SRC_CONF_PATH`` under directory ``DEST``."},{"line_number":896,"context_line":"    # If neither of them is defined, use ``Q_PLUGIN_CONF_PATH`` under directory ``NEUTRON_DIR``."},{"line_number":897,"context_line":"    mkdir -p /$Q_PLUGIN_CONF_PATH"},{"line_number":898,"context_line":"    Q_PLUGIN_CONF_FILE\u003d$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME"},{"line_number":899,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"fa1b9901_cb82cac8","line":896,"in_reply_to":"fa1b9901_83acc4ee","updated":"2015-08-17 15:51:50.000000000","message":"Yes. \nBut since Q_PLUGIN_CONF_FILENAME (say xxx.ini) is used in all three cases, I only mention the full path up to the nearest directory name, i.e.\n\n  (1) Q_PLUGIN_SRC_CONF_DIR/xxx.ini\n  (2) DEST/Q_PLUGIN_SRC_CONF_PATH/xxx.ini\n  (3) NEUTRON_DIR/Q_PLUGIN_CONF_PATH/xxx.ini\n\nIn (3), Q_PLUGIN_CONF_PATH/xxx.ini\u003dQ_PLUGIN_CONF_FILE.","commit_id":"5b785ddf00659d9f844c49aa9e81dea4fa6240ae"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"e98ecc92ffe436674109e8aa2b38441711792fcc","unresolved":false,"context_lines":[{"line_number":899,"context_line":"    mkdir -p /$Q_PLUGIN_CONF_PATH"},{"line_number":900,"context_line":"    Q_PLUGIN_CONF_FILE\u003d$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME"},{"line_number":901,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"        cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"    else"},{"line_number":904,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":905,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"fa1b9901_5372b04a","line":902,"updated":"2015-08-18 18:55:42.000000000","message":"I prefer this.\n\nAnyway, what SRC means?","commit_id":"12a2c98df2902b7107e964cd2ced13b95728cd2a"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"53e1ab9f80e56f2bf8248f216e0fc2329ed4d8e0","unresolved":false,"context_lines":[{"line_number":899,"context_line":"    mkdir -p /$Q_PLUGIN_CONF_PATH"},{"line_number":900,"context_line":"    Q_PLUGIN_CONF_FILE\u003d$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME"},{"line_number":901,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"        cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"    else"},{"line_number":904,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":905,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"fa1b9901_79deb56e","line":902,"in_reply_to":"fa1b9901_5372b04a","updated":"2015-08-18 20:20:55.000000000","message":"SRC means the source config file.","commit_id":"12a2c98df2902b7107e964cd2ced13b95728cd2a"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"e98ecc92ffe436674109e8aa2b38441711792fcc","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"        cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"    else"},{"line_number":904,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":905,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":906,"context_line":"        else"},{"line_number":907,"context_line":"            cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"fa1b9901_93228800","line":904,"updated":"2015-08-18 18:55:42.000000000","message":"Why do you want to use Q_PLUGIN_SRC_CONF_PATH. We can configure as following if we want the same, right?\n\nQ_PLUGIN_SRC_CONF_DIR\u003d$DEST/(A path vendor likes)","commit_id":"12a2c98df2902b7107e964cd2ced13b95728cd2a"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"bd0adf34a12bc040cea48b9021ba9c7dbb0428fd","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"        cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"    else"},{"line_number":904,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":905,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":906,"context_line":"        else"},{"line_number":907,"context_line":"            cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"fa1b9901_b42dfda9","line":904,"in_reply_to":"fa1b9901_1f9de709","updated":"2015-08-19 17:43:55.000000000","message":"No, users don\u0027t need to define DEST.\n\nIf users define Q_PLUGIN_SRC_CONF_PATH, DEST will be automatically added by neutron-legacy in my current patch. This is the approach I prefer and proposed initially.\n\nOne of your early comments saying that \"some thirdparty-ci maintainers might not want to put plugin source into DEST\".\nTo accommodate this requirement, I add another variable Q_PLUGIN_SRC_CONF_DIR. This will provide the full path. But then it becomes users\u0027 responsibility to provide the root directory in this variable in their \nneutron_plugin_configure_common function.\n\nIs it clear now? Thanks.","commit_id":"12a2c98df2902b7107e964cd2ced13b95728cd2a"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"319745a609a1fd96313cbb1c24c7216a7b69da0a","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"        cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"    else"},{"line_number":904,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":905,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":906,"context_line":"        else"},{"line_number":907,"context_line":"            cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"fa1b9901_6d854b05","line":904,"in_reply_to":"fa1b9901_4797063a","updated":"2015-08-19 23:10:21.000000000","message":"\u003e they cross two repos. Since we are decomposing vendor plugins from neutron, I think we should try not introducing new cross-references for other stuffs too.\n\nI agree that \"not introducing new cross-references\". If so, why do you connect DEST to vendor unique path? It makes sense for devstack not to add DEST to the path vendor plugins use.","commit_id":"12a2c98df2902b7107e964cd2ced13b95728cd2a"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"c67c11d409f53e2f14753b545d2059709202ade7","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"        cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"    else"},{"line_number":904,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":905,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":906,"context_line":"        else"},{"line_number":907,"context_line":"            cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"fa1b9901_0d57ef58","line":904,"in_reply_to":"fa1b9901_6d854b05","updated":"2015-08-19 23:16:40.000000000","message":"I am adding DEST inside neutron-legacy (i.e. in devstack repo), just like how it does with adding NEUTRON_DIR (i.e. $DEST/neutron) for vendor-specific Q_PLUGIN_CONF_PATH.\n\nSo I keep the same fashion without adding new cross-reference in vendor\u0027s repo.","commit_id":"12a2c98df2902b7107e964cd2ced13b95728cd2a"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"47bf0b95a5c754026395b334a1d2561ce233d284","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"        cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"    else"},{"line_number":904,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":905,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":906,"context_line":"        else"},{"line_number":907,"context_line":"            cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"fa1b9901_1f9de709","line":904,"in_reply_to":"fa1b9901_849f9c4f","updated":"2015-08-19 17:27:18.000000000","message":"Why do users need to specify DEST? In neutron_plugin_configure_common function, vendor devstack plugin can use the same DEST variable as devstack.\n\n\u003e cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE\n\nI disagree since more complicated ;)","commit_id":"12a2c98df2902b7107e964cd2ced13b95728cd2a"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"53e1ab9f80e56f2bf8248f216e0fc2329ed4d8e0","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"        cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"    else"},{"line_number":904,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":905,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":906,"context_line":"        else"},{"line_number":907,"context_line":"            cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"fa1b9901_849f9c4f","line":904,"in_reply_to":"fa1b9901_93228800","updated":"2015-08-18 20:20:55.000000000","message":"The reason I add Q_PLUGIN_SRC_CONF_PATH here is to allow users NOT needing to specify DEST in their\nneutron_plugin_configure_common function.\n\nSo for those who know exactly where the source config file is, they can use Q_PLUGIN_SRC_CONF_DIR to define the full path.\n\nFor those where DEST is not available, they can just define the relative path in Q_PLUGIN_SRC_CONF_PATH.\n\nAnother option is to keep Q_PLUGIN_SRC_CONF_PATH defining the relative path and have Q_PLUGIN_SRC_CONF_DIR default to DEST if not defined in neutron_plugin_configure_common function. Thus neutron-legacy will do\n\ncp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE\n\nBut this may look a little too complicated.","commit_id":"12a2c98df2902b7107e964cd2ced13b95728cd2a"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"34ecf61a6eb07dacd4832acbc376194c9734dcb5","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"        cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"    else"},{"line_number":904,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":905,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":906,"context_line":"        else"},{"line_number":907,"context_line":"            cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"fa1b9901_fb4120aa","line":904,"in_reply_to":"fa1b9901_b42dfda9","updated":"2015-08-19 21:16:20.000000000","message":"No. I\u0027m not sure yet ;)\n\nIn vendor plugin devstack, we can define Q_PLUGIN_SRC_CONF_DIR as following.\n\nQ_PLUGIN_SRC_CONF_DIR\u003d${Q_PLUGIN_SRC_CONF_DIR:-\"${DEST}/(a path vendors like)\"}\n\nAnd users/vendors can set in local.conf if need full path not include DEST\n\nQ_PLUGIN_SRC_CONF_DIR\u003d(a full path they like)","commit_id":"12a2c98df2902b7107e964cd2ced13b95728cd2a"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"17937bb1b8e19968abb549787a5f06bdeabd361e","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"        cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"    else"},{"line_number":904,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":905,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":906,"context_line":"        else"},{"line_number":907,"context_line":"            cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"fa1b9901_4797063a","line":904,"in_reply_to":"fa1b9901_cc47bdba","updated":"2015-08-19 22:12:19.000000000","message":"My point is DEST is a variable that is introduced in devstack repo and assigned a run-time value when running devstack.\n\nI would avoid using DEST in vendor\u0027s repo because they cross two repos. Since we are decomposing vendor plugins from neutron, I think we should try not introducing new cross-references for other stuffs too.\n\nSo my original idea is to keep the use of DEST inside devstack repo (i.e. use it in neutron-legacy) and let the definitions in vendor\u0027s repo (i.e. function neutron_plugin_configure_common) only define the relative path from their repo root.\n\nBut now my new patch also takes a full path if users want it that way.","commit_id":"12a2c98df2902b7107e964cd2ced13b95728cd2a"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"52a386d94734c67308460822cc55ef490c5b512f","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"        cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"    else"},{"line_number":904,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":905,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":906,"context_line":"        else"},{"line_number":907,"context_line":"            cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"fa1b9901_cc47bdba","line":904,"in_reply_to":"fa1b9901_e14c0aca","updated":"2015-08-19 21:49:54.000000000","message":"Why not use run-time variable? It seems almost plugin uses it. e.g. https://github.com/openstack/networking-midonet/blob/master/devstack/settings#L6\n\nI can find \"TOP_DIR\" in vmware-nsx plugin too. It\u0027s the same as DEST.\n\nhttps://github.com/openstack/vmware-nsx/blob/master/devstack/lib/vmware_nsx#L27","commit_id":"12a2c98df2902b7107e964cd2ced13b95728cd2a"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"2225f0205e3f48e8673295c0dbbc3fb550e3bfce","unresolved":false,"context_lines":[{"line_number":901,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_DIR\" !\u003d \u0027\u0027 ]]; then"},{"line_number":902,"context_line":"        cp $Q_PLUGIN_SRC_CONF_DIR/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"    else"},{"line_number":904,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":905,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":906,"context_line":"        else"},{"line_number":907,"context_line":"            cp $NEUTRON_DIR/$Q_PLUGIN_CONF_FILE /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":10,"id":"fa1b9901_e14c0aca","line":904,"in_reply_to":"fa1b9901_fb4120aa","updated":"2015-08-19 21:21:30.000000000","message":"That is what I want to avoid, i.e. not using DEST in vendor\u0027s plugin because it is a run-time variable.\nBut anyhow please read my latest patch #11. I think it simplifies things.","commit_id":"12a2c98df2902b7107e964cd2ced13b95728cd2a"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"d1302c478b1bde244552e9df80966ed30fb2ac8c","unresolved":false,"context_lines":[{"line_number":898,"context_line":"    mkdir -p /$Q_PLUGIN_CONF_PATH"},{"line_number":899,"context_line":"    Q_PLUGIN_CONF_FILE\u003d$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME"},{"line_number":900,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" \u003d~ ^/ ]]; then"},{"line_number":902,"context_line":"            cp $Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":11,"id":"fa1b9901_8c9785eb","line":901,"updated":"2015-08-19 21:50:19.000000000","message":"It\u0027s better than adding two variables(Q_PLUGIN_SRC_CONF_DIR, Q_PLUGIN_SRC_CONF_PATH) but I prefer using just Q_PLUGIN_SRC_CONF_DIR ;)","commit_id":"09d839f15cabe88e22669eeb26ea2027afc4ab37"},{"author":{"_account_id":7715,"name":"Hirofumi Ichihara","email":"ichihara.hirofumi@gmail.com","username":"Hirofumi-Ichihara"},"change_message_id":"ca94d4676a9d3519f2b66c253ad7113451aa0c31","unresolved":false,"context_lines":[{"line_number":898,"context_line":"    mkdir -p /$Q_PLUGIN_CONF_PATH"},{"line_number":899,"context_line":"    Q_PLUGIN_CONF_FILE\u003d$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME"},{"line_number":900,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" \u003d~ ^/ ]]; then"},{"line_number":902,"context_line":"            cp $Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":11,"id":"fa1b9901_8d91bf49","line":901,"in_reply_to":"fa1b9901_4758668a","updated":"2015-08-19 23:11:15.000000000","message":"Nope.","commit_id":"09d839f15cabe88e22669eeb26ea2027afc4ab37"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"73d4b6b8a6d9bdb9c4e6f132bede036318855c3b","unresolved":false,"context_lines":[{"line_number":898,"context_line":"    mkdir -p /$Q_PLUGIN_CONF_PATH"},{"line_number":899,"context_line":"    Q_PLUGIN_CONF_FILE\u003d$Q_PLUGIN_CONF_PATH/$Q_PLUGIN_CONF_FILENAME"},{"line_number":900,"context_line":"    if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" !\u003d \u0027\u0027 ]]; then"},{"line_number":901,"context_line":"        if [[ \"$Q_PLUGIN_SRC_CONF_PATH\" \u003d~ ^/ ]]; then"},{"line_number":902,"context_line":"            cp $Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"},{"line_number":903,"context_line":"        else"},{"line_number":904,"context_line":"            cp $DEST/$Q_PLUGIN_SRC_CONF_PATH/$Q_PLUGIN_CONF_FILENAME /$Q_PLUGIN_CONF_FILE"}],"source_content_type":"application/x-shellscript","patch_set":11,"id":"fa1b9901_4758668a","line":901,"in_reply_to":"fa1b9901_8c9785eb","updated":"2015-08-19 22:13:44.000000000","message":"Did you mean just renaming it?","commit_id":"09d839f15cabe88e22669eeb26ea2027afc4ab37"}]}
