)]}'
{"doc/source/configuration.rst":[{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"290580d5e0beb057796581ed9019291557b8068d","unresolved":false,"context_lines":[{"line_number":568,"context_line":"     :type: string"},{"line_number":569,"context_line":"     :default: None"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"     Filename of an optional script that can be called after an image has"},{"line_number":572,"context_line":"     been uploaded to a provider but before it is taken into use. This is"},{"line_number":573,"context_line":"     useful to perform last minute validation tests before an image is"},{"line_number":574,"context_line":"     really used for build nodes. The script will be called as follows:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_36ad7631","line":571,"range":{"start_line":571,"start_character":5,"end_line":571,"end_character":35},"updated":"2019-10-02 08:26:43.000000000","message":"nit: \"Path to optional script\" or just \"Optional script\"","commit_id":"a4845cd8aca0e3daa4574427e06b99bd7a4a72df"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"a1157455e67e45df6cf1109dde8e5f861af873ef","unresolved":false,"context_lines":[{"line_number":568,"context_line":"     :type: string"},{"line_number":569,"context_line":"     :default: None"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"     Filename of an optional script that can be called after an image has"},{"line_number":572,"context_line":"     been uploaded to a provider but before it is taken into use. This is"},{"line_number":573,"context_line":"     useful to perform last minute validation tests before an image is"},{"line_number":574,"context_line":"     really used for build nodes. The script will be called as follows:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_f4f1f202","line":571,"range":{"start_line":571,"start_character":5,"end_line":571,"end_character":35},"in_reply_to":"3fa7e38b_36ad7631","updated":"2019-10-04 04:39:36.000000000","message":"I like \"path to\" as well to make it clear","commit_id":"a4845cd8aca0e3daa4574427e06b99bd7a4a72df"},{"author":{"_account_id":30637,"name":"Jan Kubovy","email":"jan.kubovy@bmw.de","username":"kubovy"},"change_message_id":"290580d5e0beb057796581ed9019291557b8068d","unresolved":false,"context_lines":[{"line_number":571,"context_line":"     Filename of an optional script that can be called after an image has"},{"line_number":572,"context_line":"     been uploaded to a provider but before it is taken into use. This is"},{"line_number":573,"context_line":"     useful to perform last minute validation tests before an image is"},{"line_number":574,"context_line":"     really used for build nodes. The script will be called as follows:"},{"line_number":575,"context_line":""},{"line_number":576,"context_line":"     ``\u003cSCRIPT\u003e \u003cPROVIDER\u003e \u003cEXTERNAL_IMAGE_ID\u003e \u003cLOCAL_IMAGE_FILENAME\u003e``"},{"line_number":577,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3fa7e38b_1675dacc","line":574,"range":{"start_line":574,"start_character":34,"end_line":574,"end_character":71},"updated":"2019-10-02 08:26:43.000000000","message":"nit: Suggestion: \"The script will be called with following parameters:\"","commit_id":"a4845cd8aca0e3daa4574427e06b99bd7a4a72df"}],"nodepool/builder.py":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"9633c008f85821babea46696624cb8963bf85fa5","unresolved":false,"context_lines":[{"line_number":1090,"context_line":"                filename"},{"line_number":1091,"context_line":"            ]"},{"line_number":1092,"context_line":"            self.log.info(\u0027Running post upload hook %s\u0027, cmd)"},{"line_number":1093,"context_line":"            p \u003d subprocess.run(cmd, stdout\u003dsubprocess.PIPE,"},{"line_number":1094,"context_line":"                               stderr\u003dsubprocess.PIPE)"},{"line_number":1095,"context_line":""},{"line_number":1096,"context_line":"            if p.returncode \u003d\u003d 0:"},{"line_number":1097,"context_line":"                self.log.info("},{"line_number":1098,"context_line":"                    \u0027Post upload hook success with exit code %s\\n\u0027"},{"line_number":1099,"context_line":"                    \u0027stdout:\\n%s\\nstderr:\\n%s\u0027,"},{"line_number":1100,"context_line":"                    p.returncode, p.stdout.decode(), p.stderr.decode())"},{"line_number":1101,"context_line":"            else:"},{"line_number":1102,"context_line":"                self.log.error("},{"line_number":1103,"context_line":"                    \u0027Post upload hook failed with exit code %s\\n\u0027"},{"line_number":1104,"context_line":"                    \u0027stdout:\\n%s\\nstderr:\\n%s\u0027,"},{"line_number":1105,"context_line":"                    p.returncode, p.stdout.decode(), p.stderr.decode())"},{"line_number":1106,"context_line":"                manager.deleteImage(ext_image_name)"},{"line_number":1107,"context_line":"                data \u003d zk.ImageUpload()"},{"line_number":1108,"context_line":"                data.state \u003d zk.FAILED"},{"line_number":1109,"context_line":"                return data"},{"line_number":1110,"context_line":""},{"line_number":1111,"context_line":"        if self._statsd:"},{"line_number":1112,"context_line":"            dt \u003d int((time.time() - start_time) * 1000)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_89231d58","line":1109,"range":{"start_line":1093,"start_character":0,"end_line":1109,"end_character":27},"updated":"2019-11-22 19:25:53.000000000","message":"I\u0027d feel a lot better if all of this was wrapped in try: except: just in case subprocess.run() or manager.deleteImage() throw an exception.","commit_id":"a513e706f75cf4b4db847622647892f29e844bed"}]}
