)]}'
{"ironic/nova/virt/ironic/driver.py":[{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"e4cde5402e48b2ae544e4595b155b2e7ab945891","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    cfg.StrOpt(\u0027temp_file_dir\u0027,"},{"line_number":69,"context_line":"               default\u003d\u0027/tmp\u0027,"},{"line_number":70,"context_line":"               help\u003d\u0027The folder where temporary files, such as configdrives \u0027"},{"line_number":71,"context_line":"                    \u0027will be stored.\u0027),"},{"line_number":72,"context_line":"    cfg.ListOpt(\u0027instance_type_extra_specs\u0027,"},{"line_number":73,"context_line":"                default\u003d[],"},{"line_number":74,"context_line":"                help\u003d\u0027A list of additional capabilities corresponding to \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAW3%2F%2Fg4Q%3D","line":71,"updated":"2014-04-14 03:35:50.000000000","message":"One concern here, can we use system temp folder and create new one to configure it for user, and call python stand  tempfile lib to create temp file, use \u0027with\u0027 key to hold the file during consuming it?","commit_id":"08c61ad8d606474ab0cab9b8fedccac29f5381b0"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"121df61100f0263fc4796d00a2a2ead1449b6c7e","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                         \u0027value\u0027: unicode(_get_required_value("},{"line_number":279,"context_line":"                                          eval(field[\u0027nova_object\u0027]),"},{"line_number":280,"context_line":"                                               field[\u0027object_field\u0027]))}]"},{"line_number":281,"context_line":"                print field, patch"},{"line_number":282,"context_line":"                try:"},{"line_number":283,"context_line":"                    self._retry_if_service_is_unavailable(icli.node.update,"},{"line_number":284,"context_line":"                                                          node.uuid, patch)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAW3%2F%2Fg6M%3D","line":281,"updated":"2014-04-14 03:21:09.000000000","message":"I don\u0027t think we want this print statement, right?","commit_id":"08c61ad8d606474ab0cab9b8fedccac29f5381b0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"bc363e85de6ff405564148157c88829851eafb98","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                         \u0027value\u0027: unicode(_get_required_value("},{"line_number":279,"context_line":"                                          eval(field[\u0027nova_object\u0027]),"},{"line_number":280,"context_line":"                                               field[\u0027object_field\u0027]))}]"},{"line_number":281,"context_line":"                print field, patch"},{"line_number":282,"context_line":"                try:"},{"line_number":283,"context_line":"                    self._retry_if_service_is_unavailable(icli.node.update,"},{"line_number":284,"context_line":"                                                          node.uuid, patch)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAW3%2F%2Ffcs%3D","line":281,"in_reply_to":"AAAAW3%2F%2Fg3c%3D","updated":"2014-04-14 09:08:15.000000000","message":"heh +1","commit_id":"08c61ad8d606474ab0cab9b8fedccac29f5381b0"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"e4cde5402e48b2ae544e4595b155b2e7ab945891","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                         \u0027value\u0027: unicode(_get_required_value("},{"line_number":279,"context_line":"                                          eval(field[\u0027nova_object\u0027]),"},{"line_number":280,"context_line":"                                               field[\u0027object_field\u0027]))}]"},{"line_number":281,"context_line":"                print field, patch"},{"line_number":282,"context_line":"                try:"},{"line_number":283,"context_line":"                    self._retry_if_service_is_unavailable(icli.node.update,"},{"line_number":284,"context_line":"                                                          node.uuid, patch)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAW3%2F%2Fg3c%3D","line":281,"in_reply_to":"AAAAW3%2F%2Fg6M%3D","updated":"2014-04-14 03:35:50.000000000","message":"I understand this is just for pre-code testing/debugging phase, so we can remove it.","commit_id":"08c61ad8d606474ab0cab9b8fedccac29f5381b0"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"add9399a3edde3445543e60702ed29a9db772251","unresolved":false,"context_lines":[{"line_number":734,"context_line":""},{"line_number":735,"context_line":"        with configdrive.ConfigDriveBuilder(instance_md\u003dinst_md) as cdb:"},{"line_number":736,"context_line":"            instance.get(\u0027node\u0027)"},{"line_number":737,"context_line":"            print cdb.make_drive()"},{"line_number":738,"context_line":"            tmp_file \u003d os.path.join(CONF.ironic.temp_file_dir,"},{"line_number":739,"context_line":"                                    \u0027configdrive-%s\u0027 % node.uuid)"},{"line_number":740,"context_line":"            cdb.make_drive(tmp_file)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAW3%2F%2Fa9Q%3D","line":737,"updated":"2014-04-14 17:36:38.000000000","message":"another debug here... and instance.get(\u0027node\u0027) ends up being a no-op that you shouldn\u0027t need for anything.","commit_id":"08c61ad8d606474ab0cab9b8fedccac29f5381b0"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"e4cde5402e48b2ae544e4595b155b2e7ab945891","unresolved":false,"context_lines":[{"line_number":755,"context_line":"        f_out \u003d gzip.open(gzip_tmp_file, \u0027wb\u0027)"},{"line_number":756,"context_line":"        f_out.writelines(f_in)"},{"line_number":757,"context_line":"        f_out.close()"},{"line_number":758,"context_line":"        f_in.close()"},{"line_number":759,"context_line":"        try:"},{"line_number":760,"context_line":"            os.remove(infile)"},{"line_number":761,"context_line":"        except OSError:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAW3%2F%2Fg24%3D","line":758,"updated":"2014-04-14 03:35:50.000000000","message":"it is better we catch(from L755-L758) the zip file io error and raise NovaException here also.","commit_id":"08c61ad8d606474ab0cab9b8fedccac29f5381b0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"bc363e85de6ff405564148157c88829851eafb98","unresolved":false,"context_lines":[{"line_number":755,"context_line":"        f_out \u003d gzip.open(gzip_tmp_file, \u0027wb\u0027)"},{"line_number":756,"context_line":"        f_out.writelines(f_in)"},{"line_number":757,"context_line":"        f_out.close()"},{"line_number":758,"context_line":"        f_in.close()"},{"line_number":759,"context_line":"        try:"},{"line_number":760,"context_line":"            os.remove(infile)"},{"line_number":761,"context_line":"        except OSError:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAW3%2F%2FfW0%3D","line":758,"in_reply_to":"AAAAW3%2F%2Fg24%3D","updated":"2014-04-14 09:08:15.000000000","message":"Syntax suggestion:\n\nwith open(infile, \u0027rb\u0027) as f_in:\n    gzip_tmp_file \u003d infile + \u0027.gz\u0027\n    with gzip.open(gzip_tmp_file, \u0027wb\u0027) as f_out:\n        f_out.writelines(f_in)\n\nI also agree with Haomeng about having some check around the IO error","commit_id":"08c61ad8d606474ab0cab9b8fedccac29f5381b0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"bc363e85de6ff405564148157c88829851eafb98","unresolved":false,"context_lines":[{"line_number":761,"context_line":"        except OSError:"},{"line_number":762,"context_line":"            raise exception.NovaException(_(\"Could not delete \""},{"line_number":763,"context_line":"                                            \"uncompressed configdrive \""},{"line_number":764,"context_line":"                                            \"file %s\") % infile)"},{"line_number":765,"context_line":"        return gzip_tmp_file"},{"line_number":766,"context_line":""},{"line_number":767,"context_line":"    def cleanup_configdrive(self, node_uuid):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAW3%2F%2FfWI%3D","line":764,"updated":"2014-04-14 09:08:15.000000000","message":"Same question as the cleanup_configdriver... Whether we should raise an exception and stop spawn() or should we just log a WARNING?\n\nFor this case here, I think we might just want to log a WARNING exception.","commit_id":"08c61ad8d606474ab0cab9b8fedccac29f5381b0"}]}
