)]}'
{"jenkins/jobs/keystone.yaml":[{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"a91caa6e5df813b4c785075c47a744c99f8a0588","unresolved":false,"context_lines":[{"line_number":35,"context_line":"      - console-log"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"- job:"},{"line_number":38,"context_line":"    name: propose-config-updates"},{"line_number":39,"context_line":"    node: proposal"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    builders:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7ad32947_5f040e7d","line":38,"updated":"2015-04-28 07:09:14.000000000","message":"I wonder whether we should make this a template so that other projects can use it. But we can also change once other projects use it ;)","commit_id":"8e628266b1da83ecdba24ee9447b45cfb883cf84"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"a91caa6e5df813b4c785075c47a744c99f8a0588","unresolved":false,"context_lines":[{"line_number":42,"context_line":"      - revoke-sudo"},{"line_number":43,"context_line":"      - link-logs"},{"line_number":44,"context_line":"      - net-info"},{"line_number":45,"context_line":"      - gerrit-git-prep"},{"line_number":46,"context_line":"      - shell: /usr/local/jenkins/slave_scripts/propose_updated_config_file.sh openstack/keystone"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    publishers:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"7ad32947_bff56284","line":45,"updated":"2015-04-28 07:09:14.000000000","message":"Here the project is setup.","commit_id":"8e628266b1da83ecdba24ee9447b45cfb883cf84"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"55c16d639da0e9c6fde38e578afe8d2b68a99bf8","unresolved":false,"context_lines":[{"line_number":35,"context_line":"      - console-log"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"- job:"},{"line_number":38,"context_line":"    name: propose-config-updates"},{"line_number":39,"context_line":"    node: proposal"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    builders:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ba3cc151_4daf5094","line":38,"updated":"2015-07-01 08:07:07.000000000","message":"Please name it \"keystone-propose-config-updates\" since it\u0027s specific to keystone.","commit_id":"d401343476574b5ff85892987d9ad164e0fcf181"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"08405a83b3ae42c4eea4f8167789b089554b9b94","unresolved":false,"context_lines":[{"line_number":35,"context_line":"      - console-log"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"- job:"},{"line_number":38,"context_line":"    name: propose-config-updates"},{"line_number":39,"context_line":"    node: proposal"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    builders:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ba3cc151_5815963d","line":38,"in_reply_to":"ba3cc151_4daf5094","updated":"2015-07-02 05:01:51.000000000","message":"Done","commit_id":"d401343476574b5ff85892987d9ad164e0fcf181"}],"jenkins/scripts/propose_updated_config_file.sh":[{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"a91caa6e5df813b4c785075c47a744c99f8a0588","unresolved":false,"context_lines":[{"line_number":27,"context_line":"git config gitreview.username \"proposal-bot\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"PROJECT_DIR\u003d$(basename $PROJECT)"},{"line_number":30,"context_line":"rm -rf $PROJECT_DIR"},{"line_number":31,"context_line":"git clone ssh://$USERNAME@review.openstack.org:29418/$PROJECT.git"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# only run against master"}],"source_content_type":"text/x-sh","patch_set":2,"id":"7ad32947_dff81e7f","line":30,"updated":"2015-04-28 07:09:14.000000000","message":"There\u0027s no need to remove and recreate the project, just let it setup by Jenkins and be happy.","commit_id":"8e628266b1da83ecdba24ee9447b45cfb883cf84"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3c27c384b30f14fc2500e6e12dd0af0e044b7e17","unresolved":false,"context_lines":[{"line_number":27,"context_line":"git config gitreview.username \"proposal-bot\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"PROJECT_DIR\u003d$(basename $PROJECT)"},{"line_number":30,"context_line":"rm -rf $PROJECT_DIR"},{"line_number":31,"context_line":"git clone ssh://$USERNAME@review.openstack.org:29418/$PROJECT.git"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# only run against master"}],"source_content_type":"text/x-sh","patch_set":2,"id":"fa32b979_4b9a02c7","line":30,"in_reply_to":"7ad32947_dff81e7f","updated":"2015-07-01 06:21:24.000000000","message":"Done","commit_id":"8e628266b1da83ecdba24ee9447b45cfb883cf84"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"a91caa6e5df813b4c785075c47a744c99f8a0588","unresolved":false,"context_lines":[{"line_number":31,"context_line":"git clone ssh://$USERNAME@review.openstack.org:29418/$PROJECT.git"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"# only run against master"},{"line_number":34,"context_line":"BRANCH\u003d\"master\""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"change_id\u003d\"\""},{"line_number":37,"context_line":"# See if there is an open change, if so, get the change id for the"}],"source_content_type":"text/x-sh","patch_set":2,"id":"7ad32947_ff107aaa","line":34,"updated":"2015-04-28 07:09:14.000000000","message":"See how upstream_translation-update.sh handles this. I prefer that to a hardcoded version","commit_id":"8e628266b1da83ecdba24ee9447b45cfb883cf84"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"a91caa6e5df813b4c785075c47a744c99f8a0588","unresolved":false,"context_lines":[{"line_number":36,"context_line":"change_id\u003d\"\""},{"line_number":37,"context_line":"# See if there is an open change, if so, get the change id for the"},{"line_number":38,"context_line":"# existing change for use in the commit message."},{"line_number":39,"context_line":"change_info\u003d$(ssh -p 29418 $USERNAME@review.openstack.org gerrit query --current-patch-set status:open project:$PROJECT owner:$USERNAME branch:$BRANCH)"},{"line_number":40,"context_line":"previous\u003d$(echo \"$change_info\" | grep \"^  number:\" | awk \u0027{print $2}\u0027)"},{"line_number":41,"context_line":"if [ \"x${previous}\" !\u003d \"x\" ] ; then"},{"line_number":42,"context_line":"    change_id\u003d$(echo \"$change_info\" | grep \"^change\" | awk \u0027{print $2}\u0027)"}],"source_content_type":"text/x-sh","patch_set":2,"id":"7ad32947_ff875ad5","line":39,"updated":"2015-04-28 07:09:14.000000000","message":"you can use the same arguments as used in common_translation_update.sh, there\u0027s no need to do it differently.","commit_id":"8e628266b1da83ecdba24ee9447b45cfb883cf84"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"a91caa6e5df813b4c785075c47a744c99f8a0588","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    COMMIT_MSG\u003d$INITIAL_COMMIT_MSG"},{"line_number":58,"context_line":"fi"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"git checkout -B ${BRANCH} -t origin/${BRANCH}"},{"line_number":61,"context_line":"# Do error checking manually to continue with the next project"},{"line_number":62,"context_line":"# in case of failures like a broken .gitreview file."},{"line_number":63,"context_line":"set +e"}],"source_content_type":"text/x-sh","patch_set":2,"id":"7ad32947_baf57084","line":60,"updated":"2015-04-28 07:09:14.000000000","message":"No need to checkout here.","commit_id":"8e628266b1da83ecdba24ee9447b45cfb883cf84"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"a91caa6e5df813b4c785075c47a744c99f8a0588","unresolved":false,"context_lines":[{"line_number":58,"context_line":"fi"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"git checkout -B ${BRANCH} -t origin/${BRANCH}"},{"line_number":61,"context_line":"# Do error checking manually to continue with the next project"},{"line_number":62,"context_line":"# in case of failures like a broken .gitreview file."},{"line_number":63,"context_line":"set +e"},{"line_number":64,"context_line":"git review -s"}],"source_content_type":"text/x-sh","patch_set":2,"id":"7ad32947_5a2bfceb","line":61,"updated":"2015-04-28 07:09:14.000000000","message":"Which next project? You only handle one, don\u0027t you?","commit_id":"8e628266b1da83ecdba24ee9447b45cfb883cf84"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"a91caa6e5df813b4c785075c47a744c99f8a0588","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    continue"},{"line_number":71,"context_line":"fi"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"# Don\u0027t short circuit when one project fails to sync."},{"line_number":74,"context_line":"set +e"},{"line_number":75,"context_line":"tox -e sample_config"},{"line_number":76,"context_line":"RET\u003d$?"}],"source_content_type":"text/x-sh","patch_set":2,"id":"7ad32947_1a358445","line":73,"updated":"2015-04-28 07:09:14.000000000","message":"Likewise","commit_id":"8e628266b1da83ecdba24ee9447b45cfb883cf84"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"55c16d639da0e9c6fde38e578afe8d2b68a99bf8","unresolved":false,"context_lines":[{"line_number":21,"context_line":"git config user.name \"OpenStack Proposal Bot\""},{"line_number":22,"context_line":"git config user.email \"openstack-infra@lists.openstack.org\""},{"line_number":23,"context_line":"git config gitreview.username \"proposal-bot\""},{"line_number":24,"context_line":"git clone ssh://$USERNAME@review.openstack.org:29418/$PROJECT.git"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"change_id\u003d\"\""},{"line_number":27,"context_line":"# See if there is an open change, if so, get the change id for the"}],"source_content_type":"text/x-sh","patch_set":3,"id":"ba3cc151_cda9207d","line":24,"updated":"2015-07-01 08:07:07.000000000","message":"No need to clone, you have the tree checkout out already.","commit_id":"d401343476574b5ff85892987d9ad164e0fcf181"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"08405a83b3ae42c4eea4f8167789b089554b9b94","unresolved":false,"context_lines":[{"line_number":21,"context_line":"git config user.name \"OpenStack Proposal Bot\""},{"line_number":22,"context_line":"git config user.email \"openstack-infra@lists.openstack.org\""},{"line_number":23,"context_line":"git config gitreview.username \"proposal-bot\""},{"line_number":24,"context_line":"git clone ssh://$USERNAME@review.openstack.org:29418/$PROJECT.git"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"change_id\u003d\"\""},{"line_number":27,"context_line":"# See if there is an open change, if so, get the change id for the"}],"source_content_type":"text/x-sh","patch_set":3,"id":"ba3cc151_7812da58","line":24,"in_reply_to":"ba3cc151_cda9207d","updated":"2015-07-02 05:01:51.000000000","message":"Done","commit_id":"d401343476574b5ff85892987d9ad164e0fcf181"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"55c16d639da0e9c6fde38e578afe8d2b68a99bf8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"if [ \"$RET\" -ne \"0\" ] ; then"},{"line_number":55,"context_line":"    SUCCESS\u003d1"},{"line_number":56,"context_line":"    echo \"Error in generating sample config for $PROJECT\""},{"line_number":57,"context_line":"    exit"},{"line_number":58,"context_line":"fi"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"if ! git diff --stat --exit-code HEAD ; then"}],"source_content_type":"text/x-sh","patch_set":3,"id":"ba3cc151_cdd7e0eb","line":57,"updated":"2015-07-01 08:07:07.000000000","message":"exit 1 in this case so that we notice the failure easier","commit_id":"d401343476574b5ff85892987d9ad164e0fcf181"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"08405a83b3ae42c4eea4f8167789b089554b9b94","unresolved":false,"context_lines":[{"line_number":54,"context_line":"if [ \"$RET\" -ne \"0\" ] ; then"},{"line_number":55,"context_line":"    SUCCESS\u003d1"},{"line_number":56,"context_line":"    echo \"Error in generating sample config for $PROJECT\""},{"line_number":57,"context_line":"    exit"},{"line_number":58,"context_line":"fi"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"if ! git diff --stat --exit-code HEAD ; then"}],"source_content_type":"text/x-sh","patch_set":3,"id":"ba3cc151_181b8e74","line":57,"in_reply_to":"ba3cc151_cdd7e0eb","updated":"2015-07-02 05:01:51.000000000","message":"Done","commit_id":"d401343476574b5ff85892987d9ad164e0fcf181"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"55c16d639da0e9c6fde38e578afe8d2b68a99bf8","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    git commit $git_args \u003c\u003cEOF"},{"line_number":65,"context_line":"$COMMIT_MSG"},{"line_number":66,"context_line":"EOF"},{"line_number":67,"context_line":"    OUTPUT\u003d$(git review)"},{"line_number":68,"context_line":"    RET\u003d$?"},{"line_number":69,"context_line":"    [[ \"$RET\" -eq \"0\" || \"$OUTPUT\" \u003d~ \"no new changes\" || \"$OUTPUT\" \u003d~ \"no changes made\" ]]"},{"line_number":70,"context_line":"    SUCCESS\u003d$?"}],"source_content_type":"text/x-sh","patch_set":3,"id":"ba3cc151_2dff6c68","line":67,"updated":"2015-07-01 08:07:07.000000000","message":"Add a topic with -t TOPIC","commit_id":"d401343476574b5ff85892987d9ad164e0fcf181"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"93f38034721cc7c10920e2c7f61bf0923eca8e50","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    git commit $git_args \u003c\u003cEOF"},{"line_number":65,"context_line":"$COMMIT_MSG"},{"line_number":66,"context_line":"EOF"},{"line_number":67,"context_line":"    OUTPUT\u003d$(git review)"},{"line_number":68,"context_line":"    RET\u003d$?"},{"line_number":69,"context_line":"    [[ \"$RET\" -eq \"0\" || \"$OUTPUT\" \u003d~ \"no new changes\" || \"$OUTPUT\" \u003d~ \"no changes made\" ]]"},{"line_number":70,"context_line":"    SUCCESS\u003d$?"}],"source_content_type":"text/x-sh","patch_set":3,"id":"ba3cc151_7733ef14","line":67,"in_reply_to":"ba3cc151_2dff6c68","updated":"2015-07-01 13:27:36.000000000","message":"any suggestion on what the value for TOPIC should be, or just \"genconf\" or something similar?","commit_id":"d401343476574b5ff85892987d9ad164e0fcf181"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"0b152f0eb3531ee601eea01baa00e385d47aae5a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    git commit $git_args \u003c\u003cEOF"},{"line_number":65,"context_line":"$COMMIT_MSG"},{"line_number":66,"context_line":"EOF"},{"line_number":67,"context_line":"    OUTPUT\u003d$(git review)"},{"line_number":68,"context_line":"    RET\u003d$?"},{"line_number":69,"context_line":"    [[ \"$RET\" -eq \"0\" || \"$OUTPUT\" \u003d~ \"no new changes\" || \"$OUTPUT\" \u003d~ \"no changes made\" ]]"},{"line_number":70,"context_line":"    SUCCESS\u003d$?"}],"source_content_type":"text/x-sh","patch_set":3,"id":"ba3cc151_9aceda2c","line":67,"in_reply_to":"ba3cc151_7733ef14","updated":"2015-07-01 13:38:44.000000000","message":"Looking at other projects, we use:\nopenstack/requirements\nopenstack/openstack-manuals\nopenstack/requirements/constraints\n\nSo, openstack/keystone fits best (use \"openstack/$PROJECT\") or even \"openstack/$PROJECT/genconf\"","commit_id":"d401343476574b5ff85892987d9ad164e0fcf181"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"08405a83b3ae42c4eea4f8167789b089554b9b94","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    git commit $git_args \u003c\u003cEOF"},{"line_number":65,"context_line":"$COMMIT_MSG"},{"line_number":66,"context_line":"EOF"},{"line_number":67,"context_line":"    OUTPUT\u003d$(git review)"},{"line_number":68,"context_line":"    RET\u003d$?"},{"line_number":69,"context_line":"    [[ \"$RET\" -eq \"0\" || \"$OUTPUT\" \u003d~ \"no new changes\" || \"$OUTPUT\" \u003d~ \"no changes made\" ]]"},{"line_number":70,"context_line":"    SUCCESS\u003d$?"}],"source_content_type":"text/x-sh","patch_set":3,"id":"ba3cc151_981d5e64","line":67,"in_reply_to":"ba3cc151_9aceda2c","updated":"2015-07-02 05:01:51.000000000","message":"Done","commit_id":"d401343476574b5ff85892987d9ad164e0fcf181"},{"author":{"_account_id":6547,"name":"Andreas Jaeger","email":"jaegerandi@gmail.com","username":"jaegerandi"},"change_message_id":"da237fede4cc484f3ebacde06fad5ec44aa4b2b5","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"git config user.name \"OpenStack Proposal Bot\""},{"line_number":22,"context_line":"git config user.email \"openstack-infra@lists.openstack.org\""},{"line_number":23,"context_line":"git config gitreview.username \"proposal-bot\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"change_id\u003d\"\""},{"line_number":26,"context_line":"# See if there is an open change, if so, get the change id for the"}],"source_content_type":"text/x-sh","patch_set":4,"id":"ba3cc151_32846a5c","line":23,"updated":"2015-07-02 08:03:02.000000000","message":"include common.sh instead of setting this yourself and call the function in there. This will also create a branch so that this works.","commit_id":"9d5e4d01d5185ac3d71dbc5bdc1fb5dd7b1260b9"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"bdea6514bda2cfbf5ccc9634d2168a84bb12598f","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"git config user.name \"OpenStack Proposal Bot\""},{"line_number":22,"context_line":"git config user.email \"openstack-infra@lists.openstack.org\""},{"line_number":23,"context_line":"git config gitreview.username \"proposal-bot\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"change_id\u003d\"\""},{"line_number":26,"context_line":"# See if there is an open change, if so, get the change id for the"}],"source_content_type":"text/x-sh","patch_set":4,"id":"ba3cc151_ebc28552","line":23,"in_reply_to":"ba3cc151_32846a5c","updated":"2015-07-02 13:13:11.000000000","message":"good catch, done","commit_id":"9d5e4d01d5185ac3d71dbc5bdc1fb5dd7b1260b9"}]}
