)]}'
{"novaclient/v1_1/coverage_ext.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"4b405e85b03dbf3152d43258442759d7ff073e46","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def start(self, combine\u003dFalse, **kwargs):"},{"line_number":31,"context_line":"        body \u003d {\u0027start\u0027: {}}"},{"line_number":32,"context_line":"        if combine:"},{"line_number":33,"context_line":"            body[\u0027start\u0027] \u003d {\u0027combine\u0027: True, }"},{"line_number":34,"context_line":"        self.run_hooks(\u0027modify_body_for_action\u0027, body)"},{"line_number":35,"context_line":"        url \u003d \u0027/os-coverage/action\u0027"},{"line_number":36,"context_line":"        return self.api.client.post(url, body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F91I%3D","line":33,"updated":"2012-12-18 17:07:27.000000000","message":"femtonit: I\u0027d eliminate the \", \" at the end of this dict literal.","commit_id":"3a358e5a596ac5da264d8d93fc65b42cd43de426"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"10f7f472d5c5b30ed6ffedf8310ce19e4d7eb59f","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def start(self, combine\u003dFalse, **kwargs):"},{"line_number":31,"context_line":"        body \u003d {\u0027start\u0027: {}}"},{"line_number":32,"context_line":"        if combine:"},{"line_number":33,"context_line":"            body[\u0027start\u0027] \u003d {\u0027combine\u0027: True, }"},{"line_number":34,"context_line":"        self.run_hooks(\u0027modify_body_for_action\u0027, body)"},{"line_number":35,"context_line":"        url \u003d \u0027/os-coverage/action\u0027"},{"line_number":36,"context_line":"        return self.api.client.post(url, body\u003dbody)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F9ok%3D","line":33,"in_reply_to":"AAAAM3%2F%2F91I%3D","updated":"2012-12-18 19:38:09.000000000","message":"Done","commit_id":"3a358e5a596ac5da264d8d93fc65b42cd43de426"}],"novaclient/v1_1/shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"4b405e85b03dbf3152d43258442759d7ff073e46","unresolved":false,"context_lines":[{"line_number":2238,"context_line":"@utils.arg(\u0027--filename\u0027, metavar\u003d\u0027\u003cfilename\u003e\u0027, help\u003d\u0027report filename\u0027)"},{"line_number":2239,"context_line":"@utils.arg(\u0027--action\u0027, metavar\u003d\u0027\u003caction\u003e\u0027, dest\u003d\u0027action\u0027,"},{"line_number":2240,"context_line":"           choices\u003d[\u0027start\u0027, \u0027stop\u0027, \u0027report\u0027],"},{"line_number":2241,"context_line":"           help\u003d\u0027A coverage action: start, stop, or report.\u0027)"},{"line_number":2242,"context_line":"def do_coverage_action(cs, args):"},{"line_number":2243,"context_line":"    \"\"\"Perform a coverage action\"\"\""},{"line_number":2244,"context_line":"    if args.action \u003d\u003d \u0027start\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F90w%3D","line":2241,"updated":"2012-12-18 17:07:27.000000000","message":"Hmmm…I\u0027d rather see three commands added, i.e., coverage-start, coverage-stop, and coverage-report (with a mandatory filename argument).","commit_id":"3a358e5a596ac5da264d8d93fc65b42cd43de426"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"10f7f472d5c5b30ed6ffedf8310ce19e4d7eb59f","unresolved":false,"context_lines":[{"line_number":2238,"context_line":"@utils.arg(\u0027--filename\u0027, metavar\u003d\u0027\u003cfilename\u003e\u0027, help\u003d\u0027report filename\u0027)"},{"line_number":2239,"context_line":"@utils.arg(\u0027--action\u0027, metavar\u003d\u0027\u003caction\u003e\u0027, dest\u003d\u0027action\u0027,"},{"line_number":2240,"context_line":"           choices\u003d[\u0027start\u0027, \u0027stop\u0027, \u0027report\u0027],"},{"line_number":2241,"context_line":"           help\u003d\u0027A coverage action: start, stop, or report.\u0027)"},{"line_number":2242,"context_line":"def do_coverage_action(cs, args):"},{"line_number":2243,"context_line":"    \"\"\"Perform a coverage action\"\"\""},{"line_number":2244,"context_line":"    if args.action \u003d\u003d \u0027start\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F9o0%3D","line":2241,"in_reply_to":"AAAAM3%2F%2F90w%3D","updated":"2012-12-18 19:38:09.000000000","message":"Done","commit_id":"3a358e5a596ac5da264d8d93fc65b42cd43de426"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c22d25fb24cb6e5ccb8110fdfe8ae8c04254cb9c","unresolved":false,"context_lines":[{"line_number":2245,"context_line":"    print \"Coverage collection stopped\""},{"line_number":2246,"context_line":""},{"line_number":2247,"context_line":""},{"line_number":2248,"context_line":"@utils.arg(\u0027--filename\u0027, metavar\u003d\u0027\u003cfilename\u003e\u0027, dest\u003d\u0027filename\u0027,"},{"line_number":2249,"context_line":"           help\u003d\u0027report filename\u0027)"},{"line_number":2250,"context_line":"def do_coverage_report(cs, args):"},{"line_number":2251,"context_line":"    \"\"\"Perform a coverage action\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F9jQ%3D","line":2248,"updated":"2012-12-18 20:08:16.000000000","message":"You still have it as an optional argument, then test for it in the function.  Why not let argparse handle that for you, and do:\n\n    @utils.arg(\u0027filename\u0027, metavar\u003d\u0027\u003cfilename\u003e\u0027, dest\u003d\u0027filename\u0027,\n               help\u003d\u0027report filename\u0027)\n    def do_coverage_report(cs, args):\n        \"\"\"Retrieve the coverage report.\"\"\"\n        cov \u003d cs.coverage.report(args.filename)\n        print \"Report path: %s\" % cov[-1][\u0027path\u0027]\n\nAlso, I believe you should add docstrings to the do_coverage_start() and do_coverage_stop() functions; if I\u0027m not mistaken, the docstring is used as the help text for the command.","commit_id":"58a1a2c0ed11f6ce32dee0432a2d77ffb29aa6f2"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"be708792df46f3178196457198ef7ee334ce16dd","unresolved":false,"context_lines":[{"line_number":2245,"context_line":"    print \"Coverage collection stopped\""},{"line_number":2246,"context_line":""},{"line_number":2247,"context_line":""},{"line_number":2248,"context_line":"@utils.arg(\u0027--filename\u0027, metavar\u003d\u0027\u003cfilename\u003e\u0027, dest\u003d\u0027filename\u0027,"},{"line_number":2249,"context_line":"           help\u003d\u0027report filename\u0027)"},{"line_number":2250,"context_line":"def do_coverage_report(cs, args):"},{"line_number":2251,"context_line":"    \"\"\"Perform a coverage action\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2F9g8%3D","line":2248,"in_reply_to":"AAAAM3%2F%2F9jQ%3D","updated":"2012-12-18 20:35:43.000000000","message":"Done","commit_id":"58a1a2c0ed11f6ce32dee0432a2d77ffb29aa6f2"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"ee5e2173c909e59a128d3096cedca3c178126d0c","unresolved":false,"context_lines":[{"line_number":2247,"context_line":"    print \"Coverage collection stopped\""},{"line_number":2248,"context_line":""},{"line_number":2249,"context_line":""},{"line_number":2250,"context_line":"@utils.arg(\u0027--filename\u0027, metavar\u003d\u0027\u003cfilename\u003e\u0027, dest\u003d\u0027filename\u0027,"},{"line_number":2251,"context_line":"           help\u003d\u0027report filename\u0027)"},{"line_number":2252,"context_line":"def do_coverage_report(cs, args):"},{"line_number":2253,"context_line":"    \"\"\"Generate a coverage report\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F9bk%3D","line":2250,"updated":"2012-12-18 21:30:25.000000000","message":"You need to drop the \u0027--\u0027 from the first argument to @utils.arg, not to mention update your test.","commit_id":"7dfb195d13f5de06e5f42eb9b6218596c94ea51e"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"bd675a77d3662f7b19a977d6b9bfc7714809243e","unresolved":false,"context_lines":[{"line_number":2247,"context_line":"    print \"Coverage collection stopped\""},{"line_number":2248,"context_line":""},{"line_number":2249,"context_line":""},{"line_number":2250,"context_line":"@utils.arg(\u0027--filename\u0027, metavar\u003d\u0027\u003cfilename\u003e\u0027, dest\u003d\u0027filename\u0027,"},{"line_number":2251,"context_line":"           help\u003d\u0027report filename\u0027)"},{"line_number":2252,"context_line":"def do_coverage_report(cs, args):"},{"line_number":2253,"context_line":"    \"\"\"Generate a coverage report\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F8mQ%3D","line":2250,"in_reply_to":"AAAAM3%2F%2F9NU%3D","updated":"2012-12-19 15:00:16.000000000","message":"OK, then I\u0027ll make the change even though I think that it is a little weird looking. I\u0027ll push it out later today.\n\nFor the record, the point I was making about the path field being a string is because it is not a local path or an actual file path. It is the string which is used in the construction of the file path. The actual report files are not ever created on the client machine. (unless the client and the api-server are on the same box)\n\nThe coverage extension creates a tmpdir on the machine running the api-server. When it receives a coverage report action the path field is used as the filename in that tmpdir. So if you send \u0027report\u0027 the actual file will be something like \u0027/tmp/tmp12e/report\u0027 on the api server. Also, if multiple reports files are being used, like here, the service name is appended to filename. The return from the report action is the path on the api-server where the report files are stored.","commit_id":"7dfb195d13f5de06e5f42eb9b6218596c94ea51e"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"329a6da316bf32acb8a14d12714b0da04751b78b","unresolved":false,"context_lines":[{"line_number":2247,"context_line":"    print \"Coverage collection stopped\""},{"line_number":2248,"context_line":""},{"line_number":2249,"context_line":""},{"line_number":2250,"context_line":"@utils.arg(\u0027--filename\u0027, metavar\u003d\u0027\u003cfilename\u003e\u0027, dest\u003d\u0027filename\u0027,"},{"line_number":2251,"context_line":"           help\u003d\u0027report filename\u0027)"},{"line_number":2252,"context_line":"def do_coverage_report(cs, args):"},{"line_number":2253,"context_line":"    \"\"\"Generate a coverage report\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F9NU%3D","line":2250,"in_reply_to":"AAAAM3%2F%2F9Yo%3D","updated":"2012-12-18 23:19:03.000000000","message":"Yes, that would change it to be an unnamed argument, but it would be a required argument.  From the standpoint of someone using this command, they would be expecting:\n\n    nova coverage-report report\n\nto work and to place the result into the \u0027report\u0027 file in the current directory.  Forcing them to include an option name actually doesn\u0027t make sense to me, and is inconsistent with the rest of the CLI—mandatory arguments are specified positionally.\n\n(The \"path\" vs. \"string\" argument you attempt to raise is a red herring, IMO.)","commit_id":"7dfb195d13f5de06e5f42eb9b6218596c94ea51e"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"f520924687f8c63c27ea4db45c92fe12f0a92219","unresolved":false,"context_lines":[{"line_number":2247,"context_line":"    print \"Coverage collection stopped\""},{"line_number":2248,"context_line":""},{"line_number":2249,"context_line":""},{"line_number":2250,"context_line":"@utils.arg(\u0027--filename\u0027, metavar\u003d\u0027\u003cfilename\u003e\u0027, dest\u003d\u0027filename\u0027,"},{"line_number":2251,"context_line":"           help\u003d\u0027report filename\u0027)"},{"line_number":2252,"context_line":"def do_coverage_report(cs, args):"},{"line_number":2253,"context_line":"    \"\"\"Generate a coverage report\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2F9Yo%3D","line":2250,"in_reply_to":"AAAAM3%2F%2F9bk%3D","updated":"2012-12-18 21:59:29.000000000","message":"Wouldn\u0027t that change it to be an unnamed argument? so the behavior on the CLI would become:\n\nnova coverage-report \u0027report\u0027\n\nI don\u0027t think that is what we want, because report, in the above example, is a string not an actual file. The path field is used to tell the extension what to name the report files when it creates them. I feel that it\u0027s a little weird to not specify what a random string on the CLI is being used for.","commit_id":"7dfb195d13f5de06e5f42eb9b6218596c94ea51e"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5538d08e09b44f06b6f5cc758f131723ca6ff429","unresolved":false,"context_lines":[{"line_number":2247,"context_line":"    print \"Coverage collection stopped\""},{"line_number":2248,"context_line":""},{"line_number":2249,"context_line":""},{"line_number":2250,"context_line":"@utils.arg(\u0027filename\u0027, metavar\u003d\u0027\u003cfilename\u003e\u0027, help\u003d\u0027report filename\u0027)"},{"line_number":2251,"context_line":"def do_coverage_report(cs, args):"},{"line_number":2252,"context_line":"    \"\"\"Generate a coverage report\"\"\""},{"line_number":2253,"context_line":"    cov \u003d cs.coverage.report(args.filename)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2F8jI%3D","line":2250,"updated":"2012-12-19 16:01:30.000000000","message":"I see.  It might be helpful to have that clearly documented somewhere for testers; maybe in the function docstring?  That said, I still firmly believe it should be a mandatory argument, so thanks for making that update :)  And I\u0027m happy with the patch now, but if you want to update the docstring, feel free…","commit_id":"c59de35be22abec7351c6b8b3dbb53f79eaafe92"}]}
