)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"aaea8a24c83c98f2f2f1795702543ee63a353a51","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Finally, it will write out the placement config file along"},{"line_number":20,"context_line":"with the placement database connection so the placement"},{"line_number":21,"context_line":"service can start on the stein (new) side."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Depends-On: https://review.openstack.org/603234/"},{"line_number":24,"context_line":"Change-Id: Ia0f19debb442be2b3d04eae238a3d7287393b5eb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_ceca6e4d","line":22,"updated":"2018-09-21 19:20:27.000000000","message":"Per grenade rules, we need to have this depend on a nova change which has a release note that explains the need for the upgrade change.\n\nhttps://docs.openstack.org/grenade/latest/readme.html#theory-of-upgrade\n\n\"\"\"\nAny other required changes on upgrade are an exception and must be called out in the release notes.\n\nThe Grenade core team requires the following before landing these kinds of changes:\n\n* The Release Notes for the release where this will be required clearly specify these manual upgrade steps.\n* The PTL for the project in question has signed off on this change.\n\n\"\"\"","commit_id":"ded45726801b04624fb6e93a789074bcbf15bc76"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b42afd54649de1a31efcae3a532e269603beb761","unresolved":false,"context_lines":[{"line_number":21,"context_line":"service can start on the stein (new) side."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Depends-On: https://review.openstack.org/603234/"},{"line_number":24,"context_line":"Depends-On: https://review.openstack.org/604458/"},{"line_number":25,"context_line":"Change-Id: Ia0f19debb442be2b3d04eae238a3d7287393b5eb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3f79a3b5_2e07bf72","line":24,"updated":"2018-09-30 15:37:26.000000000","message":"I need to make this same change for the other grenade jobs...","commit_id":"a1dfba9788be3d47493b8743c1f4458a95a94ff5"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4cc9cf2082f0d7fcb78a51796289458292759369","unresolved":false,"context_lines":[{"line_number":21,"context_line":"service can start on the stein (new) side."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Depends-On: https://review.openstack.org/603234/"},{"line_number":24,"context_line":"Depends-On: https://review.openstack.org/604458/"},{"line_number":25,"context_line":"Depends-On: https://review.openstack.org/606850/"},{"line_number":26,"context_line":"Depends-On: https://review.openstack.org/606851/"},{"line_number":27,"context_line":"Change-Id: Ia0f19debb442be2b3d04eae238a3d7287393b5eb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3f79a3b5_eeaea72d","line":26,"range":{"start_line":24,"start_character":0,"end_line":26,"end_character":48},"updated":"2018-09-30 16:12:09.000000000","message":"Maybe we can rely on https://review.openstack.org/#/c/606853/ to avoid the need to modify the PROJECTS variable in each of these other changes.","commit_id":"12cf32ee74c15e0a0f13f69e81c73cf6a8e0f573"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b1945006a66ab166d6adaf6a8bb7d27cd3dd39f7","unresolved":false,"context_lines":[{"line_number":12,"context_line":"but before services are started on the stein side of the"},{"line_number":13,"context_line":"grenade run."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The script needs to clone and the placement repo to have"},{"line_number":16,"context_line":"access to the necessary code and scripts. The base devstack"},{"line_number":17,"context_line":"won\u0027t do this so we have do it ourselves."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"3f79a3b5_30dfd138","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":25},"updated":"2018-10-16 12:30:04.000000000","message":"Either this script needs to clone the repo or it \"will run after openstack/placement is cloned\"/L10/ .","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b1945006a66ab166d6adaf6a8bb7d27cd3dd39f7","unresolved":false,"context_lines":[{"line_number":12,"context_line":"but before services are started on the stein side of the"},{"line_number":13,"context_line":"grenade run."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The script needs to clone and the placement repo to have"},{"line_number":16,"context_line":"access to the necessary code and scripts. The base devstack"},{"line_number":17,"context_line":"won\u0027t do this so we have do it ourselves."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"3f79a3b5_b0d3e136","line":15,"range":{"start_line":15,"start_character":26,"end_line":15,"end_character":30},"updated":"2018-10-16 12:30:04.000000000","message":"not needed word?","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"571401753331536d842c45e5bdd052b4bd11953a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"but before services are started on the stein side of the"},{"line_number":13,"context_line":"grenade run."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The script needs to clone and the placement repo to have"},{"line_number":16,"context_line":"access to the necessary code and scripts. The base devstack"},{"line_number":17,"context_line":"won\u0027t do this so we have do it ourselves."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"3f79a3b5_3d337ec6","line":15,"range":{"start_line":15,"start_character":26,"end_line":15,"end_character":30},"in_reply_to":"3f79a3b5_a1171554","updated":"2018-10-24 13:19:10.000000000","message":"Done","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"36da873e5545bb82faba0aa3135028955b79e640","unresolved":false,"context_lines":[{"line_number":12,"context_line":"but before services are started on the stein side of the"},{"line_number":13,"context_line":"grenade run."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"The script needs to clone and the placement repo to have"},{"line_number":16,"context_line":"access to the necessary code and scripts. The base devstack"},{"line_number":17,"context_line":"won\u0027t do this so we have do it ourselves."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":19,"id":"3f79a3b5_a1171554","line":15,"range":{"start_line":15,"start_character":26,"end_line":15,"end_character":30},"in_reply_to":"3f79a3b5_b0d3e136","updated":"2018-10-16 14:40:49.000000000","message":"This could be updated yeah, it written before I sorted out the d-g/zuul dependencies to get the placement repo cloned before this runs.","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"}],"projects/60_nova/from-rocky/upgrade-nova":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"df8f5a2312729a12cfe0e31a20c3b5f7729c3fc4","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    fi"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    if [[ ! -f ${db_script} ]]; then"},{"line_number":19,"context_line":"        die $LINENO \"${db_script} not found; has placement been cloned?\""},{"line_number":20,"context_line":"    fi"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    # Write out the migrate-db.rc file."}],"source_content_type":"application/octet-stream","patch_set":1,"id":"3f79a3b5_6e8c7a34","line":19,"updated":"2018-09-21 19:17:17.000000000","message":"I expect the grenade run for this will blow up here since we aren\u0027t cloning openstack/placement in this job, like is done in the devstack patch here:\n\nhttps://review.openstack.org/#/c/600162/","commit_id":"ded45726801b04624fb6e93a789074bcbf15bc76"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"aaea8a24c83c98f2f2f1795702543ee63a353a51","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    # TODO(mriedem): What other stuff do we need to copy out of the nova.conf"},{"line_number":48,"context_line":"    # [placement] options and put into placement.conf?"},{"line_number":49,"context_line":"    # randomize_allocation_candidates?"},{"line_number":50,"context_line":"    # policy_file?"},{"line_number":51,"context_line":"    # incomplete_consumer_project_id? incomplete_consumer_user_id?"},{"line_number":52,"context_line":"}"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"3f79a3b5_0eadc682","line":50,"updated":"2018-09-21 19:20:27.000000000","message":"We should also copy the policy file from /etc/nova to /etc/placement if it exists from rocky.","commit_id":"ded45726801b04624fb6e93a789074bcbf15bc76"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"694492c408b371ac5e8566d20bf98cb778d67cbd","unresolved":false,"context_lines":[{"line_number":16,"context_line":"    fi"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"    if [[ ! -f ${db_script} ]]; then"},{"line_number":19,"context_line":"        die $LINENO \"${db_script} not found; has placement been cloned?\""},{"line_number":20,"context_line":"    fi"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    # Write out the migrate-db.rc file."}],"source_content_type":"application/octet-stream","patch_set":2,"id":"3f79a3b5_3bd8f850","line":19,"updated":"2018-09-22 18:52:53.000000000","message":"Yeah this blows up because the old side of devstack didn\u0027t install placement:\n\nhttp://logs.openstack.org/54/604454/2/check/neutron-grenade/5de4350/logs/grenade.sh.txt.gz#_2018-09-21_21_35_49_075","commit_id":"56decbaed8007825b9132ea3f0191962c4df1ce2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c1bdb0f8cad44d011024a5a9f33fdc7d7ee0fa01","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    # Devstack on the Rocky side won\u0027t install the placement repo because"},{"line_number":11,"context_line":"    # it didn\u0027t exist until Stein, so we have to git clone the repo here"},{"line_number":12,"context_line":"    # to get the DB script."},{"line_number":13,"context_line":"    git_clone ${GIT_BASE}/openstack/placement.git \\"},{"line_number":14,"context_line":"    ${TARGET_RELEASE_DIR}/placement ${TARGET_DEVSTACK_BRANCH}"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    local db_script\u003d\u0027\u0027"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3f79a3b5_7b85100a","line":13,"updated":"2018-09-22 19:07:13.000000000","message":"I\u0027m not really sure this is right. If devstack has already installed services on the new side by the time this runs, we\u0027d have placement in place, because we don\u0027t because https://review.openstack.org/#/c/600162/ hasn\u0027t landed and that hasn\u0027t landed because grenade is failing, which is what we\u0027re trying to fix here.\n\nSo do we need to do some kind of 2-step dance to get the devstack change merging without grenade? Or does grenade need to actually also do the work of installing and configuring placement separately (probably yes?). Since that\u0027s more like what real deployments are going to need to do as part of their upgrade.","commit_id":"dd59dd2fc4c248b04dd005f3864f6bbd6cb40777"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1a290d6baed33aecdb53028953801b8e1bf73aeb","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    # Devstack on the Rocky side won\u0027t install the placement repo because"},{"line_number":11,"context_line":"    # it didn\u0027t exist until Stein, so we have to git clone the repo here"},{"line_number":12,"context_line":"    # to get the DB script."},{"line_number":13,"context_line":"    git_clone ${GIT_BASE}/openstack/placement.git \\"},{"line_number":14,"context_line":"    ${TARGET_RELEASE_DIR}/placement ${TARGET_DEVSTACK_BRANCH}"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    local db_script\u003d\u0027\u0027"}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3f79a3b5_ca4a4cac","line":13,"in_reply_to":"3f79a3b5_7b85100a","updated":"2018-09-23 22:37:29.000000000","message":"This fails:\n\nhttp://logs.openstack.org/54/604454/4/check/neutron-grenade/9883195/logs/grenade.sh.txt.gz#_2018-09-22_20_08_04_799\n\nI\u0027m not sure why we have to put openstack/placement into PROJECTS because it should be included from the neutron-grenade job configuration...","commit_id":"dd59dd2fc4c248b04dd005f3864f6bbd6cb40777"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f6653f64f363201398901e0a29811adfbbcad991","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    # Copy any policy overrides from nova. We assume yaml here since that is"},{"line_number":65,"context_line":"    # the default in code, but it could also be a json file."},{"line_number":66,"context_line":"    local old_policy_file\u003d${NOVA_CONF_DIR}/placement-policy.yaml"},{"line_number":67,"context_line":"    if [[ -f ${old_policy_file}]]; then"},{"line_number":68,"context_line":"        local new_policy_file\u003d${placement_conf_dir}/policy.yaml"},{"line_number":69,"context_line":"        cp ${old_policy_file} ${new_policy_file}"},{"line_number":70,"context_line":"        # Update the config to point at the renamed file."}],"source_content_type":"application/octet-stream","patch_set":7,"id":"3f79a3b5_87ddffde","line":67,"updated":"2018-09-25 20:56:56.000000000","message":"damn syntax\n\nhttp://logs.openstack.org/54/604454/7/check/neutron-grenade/b382ba6/logs/grenade.sh.txt.gz#_2018-09-24_20_19_28_168","commit_id":"7e43eeb51b0a9b5a144579645cce2cf7db1f1cc0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3143cad65b7343a387a8c7ce3e6e3c7f04b37bd1","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    # Copy the placement-related table data from the nova_api database"},{"line_number":49,"context_line":"    # into the placement database."},{"line_number":50,"context_line":"    ${db_script} --migrate"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    # Write out the contents of placement.conf."},{"line_number":53,"context_line":"    local placement_conf_dir\u003d/etc/placement"}],"source_content_type":"application/octet-stream","patch_set":8,"id":"3f79a3b5_88ef3585","line":50,"updated":"2018-09-26 21:45:49.000000000","message":"Oops, forgot that the rc file isn\u0027t in the current directly:\n\nhttp://logs.openstack.org/54/604454/8/check/neutron-grenade/ab260a1/logs/grenade.sh.txt.gz#_2018-09-26_03_05_28_027","commit_id":"40741e83442e939121767e65ab3105efaf138b3c"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9284bad17dd50eb4ac63aeb0e5c047df4d61aca2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        db_script\u003d${TARGET_RELEASE_DIR}/placement/tools/mysql-migrate-db.sh"},{"line_number":26,"context_line":"    else"},{"line_number":27,"context_line":"        die $LINENO \"${DATABASE_TYPE} is not yet supported\""},{"line_number":28,"context_line":"    fi"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    if [[ ! -f ${db_script} ]]; then"},{"line_number":31,"context_line":"        die $LINENO \"${db_script} not found; has placement been cloned?\""}],"source_content_type":"application/octet-stream","patch_set":9,"id":"3f79a3b5_89196d7b","line":28,"updated":"2018-09-27 10:06:45.000000000","message":"Dare we make this block generic:\n\n    db_script\u003d${TARGET_RELEASE_DIR}/placement/tools/${DATABASE_TYPE}-migrate-db.sh\n    [[ -x $db_script ]] || die ...","commit_id":"a20874477879c0f13341e16afff5f6768c3890f8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"864ef86a084ee910f8c81690c37ffaf5a499d5fc","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        db_script\u003d${TARGET_RELEASE_DIR}/placement/tools/mysql-migrate-db.sh"},{"line_number":26,"context_line":"    else"},{"line_number":27,"context_line":"        die $LINENO \"${DATABASE_TYPE} is not yet supported\""},{"line_number":28,"context_line":"    fi"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    if [[ ! -f ${db_script} ]]; then"},{"line_number":31,"context_line":"        die $LINENO \"${db_script} not found; has placement been cloned?\""}],"source_content_type":"application/octet-stream","patch_set":9,"id":"3f79a3b5_56d3e537","line":28,"in_reply_to":"3f79a3b5_3b873415","updated":"2018-09-27 16:45:09.000000000","message":"Done","commit_id":"a20874477879c0f13341e16afff5f6768c3890f8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"971e660a2f82d85820e0844bb7dc78e379d843c9","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        db_script\u003d${TARGET_RELEASE_DIR}/placement/tools/mysql-migrate-db.sh"},{"line_number":26,"context_line":"    else"},{"line_number":27,"context_line":"        die $LINENO \"${DATABASE_TYPE} is not yet supported\""},{"line_number":28,"context_line":"    fi"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    if [[ ! -f ${db_script} ]]; then"},{"line_number":31,"context_line":"        die $LINENO \"${db_script} not found; has placement been cloned?\""}],"source_content_type":"application/octet-stream","patch_set":9,"id":"3f79a3b5_3b873415","line":28,"in_reply_to":"3f79a3b5_89196d7b","updated":"2018-09-27 16:13:51.000000000","message":"Could.","commit_id":"a20874477879c0f13341e16afff5f6768c3890f8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e4a461ea7cdb0fc1fd71dcee369774517aacfbb0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    touch ${rc_file}"},{"line_number":37,"context_line":"    # $db_script is an absolute path so we can execute it directly."},{"line_number":38,"context_line":"    ${db_script} --mkconfig ${rc_file}"},{"line_number":39,"context_line":"    sed -i s/NOVA_API_USER.*/NOVA_API_USER\u003d\\\"${DATABASE_USER}\\\"/g ${rc_file}"},{"line_number":40,"context_line":"    sed -i s/NOVA_API_PASS.*/NOVA_API_PASS\u003d\\\"${DATABASE_PASSWORD}\\\"/g ${rc_file}"},{"line_number":41,"context_line":"    sed -i s/PLACEMENT_USER.*/PLACEMENT_USER\u003d\\\"${DATABASE_USER}\\\"/g ${rc_file}"},{"line_number":42,"context_line":"    sed -i s/PLACEMENT_PASS.*/PLACEMENT_PASS\u003d\\\"${DATABASE_PASSWORD}\\\"/g ${rc_file}"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"3f79a3b5_bbcd845f","line":39,"updated":"2018-09-27 16:15:41.000000000","message":"This isn\u0027t working...\n\nhttp://logs.openstack.org/54/604454/9/check/neutron-grenade/10fdc8d/logs/grenade.sh.txt.gz#_2018-09-27_04_19_17_169\n\n2018-09-27 04:19:17.169 | A value for NOVA_API_USER was not provided but is required\n\nIf the rc file was an ini file this would be easier since we have bash functions to write to ini files. Otherwise my sed-fu needs work.","commit_id":"a20874477879c0f13341e16afff5f6768c3890f8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1bb999ec2478d56ddbeb8ac39260a7ea59712458","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    touch ${rc_file}"},{"line_number":37,"context_line":"    # $db_script is an absolute path so we can execute it directly."},{"line_number":38,"context_line":"    ${db_script} --mkconfig ${rc_file}"},{"line_number":39,"context_line":"    sed -i s/NOVA_API_USER.*/NOVA_API_USER\u003d\\\"${DATABASE_USER}\\\"/g ${rc_file}"},{"line_number":40,"context_line":"    sed -i s/NOVA_API_PASS.*/NOVA_API_PASS\u003d\\\"${DATABASE_PASSWORD}\\\"/g ${rc_file}"},{"line_number":41,"context_line":"    sed -i s/PLACEMENT_USER.*/PLACEMENT_USER\u003d\\\"${DATABASE_USER}\\\"/g ${rc_file}"},{"line_number":42,"context_line":"    sed -i s/PLACEMENT_PASS.*/PLACEMENT_PASS\u003d\\\"${DATABASE_PASSWORD}\\\"/g ${rc_file}"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"3f79a3b5_fb31bc5a","line":39,"in_reply_to":"3f79a3b5_bbcd845f","updated":"2018-09-27 16:17:06.000000000","message":"Hmm, wtf:\n\nhttp://logs.openstack.org/54/604454/9/check/neutron-grenade/10fdc8d/logs/grenade.sh.txt.gz#_2018-09-27_04_19_17_047\n\n2018-09-27 04:19:17.047 | + /opt/stack/new/grenade/projects/60_nova/from-rocky/upgrade-nova:configure_nova_upgrade:39 :   sed -i \u0027s/NOVA_API_USER.*/NOVA_API_USER\u003d\"\"/g\u0027 /tmp/migrate-db.rc\n\nMaybe need to run initialize_database_backends first?","commit_id":"a20874477879c0f13341e16afff5f6768c3890f8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"864ef86a084ee910f8c81690c37ffaf5a499d5fc","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    touch ${rc_file}"},{"line_number":37,"context_line":"    # $db_script is an absolute path so we can execute it directly."},{"line_number":38,"context_line":"    ${db_script} --mkconfig ${rc_file}"},{"line_number":39,"context_line":"    sed -i s/NOVA_API_USER.*/NOVA_API_USER\u003d\\\"${DATABASE_USER}\\\"/g ${rc_file}"},{"line_number":40,"context_line":"    sed -i s/NOVA_API_PASS.*/NOVA_API_PASS\u003d\\\"${DATABASE_PASSWORD}\\\"/g ${rc_file}"},{"line_number":41,"context_line":"    sed -i s/PLACEMENT_USER.*/PLACEMENT_USER\u003d\\\"${DATABASE_USER}\\\"/g ${rc_file}"},{"line_number":42,"context_line":"    sed -i s/PLACEMENT_PASS.*/PLACEMENT_PASS\u003d\\\"${DATABASE_PASSWORD}\\\"/g ${rc_file}"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"3f79a3b5_f6d9d155","line":39,"in_reply_to":"3f79a3b5_fb31bc5a","updated":"2018-09-27 16:45:09.000000000","message":"Done","commit_id":"a20874477879c0f13341e16afff5f6768c3890f8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9284bad17dd50eb4ac63aeb0e5c047df4d61aca2","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    # TODO(mriedem): What other stuff do we need to copy out of the nova.conf"},{"line_number":61,"context_line":"    # [placement] options and put into placement.conf?"},{"line_number":62,"context_line":"    # randomize_allocation_candidates?"},{"line_number":63,"context_line":"    # incomplete_consumer_project_id? incomplete_consumer_user_id?"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    # Copy any policy overrides from nova. We assume yaml here since that is"},{"line_number":66,"context_line":"    # the default in code, but it could also be a json file."}],"source_content_type":"application/octet-stream","patch_set":9,"id":"3f79a3b5_c938c5d5","line":63,"updated":"2018-09-27 10:06:45.000000000","message":"all three of these has reasonable defaults","commit_id":"a20874477879c0f13341e16afff5f6768c3890f8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"971e660a2f82d85820e0844bb7dc78e379d843c9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    # TODO(mriedem): What other stuff do we need to copy out of the nova.conf"},{"line_number":61,"context_line":"    # [placement] options and put into placement.conf?"},{"line_number":62,"context_line":"    # randomize_allocation_candidates?"},{"line_number":63,"context_line":"    # incomplete_consumer_project_id? incomplete_consumer_user_id?"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    # Copy any policy overrides from nova. We assume yaml here since that is"},{"line_number":66,"context_line":"    # the default in code, but it could also be a json file."}],"source_content_type":"application/octet-stream","patch_set":9,"id":"3f79a3b5_3b8c142d","line":63,"in_reply_to":"3f79a3b5_c938c5d5","updated":"2018-09-27 16:13:51.000000000","message":"Sure. And we don\u0027t change these in devstack. I\u0027m mostly concerned with deployment tools using this grenade script as a template for how upgrading with an extracted placement should work, and forgetting to copy over any customized placement-related options from nova.conf when they create the placement.conf.","commit_id":"a20874477879c0f13341e16afff5f6768c3890f8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"9284bad17dd50eb4ac63aeb0e5c047df4d61aca2","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        # Update the config to point at the renamed file."},{"line_number":72,"context_line":"        iniset ${placement_conf} placement policy_file ${new_policy_file}"},{"line_number":73,"context_line":"    fi"},{"line_number":74,"context_line":"}"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"3f79a3b5_c96685ef","line":74,"updated":"2018-09-27 10:06:45.000000000","message":"Keystoneauth middleware config is the main thing I can think of that is missing, if the conf file doesn\u0027t already exist, that doesn\u0027t have a reasonable default.\n\nAnd whether we want to copy \u0027debug\u0027 or \u0027log_options\u0027.\n\nThe minimal config I used for placedock might be a useful thing to copy from (although it was probably bigger/redundant in some ways): https://github.com/cdent/placedock/blob/master/shared/etc/placement/placement.conf","commit_id":"a20874477879c0f13341e16afff5f6768c3890f8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"864ef86a084ee910f8c81690c37ffaf5a499d5fc","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        # Update the config to point at the renamed file."},{"line_number":72,"context_line":"        iniset ${placement_conf} placement policy_file ${new_policy_file}"},{"line_number":73,"context_line":"    fi"},{"line_number":74,"context_line":"}"}],"source_content_type":"application/octet-stream","patch_set":9,"id":"3f79a3b5_b6e35906","line":74,"in_reply_to":"3f79a3b5_c96685ef","updated":"2018-09-27 16:45:09.000000000","message":"Done","commit_id":"a20874477879c0f13341e16afff5f6768c3890f8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e72525e771a35851627e923a8599c274254612b0","unresolved":false,"context_lines":[{"line_number":52,"context_line":"    sudo mkdir -p $placement_conf_dir"},{"line_number":53,"context_line":"    local placement_conf\u003d${placement_conf_dir}/placement.conf"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    # NOTE(mriedem): iniset will create the config file if it does not exist"},{"line_number":56,"context_line":"    iniset ${placement_conf} database connection `database_connection_url placement`"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    # Configure logging options."}],"source_content_type":"application/octet-stream","patch_set":10,"id":"3f79a3b5_1108e924","line":55,"range":{"start_line":55,"start_character":21,"end_line":55,"end_character":76},"updated":"2018-09-29 19:45:16.000000000","message":"Or not, permission denied:\n\nhttp://logs.openstack.org/54/604454/10/check/neutron-grenade/8351e0a/logs/grenade.sh.txt.gz#_2018-09-27_23_04_12_106","commit_id":"1ffe1023d92337b406602eafc9315b38e8572a01"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9fb8306003e6d262742e3b1de267f79d9e094804","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    fi"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    # Make adjustments to uwsgi and apache configuration so that we are"},{"line_number":81,"context_line":"    # pointing to the right service and configuratin"},{"line_number":82,"context_line":"    disable_apache_site nova-placement-api"},{"line_number":83,"context_line":"    # This will enable_apache_site placement-api. The entry in the service"},{"line_number":84,"context_line":"    # catalog remains the same."}],"source_content_type":"application/octet-stream","patch_set":13,"id":"3f79a3b5_f72393b9","line":81,"range":{"start_line":81,"start_character":40,"end_line":81,"end_character":52},"updated":"2018-10-03 18:44:24.000000000","message":"configuration","commit_id":"0f35ad6d608d8b3d587cd50eb1a67a6fca943a5f"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9fb8306003e6d262742e3b1de267f79d9e094804","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    disable_apache_site nova-placement-api"},{"line_number":83,"context_line":"    # This will enable_apache_site placement-api. The entry in the service"},{"line_number":84,"context_line":"    # catalog remains the same."},{"line_number":85,"context_line":"    write_uwsgi_config \"${PLACEMENT_UWSGI_CONF}\" \"${PLACEMENT_UWSGI}\" \"/placement\""},{"line_number":86,"context_line":"    # Grenade itself will ensure that placement is restarted, and when it does"},{"line_number":87,"context_line":"    # that, a new systemd unit file, pointing to the right wsgi app, is created."},{"line_number":88,"context_line":"}"}],"source_content_type":"application/octet-stream","patch_set":13,"id":"3f79a3b5_9afda609","line":85,"range":{"start_line":85,"start_character":23,"end_line":85,"end_character":69},"updated":"2018-10-03 18:44:24.000000000","message":"These will be wrong with current devstack - remember that cdent\u0027s devstack change which updates these variables depends on *this* grenade patch, so we\u0027re in a catch-22.","commit_id":"0f35ad6d608d8b3d587cd50eb1a67a6fca943a5f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b634cdc74fa96925b52743bff39b64a674f15c2d","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    disable_apache_site nova-placement-api"},{"line_number":83,"context_line":"    # This will enable_apache_site placement-api. The entry in the service"},{"line_number":84,"context_line":"    # catalog remains the same."},{"line_number":85,"context_line":"    write_uwsgi_config \"${PLACEMENT_UWSGI_CONF}\" \"${PLACEMENT_UWSGI}\" \"/placement\""},{"line_number":86,"context_line":"    # Grenade itself will ensure that placement is restarted, and when it does"},{"line_number":87,"context_line":"    # that, a new systemd unit file, pointing to the right wsgi app, is created."},{"line_number":88,"context_line":"}"}],"source_content_type":"application/octet-stream","patch_set":13,"id":"3f79a3b5_5ad70e23","line":85,"range":{"start_line":85,"start_character":23,"end_line":85,"end_character":69},"in_reply_to":"3f79a3b5_9afda609","updated":"2018-10-03 19:02:01.000000000","message":"fie! I forgot about that. I was imagining that the target devstack was \"my\" code\n\ni\u0027ll put static values in here for now, that seems like the most straightforward thing for now","commit_id":"0f35ad6d608d8b3d587cd50eb1a67a6fca943a5f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"0909bdff81447da856ad8ace1e71a1e1f4cfe524","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    # Configure [keystone_authtoken] option and auth cache."},{"line_number":68,"context_line":"    sudo install -d -o $STACK_USER /var/cache/placement"},{"line_number":69,"context_line":"    configure_auth_token_middleware ${placement_conf} placement /var/cache/placement"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    # TODO(mriedem): What other stuff do we need to copy out of the nova.conf"},{"line_number":72,"context_line":"    # [placement] options and put into placement.conf?"}],"source_content_type":"application/octet-stream","patch_set":18,"id":"3f79a3b5_fba840db","line":69,"updated":"2018-10-04 20:43:12.000000000","message":"$SSL_BUNDLE_FILE is not defined when this is called so we see empty value for ca_file in http://logs.openstack.org/54/604454/18/check/neutron-grenade/da2bbd8/logs/etc/placement/placement.conf.txt.gz\n\nBut this still work so perhaps it is a-ok.","commit_id":"40ac28bf2af6961c636c6c8c2a6461ddd26a12cf"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b1945006a66ab166d6adaf6a8bb7d27cd3dd39f7","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    # if PLACEMENT_DB_ENABLED\u003dTrue from the old side."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    # Devstack on the Rocky side won\u0027t install the placement repo because"},{"line_number":16,"context_line":"    # it didn\u0027t exist until Stein, so unless the CI infra (devstack-gate)"},{"line_number":17,"context_line":"    # already cloned the repo, we have to git clone the repo here"},{"line_number":18,"context_line":"    # to get the DB script."},{"line_number":19,"context_line":"    if [[ ! -d ${TARGET_RELEASE_DIR}/placement ]]; then"},{"line_number":20,"context_line":"        git_clone ${GIT_BASE}/openstack/placement.git \\"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_d0c21d54","line":17,"range":{"start_line":16,"start_character":34,"end_line":17,"end_character":29},"updated":"2018-10-16 12:30:04.000000000","message":"will devstack-gate clone the repo or not?","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6f7037d1397df692c70741c997bdfd9b8d92283e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    # if PLACEMENT_DB_ENABLED\u003dTrue from the old side."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    # Devstack on the Rocky side won\u0027t install the placement repo because"},{"line_number":16,"context_line":"    # it didn\u0027t exist until Stein, so unless the CI infra (devstack-gate)"},{"line_number":17,"context_line":"    # already cloned the repo, we have to git clone the repo here"},{"line_number":18,"context_line":"    # to get the DB script."},{"line_number":19,"context_line":"    if [[ ! -d ${TARGET_RELEASE_DIR}/placement ]]; then"},{"line_number":20,"context_line":"        git_clone ${GIT_BASE}/openstack/placement.git \\"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_5d460f59","line":17,"range":{"start_line":16,"start_character":34,"end_line":17,"end_character":29},"in_reply_to":"3f79a3b5_012369bc","updated":"2018-10-17 07:38:18.000000000","message":"Fair enough.","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"36da873e5545bb82faba0aa3135028955b79e640","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    # if PLACEMENT_DB_ENABLED\u003dTrue from the old side."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    # Devstack on the Rocky side won\u0027t install the placement repo because"},{"line_number":16,"context_line":"    # it didn\u0027t exist until Stein, so unless the CI infra (devstack-gate)"},{"line_number":17,"context_line":"    # already cloned the repo, we have to git clone the repo here"},{"line_number":18,"context_line":"    # to get the DB script."},{"line_number":19,"context_line":"    if [[ ! -d ${TARGET_RELEASE_DIR}/placement ]]; then"},{"line_number":20,"context_line":"        git_clone ${GIT_BASE}/openstack/placement.git \\"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_012369bc","line":17,"range":{"start_line":16,"start_character":34,"end_line":17,"end_character":29},"in_reply_to":"3f79a3b5_d0c21d54","updated":"2018-10-16 14:40:49.000000000","message":"Yes d-g/zuul infra handles cloning the repo for us, hence the dependencies on the change. This grenade script is likely going to be a template for deployment tools doing upgrades, so it\u0027s probably worth leaving the conditional and comments in here as a sort of guide.","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8fce6bb20b7ed9d2e6960177c69fcc9bae1c77a3","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    local placement_conf\u003d${placement_conf_dir}/placement.conf"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    # NOTE(mriedem): iniset will create the config file if it does not exist"},{"line_number":60,"context_line":"    # NOTE(cdent): new placement uses _only_ the \u0027placement_database\u0027 group"},{"line_number":61,"context_line":"    # for explicitness."},{"line_number":62,"context_line":"    iniset ${placement_conf} placement_database connection `database_connection_url placement`"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    # Configure logging options."}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_6d422810","line":61,"range":{"start_line":60,"start_character":4,"end_line":61,"end_character":23},"updated":"2018-10-05 13:39:43.000000000","message":"Did this change recently? Maybe not. Seems like long-term we\u0027d want to drop the [placement_database] group since we already have [database]/connection from oslo.db, I could see that be confusing for new people deploying placement for the first time.","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"28a57ba2db965218526fa26641d6dfa8da1b9788","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    local placement_conf\u003d${placement_conf_dir}/placement.conf"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    # NOTE(mriedem): iniset will create the config file if it does not exist"},{"line_number":60,"context_line":"    # NOTE(cdent): new placement uses _only_ the \u0027placement_database\u0027 group"},{"line_number":61,"context_line":"    # for explicitness."},{"line_number":62,"context_line":"    iniset ${placement_conf} placement_database connection `database_connection_url placement`"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    # Configure logging options."}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_6d9a2861","line":61,"range":{"start_line":60,"start_character":4,"end_line":61,"end_character":23},"in_reply_to":"3f79a3b5_6d422810","updated":"2018-10-05 13:49:23.000000000","message":"It\u0027s always been the case, since extraction, because it allowed people who were already palcement_database to just copy that chunk if they wanted.\n\nThere\u0027s been a few different discussions about it, and it\u0027s mostly landed on: let\u0027s keep this, because what if we have other databases someday, or want to reuse the same configuration file for multiple services, this allows for it.\n\nAnd it is explicit.","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b1945006a66ab166d6adaf6a8bb7d27cd3dd39f7","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    sudo install -d -o $STACK_USER /var/cache/placement"},{"line_number":69,"context_line":"    configure_auth_token_middleware ${placement_conf} placement /var/cache/placement"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    # TODO(mriedem): What other stuff do we need to copy out of the nova.conf"},{"line_number":72,"context_line":"    # [placement] options and put into placement.conf?"},{"line_number":73,"context_line":"    # randomize_allocation_candidates?"},{"line_number":74,"context_line":"    # incomplete_consumer_project_id? incomplete_consumer_user_id?"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_f092b954","line":71,"range":{"start_line":71,"start_character":21,"end_line":71,"end_character":56},"updated":"2018-10-16 12:30:04.000000000","message":"I think deployers will copy the [placement] section if we are not instructing them otherwise. So to simulate that behavior I would copy [placement] section here as well.","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4206f1d53a1fc16a31f8eef074de9d331243c5e3","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    sudo install -d -o $STACK_USER /var/cache/placement"},{"line_number":69,"context_line":"    configure_auth_token_middleware ${placement_conf} placement /var/cache/placement"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    # TODO(mriedem): What other stuff do we need to copy out of the nova.conf"},{"line_number":72,"context_line":"    # [placement] options and put into placement.conf?"},{"line_number":73,"context_line":"    # randomize_allocation_candidates?"},{"line_number":74,"context_line":"    # incomplete_consumer_project_id? incomplete_consumer_user_id?"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_7c7a0276","line":71,"range":{"start_line":71,"start_character":21,"end_line":71,"end_character":56},"in_reply_to":"3f79a3b5_1c398ed6","updated":"2018-10-16 14:42:14.000000000","message":"Also, we\u0027ve said a few times with this upgrade script that we don\u0027t want to simply point placement at nova.conf so blindly copying things is counter to what we\u0027re trying to do.","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"571401753331536d842c45e5bdd052b4bd11953a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    sudo install -d -o $STACK_USER /var/cache/placement"},{"line_number":69,"context_line":"    configure_auth_token_middleware ${placement_conf} placement /var/cache/placement"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    # TODO(mriedem): What other stuff do we need to copy out of the nova.conf"},{"line_number":72,"context_line":"    # [placement] options and put into placement.conf?"},{"line_number":73,"context_line":"    # randomize_allocation_candidates?"},{"line_number":74,"context_line":"    # incomplete_consumer_project_id? incomplete_consumer_user_id?"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_7d89f66d","line":71,"range":{"start_line":71,"start_character":21,"end_line":71,"end_character":56},"in_reply_to":"3f79a3b5_5dfe0fb6","updated":"2018-10-24 13:19:10.000000000","message":"Done","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6f7037d1397df692c70741c997bdfd9b8d92283e","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    sudo install -d -o $STACK_USER /var/cache/placement"},{"line_number":69,"context_line":"    configure_auth_token_middleware ${placement_conf} placement /var/cache/placement"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    # TODO(mriedem): What other stuff do we need to copy out of the nova.conf"},{"line_number":72,"context_line":"    # [placement] options and put into placement.conf?"},{"line_number":73,"context_line":"    # randomize_allocation_candidates?"},{"line_number":74,"context_line":"    # incomplete_consumer_project_id? incomplete_consumer_user_id?"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_5dfe0fb6","line":71,"range":{"start_line":71,"start_character":21,"end_line":71,"end_character":56},"in_reply_to":"3f79a3b5_7c7a0276","updated":"2018-10-17 07:38:18.000000000","message":"I think I was negligent in my first comment. Based on your response you have a pretty good plan what config needs to be moved. I did cross-checked what placement defines in [1] as config and it matches your plan. \n* randomize_allocation_candidates -\u003e needs  to be moved\n* policy_file -\u003e handled separately below at L83\n* incomplete_consumer_project_id -\u003e needs to be moved\n* incomplete_consumer_user_id -\u003e needs to be moved\n* log_options -\u003e I guess it is handled above at L65\n\nThere is nothing else in [1].\n\nhttps://github.com/openstack/nova/blob/master/nova/conf/placement.py","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"36da873e5545bb82faba0aa3135028955b79e640","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    sudo install -d -o $STACK_USER /var/cache/placement"},{"line_number":69,"context_line":"    configure_auth_token_middleware ${placement_conf} placement /var/cache/placement"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    # TODO(mriedem): What other stuff do we need to copy out of the nova.conf"},{"line_number":72,"context_line":"    # [placement] options and put into placement.conf?"},{"line_number":73,"context_line":"    # randomize_allocation_candidates?"},{"line_number":74,"context_line":"    # incomplete_consumer_project_id? incomplete_consumer_user_id?"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_1c398ed6","line":71,"range":{"start_line":71,"start_character":21,"end_line":71,"end_character":56},"in_reply_to":"3f79a3b5_f092b954","updated":"2018-10-16 14:40:49.000000000","message":"The [placement] section of nova.conf has keystone auth credentials for nova, as a client, to talk to placement. We don\u0027t need that in placement.conf since the service doesn\u0027t make REST API calls to itself. The question was more about what server-side placement specific config we needed to copy out of nova.conf into placement.conf, and I think at this point it\u0027s just the two listed here.\n\nhttps://docs.openstack.org/nova/latest/configuration/config.html#placement\n\nI guess we also have this option:\n\nhttps://docs.openstack.org/nova/latest/configuration/config.html#DEFAULT.log_options","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8fce6bb20b7ed9d2e6960177c69fcc9bae1c77a3","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    # lib/placement because we\u0027re in a dependency catch-22 with devstack"},{"line_number":90,"context_line":"    # changes. When both sides have merged we can replace these with globals."},{"line_number":91,"context_line":"    # PLACEMENT_BIN_DIR is okay because it is the same whether it comes from"},{"line_number":92,"context_line":"    # old or new devstack code, as long as we are not in a virtualenv."},{"line_number":93,"context_line":"    # PLACEMENT_UWSGI_CONF is used as a global so that when start_placement"},{"line_number":94,"context_line":"    # is called later, it has the right value."},{"line_number":95,"context_line":"    local placement_uwsgi\u003d${PLACEMENT_BIN_DIR}/placement-api"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_cd5a5cf4","line":92,"range":{"start_line":92,"start_character":32,"end_line":92,"end_character":69},"updated":"2018-10-05 13:39:43.000000000","message":"There is a variable in devstack to tell us if we\u0027re in that scenario so we could make it conditional, but I don\u0027t know that devstack using venvs for the services is tested anywhere - so probably doesn\u0027t work anyway.","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"28a57ba2db965218526fa26641d6dfa8da1b9788","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    # lib/placement because we\u0027re in a dependency catch-22 with devstack"},{"line_number":90,"context_line":"    # changes. When both sides have merged we can replace these with globals."},{"line_number":91,"context_line":"    # PLACEMENT_BIN_DIR is okay because it is the same whether it comes from"},{"line_number":92,"context_line":"    # old or new devstack code, as long as we are not in a virtualenv."},{"line_number":93,"context_line":"    # PLACEMENT_UWSGI_CONF is used as a global so that when start_placement"},{"line_number":94,"context_line":"    # is called later, it has the right value."},{"line_number":95,"context_line":"    local placement_uwsgi\u003d${PLACEMENT_BIN_DIR}/placement-api"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_ed895825","line":92,"range":{"start_line":92,"start_character":32,"end_line":92,"end_character":69},"in_reply_to":"3f79a3b5_cd5a5cf4","updated":"2018-10-05 13:49:23.000000000","message":"Yeah I figured that in grenade, at least, we weren\u0027t going to see that.","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"8fce6bb20b7ed9d2e6960177c69fcc9bae1c77a3","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    # PLACEMENT_UWSGI_CONF is used as a global so that when start_placement"},{"line_number":94,"context_line":"    # is called later, it has the right value."},{"line_number":95,"context_line":"    local placement_uwsgi\u003d${PLACEMENT_BIN_DIR}/placement-api"},{"line_number":96,"context_line":"    PLACEMENT_UWSGI_CONF\u003d${placement_conf_dir}/placement-uwsgi.ini"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    disable_apache_site nova-placement-api"},{"line_number":99,"context_line":"    # This will enable_apache_site placement-api. The entry in the service"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_ed5f18e2","line":96,"range":{"start_line":96,"start_character":4,"end_line":96,"end_character":24},"updated":"2018-10-05 13:39:43.000000000","message":"nit: make this a local variable (lower case too)","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"28a57ba2db965218526fa26641d6dfa8da1b9788","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    # PLACEMENT_UWSGI_CONF is used as a global so that when start_placement"},{"line_number":94,"context_line":"    # is called later, it has the right value."},{"line_number":95,"context_line":"    local placement_uwsgi\u003d${PLACEMENT_BIN_DIR}/placement-api"},{"line_number":96,"context_line":"    PLACEMENT_UWSGI_CONF\u003d${placement_conf_dir}/placement-uwsgi.ini"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    disable_apache_site nova-placement-api"},{"line_number":99,"context_line":"    # This will enable_apache_site placement-api. The entry in the service"}],"source_content_type":"application/octet-stream","patch_set":19,"id":"3f79a3b5_cd849c11","line":96,"range":{"start_line":96,"start_character":4,"end_line":96,"end_character":24},"in_reply_to":"3f79a3b5_ed5f18e2","updated":"2018-10-05 13:49:23.000000000","message":"see line 93","commit_id":"191f78ea9c5de2404607c5397f2799ed116476c2"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d770094eb893d1fbeefeaf1b8439b83df764d933","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    # Copy the placement-related table data from the nova_api database"},{"line_number":50,"context_line":"    # into the placement database."},{"line_number":51,"context_line":"    ${db_script} --migrate ${rc_file}"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    # Write out the contents of placement.conf."},{"line_number":54,"context_line":"    local placement_conf_dir\u003d/etc/placement"},{"line_number":55,"context_line":"    sudo install -d -o ${STACK_USER} ${placement_conf_dir}"}],"source_content_type":"application/octet-stream","patch_set":21,"id":"3f79a3b5_e8a8d421","line":52,"updated":"2018-11-07 15:17:04.000000000","message":"I wonder if it might make sense to nuke all the placement tables in nova_api just to make sure we\u0027re not restarting with the old data and not noticing? It\u0027s clearly working properly now, but just to catch a regression later or something. I guess once we have a cycle without nova-placement ever running in devstack we\u0027d have empty tables there anyway.","commit_id":"f2808c6277dd3d2f14ede87ae422ced12465a88c"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d770094eb893d1fbeefeaf1b8439b83df764d933","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    # This will enable_apache_site placement-api. The entry in the service"},{"line_number":103,"context_line":"    # catalog remains the same."},{"line_number":104,"context_line":"    write_uwsgi_config \"${PLACEMENT_UWSGI_CONF}\" \"${placement_uwsgi}\" \"/placement\""},{"line_number":105,"context_line":"    # Grenade itself will ensure that placement is restarted, and when it does"},{"line_number":106,"context_line":"    # that, a new systemd unit file, pointing to the right wsgi app, is created."},{"line_number":107,"context_line":"}"}],"source_content_type":"application/octet-stream","patch_set":21,"id":"3f79a3b5_031f31b8","line":106,"range":{"start_line":105,"start_character":4,"end_line":106,"end_character":80},"updated":"2018-11-07 15:17:04.000000000","message":"Is this right? Does grenade itself actually start services? I thought that new devstack would do that. Also, I\u0027m confused about why the new placement service is being started during this phase, and why old nova-placement doesn\u0027t replace it when we run the new devstack. Because (as we identified on IRC) the new devstack runs with new placement for the remainder of the job. My concern there is that all grenade jobs will now run with new placement for the new phase, but there\u0027s currently no way to just get a running devstack on master with new placement in order to test and debug.","commit_id":"f2808c6277dd3d2f14ede87ae422ced12465a88c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5e4ee276aacf2f2b5d936f773e727fae4df7736e","unresolved":false,"context_lines":[{"line_number":102,"context_line":"    # This will enable_apache_site placement-api. The entry in the service"},{"line_number":103,"context_line":"    # catalog remains the same."},{"line_number":104,"context_line":"    write_uwsgi_config \"${PLACEMENT_UWSGI_CONF}\" \"${placement_uwsgi}\" \"/placement\""},{"line_number":105,"context_line":"    # Grenade itself will ensure that placement is restarted, and when it does"},{"line_number":106,"context_line":"    # that, a new systemd unit file, pointing to the right wsgi app, is created."},{"line_number":107,"context_line":"}"}],"source_content_type":"application/octet-stream","patch_set":21,"id":"3f79a3b5_7ed1da55","line":106,"range":{"start_line":105,"start_character":4,"end_line":106,"end_character":80},"in_reply_to":"3f79a3b5_031f31b8","updated":"2018-11-07 15:37:54.000000000","message":"\u003e Is this right? Does grenade itself actually start services?\n\nYeah: https://github.com/openstack-dev/grenade/blob/master/projects/60_nova/upgrade.sh#L91\n\n\u003e and why old nova-placement doesn\u0027t replace it when we run the new devstack\n\nAs identified on IRC, I believe this is running after new devstack but before starting services:\n\nhttps://github.com/openstack-dev/grenade/blob/master/projects/60_nova/upgrade.sh#L68\n\nIf we wanted to run this before devstack on the new side, I think it has to be a within-rocky script, but that\u0027s weird.\n\nTo deal with this, I\u0027ve just added a check for the PLACEMENT_REPO variable in the upgrade script, which is added in https://review.openstack.org/#/c/600162/ so that we\u0027ll noop and continue to use placement-from-nova in grenade jobs until the devstack change lands, and it will allow that devstack change to pass grenade with extracted placement.","commit_id":"f2808c6277dd3d2f14ede87ae422ced12465a88c"}]}
