)]}'
{"nova/virt/disk/vfs/localfs.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"f58d5001386b2777c2ee3314dc5591694b47083a","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        LOG.debug(_(\"Make directory path\u003d%s\"), path)"},{"line_number":104,"context_line":"        if canonpath is None:"},{"line_number":105,"context_line":"            # Be sure if you use this, the path is safe."},{"line_number":106,"context_line":"            canonpath \u003d self._canonical_path(path)"},{"line_number":107,"context_line":"        utils.execute(\u0027mkdir\u0027, \u0027-p\u0027, canonpath, run_as_root\u003dTrue)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def append_file(self, path, content):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BZ4c%3D","line":106,"updated":"2014-01-27 09:53:32.000000000","message":"This change is not required, since the code below is wrong.","commit_id":"87c25847f72f67a95bed76eee37e469bd14107d6"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f6803c67e18f2c834428a820dff9e8e0627aff52","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        LOG.debug(_(\"Make directory path\u003d%s\"), path)"},{"line_number":104,"context_line":"        if canonpath is None:"},{"line_number":105,"context_line":"            # Be sure if you use this, the path is safe."},{"line_number":106,"context_line":"            canonpath \u003d self._canonical_path(path)"},{"line_number":107,"context_line":"        utils.execute(\u0027mkdir\u0027, \u0027-p\u0027, canonpath, run_as_root\u003dTrue)"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def append_file(self, path, content):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BZzk%3D","line":106,"in_reply_to":"AAAAUH%2F%2BZ4c%3D","updated":"2014-01-27 10:05:00.000000000","message":"Done","commit_id":"87c25847f72f67a95bed76eee37e469bd14107d6"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"f58d5001386b2777c2ee3314dc5591694b47083a","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        LOG.debug(_(\"Append file path\u003d%s\"), path)"},{"line_number":111,"context_line":"        canonpath \u003d self._canonical_path(path)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        self.make_path(path, canonpath\u003dos.path.dirname(canonpath))"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        args \u003d [\"-a\", canonpath]"},{"line_number":116,"context_line":"        kwargs \u003d dict(process_input\u003dcontent, run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BZ4A%3D","line":113,"updated":"2014-01-27 09:53:32.000000000","message":"It is the responsibility of the app invoking \u0027append_file\u0027 to have created any desired directories. This allows the caller to have the option of seeing an error from append_file if the dir does not exist. So please remove this.","commit_id":"87c25847f72f67a95bed76eee37e469bd14107d6"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f6803c67e18f2c834428a820dff9e8e0627aff52","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        LOG.debug(_(\"Append file path\u003d%s\"), path)"},{"line_number":111,"context_line":"        canonpath \u003d self._canonical_path(path)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        self.make_path(path, canonpath\u003dos.path.dirname(canonpath))"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        args \u003d [\"-a\", canonpath]"},{"line_number":116,"context_line":"        kwargs \u003d dict(process_input\u003dcontent, run_as_root\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BZzg%3D","line":113,"in_reply_to":"AAAAUH%2F%2BZ4A%3D","updated":"2014-01-27 10:05:00.000000000","message":"Done","commit_id":"87c25847f72f67a95bed76eee37e469bd14107d6"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"f58d5001386b2777c2ee3314dc5591694b47083a","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        canonpath \u003d self._canonical_path(path)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        self.make_path(path, canonpath\u003dos.path.dirname(canonpath))"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        args \u003d [canonpath]"},{"line_number":127,"context_line":"        kwargs \u003d dict(process_input\u003dcontent, run_as_root\u003dTrue)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BZ34%3D","line":125,"updated":"2014-01-27 09:53:32.000000000","message":"Again, please remove this.","commit_id":"87c25847f72f67a95bed76eee37e469bd14107d6"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"f6803c67e18f2c834428a820dff9e8e0627aff52","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        canonpath \u003d self._canonical_path(path)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        self.make_path(path, canonpath\u003dos.path.dirname(canonpath))"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        args \u003d [canonpath]"},{"line_number":127,"context_line":"        kwargs \u003d dict(process_input\u003dcontent, run_as_root\u003dTrue)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BZyU%3D","line":125,"in_reply_to":"AAAAUH%2F%2BZ34%3D","updated":"2014-01-27 10:05:00.000000000","message":"I understand for append_file but can you give me some information about replace_file, We have to create the directory, no?","commit_id":"87c25847f72f67a95bed76eee37e469bd14107d6"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"9a80dba85ce342158e517716e58321084d727b63","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        canonpath \u003d self._canonical_path(path)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        self.make_path(path, canonpath\u003dos.path.dirname(canonpath))"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        args \u003d [canonpath]"},{"line_number":127,"context_line":"        kwargs \u003d dict(process_input\u003dcontent, run_as_root\u003dTrue)"},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2BZv8%3D","line":125,"in_reply_to":"AAAAUH%2F%2BZyU%3D","updated":"2014-01-27 10:12:52.000000000","message":"There should be no difference in replace_file vs append_file, except that one opens the file in append mode, the other truncate mode. In either case its is the callers job to create the directory if there is a chance that it may not already exist.","commit_id":"87c25847f72f67a95bed76eee37e469bd14107d6"}]}
