)]}'
{"novaclient/utils.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"14e79038642249021ba47af6039f61884b070f13","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    if not val:"},{"line_number":49,"context_line":"        return False"},{"line_number":50,"context_line":"    try:"},{"line_number":51,"context_line":"        return True if int(val) else False"},{"line_number":52,"context_line":"    except ValueError:"},{"line_number":53,"context_line":"        return val.lower() \u003d\u003d \u0027true\u0027 or \\"},{"line_number":54,"context_line":"               val.lower() \u003d\u003d \u0027yes\u0027 or \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnVk%3D","line":51,"updated":"2012-08-27 14:24:55.000000000","message":"Could also use \"bool(int(val))\"","commit_id":"1566557bbda1fd814742c66ce810c98ddbd0d4bb"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"0ea509ff3bf80e543f39a86a97016f73a9338b8f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    if not val:"},{"line_number":49,"context_line":"        return False"},{"line_number":50,"context_line":"    try:"},{"line_number":51,"context_line":"        return True if int(val) else False"},{"line_number":52,"context_line":"    except ValueError:"},{"line_number":53,"context_line":"        return val.lower() \u003d\u003d \u0027true\u0027 or \\"},{"line_number":54,"context_line":"               val.lower() \u003d\u003d \u0027yes\u0027 or \\"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnU0%3D","line":51,"in_reply_to":"AAAALH%2F%2FnVk%3D","updated":"2012-08-27 14:39:54.000000000","message":"Done","commit_id":"1566557bbda1fd814742c66ce810c98ddbd0d4bb"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"14e79038642249021ba47af6039f61884b070f13","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    try:"},{"line_number":51,"context_line":"        return True if int(val) else False"},{"line_number":52,"context_line":"    except ValueError:"},{"line_number":53,"context_line":"        return val.lower() \u003d\u003d \u0027true\u0027 or \\"},{"line_number":54,"context_line":"               val.lower() \u003d\u003d \u0027yes\u0027 or \\"},{"line_number":55,"context_line":"               val.lower() \u003d\u003d \u0027y\u0027"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnVY%3D","line":53,"updated":"2012-08-27 14:24:55.000000000","message":"Could also use \"val.lower() in [\u0027true\u0027, \u0027yes\u0027, \u0027y\u0027]\"","commit_id":"1566557bbda1fd814742c66ce810c98ddbd0d4bb"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"0ea509ff3bf80e543f39a86a97016f73a9338b8f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    try:"},{"line_number":51,"context_line":"        return True if int(val) else False"},{"line_number":52,"context_line":"    except ValueError:"},{"line_number":53,"context_line":"        return val.lower() \u003d\u003d \u0027true\u0027 or \\"},{"line_number":54,"context_line":"               val.lower() \u003d\u003d \u0027yes\u0027 or \\"},{"line_number":55,"context_line":"               val.lower() \u003d\u003d \u0027y\u0027"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnUw%3D","line":53,"in_reply_to":"AAAALH%2F%2FnVY%3D","updated":"2012-08-27 14:39:54.000000000","message":"Done","commit_id":"1566557bbda1fd814742c66ce810c98ddbd0d4bb"}],"novaclient/v1_1/flavor_access.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"dca82221563d2b968ee43dfb5824cd95960c6ae1","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    resource_class \u003d FlavorAccess"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"    def list(self, **kwargs):"},{"line_number":20,"context_line":"        if kwargs[\u0027flavor\u0027]:"},{"line_number":21,"context_line":"            return self._list_by_flavor(kwargs[\u0027flavor\u0027])"},{"line_number":22,"context_line":"        elif kwargs[\u0027tenant\u0027]:"},{"line_number":23,"context_line":"            return self._list_by_tenant(kwargs[\u0027tenant\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fwlw%3D","line":20,"updated":"2012-08-14 15:09:10.000000000","message":"When user only provide \u0027--tenant\u0027, this will cause error.  Should check if kwargs has the key first.","commit_id":"23036014e22d4072f22066c750af3a2e41ea5e1d"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b97e9a0d053943fb741b8c9ccc6aa2048164f8fe","unresolved":false,"context_lines":[{"line_number":17,"context_line":"    resource_class \u003d FlavorAccess"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"    def list(self, **kwargs):"},{"line_number":20,"context_line":"        if kwargs[\u0027flavor\u0027]:"},{"line_number":21,"context_line":"            return self._list_by_flavor(kwargs[\u0027flavor\u0027])"},{"line_number":22,"context_line":"        elif kwargs[\u0027tenant\u0027]:"},{"line_number":23,"context_line":"            return self._list_by_tenant(kwargs[\u0027tenant\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FwjY%3D","line":20,"in_reply_to":"AAAALH%2F%2Fwlw%3D","updated":"2012-08-14 15:50:49.000000000","message":"Good catch!","commit_id":"23036014e22d4072f22066c750af3a2e41ea5e1d"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b2bfdcc78d51674ce36687949d1fac7c41761f75","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\"\"\""},{"line_number":2,"context_line":"Flavor access interface."},{"line_number":3,"context_line":"\"\"\""},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FoI0%3D","line":1,"updated":"2012-08-24 18:26:12.000000000","message":"This file needs a copyright/license header.","commit_id":"04ad7e77a4979746a53599c44cd79fbb94fdf8f1"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"1447156aa15e49178a8b99b402e8401eb5e56629","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\"\"\""},{"line_number":2,"context_line":"Flavor access interface."},{"line_number":3,"context_line":"\"\"\""},{"line_number":4,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fnv0%3D","line":1,"in_reply_to":"AAAALH%2F%2FoI0%3D","updated":"2012-08-25 04:54:43.000000000","message":"Done","commit_id":"04ad7e77a4979746a53599c44cd79fbb94fdf8f1"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b2bfdcc78d51674ce36687949d1fac7c41761f75","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        elif kwargs.get(\u0027tenant\u0027, None):"},{"line_number":23,"context_line":"            return self._list_by_tenant(kwargs[\u0027tenant\u0027])"},{"line_number":24,"context_line":"        else:"},{"line_number":25,"context_line":"            pass"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def _list_by_flavor(self, flavor):"},{"line_number":28,"context_line":"        return self._list(\"/flavors/%s/os-flavor-access\" % base.getid(flavor),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FoIo%3D","line":25,"updated":"2012-08-24 18:26:12.000000000","message":"I\u0027d say that you really need to either raise an exception here or return an empty list.  Personally, I\u0027d suggest that the right thing to do is split the list() method into a list_by_flavor() and list_by_tenant() method, to clear up the ambiguity, but that\u0027s a stylistic choice.","commit_id":"04ad7e77a4979746a53599c44cd79fbb94fdf8f1"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"1447156aa15e49178a8b99b402e8401eb5e56629","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        elif kwargs.get(\u0027tenant\u0027, None):"},{"line_number":23,"context_line":"            return self._list_by_tenant(kwargs[\u0027tenant\u0027])"},{"line_number":24,"context_line":"        else:"},{"line_number":25,"context_line":"            pass"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def _list_by_flavor(self, flavor):"},{"line_number":28,"context_line":"        return self._list(\"/flavors/%s/os-flavor-access\" % base.getid(flavor),"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FnvE%3D","line":25,"in_reply_to":"AAAALH%2F%2FoIo%3D","updated":"2012-08-25 04:54:43.000000000","message":"Done\n\nAlthough the top layer (shell.py) already had the parameter checking, both by myself and utils.arg decorator, I agree it should raise an exception here for safety.","commit_id":"04ad7e77a4979746a53599c44cd79fbb94fdf8f1"}],"novaclient/v1_1/shell.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"dca82221563d2b968ee43dfb5824cd95960c6ae1","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        print \u0027Unable to get all access lists. Specify --flavor or --tenant\u0027"},{"line_number":400,"context_line":"        sys.exit(1)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    access_list \u003d cs.flavor_access.list(**kwargs)"},{"line_number":403,"context_line":"    columns \u003d [\u0027Flavor_ID\u0027, \u0027Tenant_ID\u0027]"},{"line_number":404,"context_line":"    utils.print_list(access_list, columns)"},{"line_number":405,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fwlc%3D","line":402,"updated":"2012-08-14 15:09:10.000000000","message":"Since the \u0027tenant\u0027 filter is not implemented yet, here should catch the exception and provide better (human readable) error message.","commit_id":"23036014e22d4072f22066c750af3a2e41ea5e1d"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b97e9a0d053943fb741b8c9ccc6aa2048164f8fe","unresolved":false,"context_lines":[{"line_number":399,"context_line":"        print \u0027Unable to get all access lists. Specify --flavor or --tenant\u0027"},{"line_number":400,"context_line":"        sys.exit(1)"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    access_list \u003d cs.flavor_access.list(**kwargs)"},{"line_number":403,"context_line":"    columns \u003d [\u0027Flavor_ID\u0027, \u0027Tenant_ID\u0027]"},{"line_number":404,"context_line":"    utils.print_list(access_list, columns)"},{"line_number":405,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fwi0%3D","line":402,"in_reply_to":"AAAALH%2F%2Fwlc%3D","updated":"2012-08-14 15:50:49.000000000","message":"Okay, I\u0027ll do that.","commit_id":"23036014e22d4072f22066c750af3a2e41ea5e1d"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"b2bfdcc78d51674ce36687949d1fac7c41761f75","unresolved":false,"context_lines":[{"line_number":371,"context_line":"     metavar\u003d\u0027\u003cis_public\u003e\u0027,"},{"line_number":372,"context_line":"     help\u003d\"Make flavor accessible to the public (default true)\","},{"line_number":373,"context_line":"     type\u003dutils.string_to_bool,"},{"line_number":374,"context_line":"     default\u003dTrue)"},{"line_number":375,"context_line":"def do_flavor_create(cs, args):"},{"line_number":376,"context_line":"    \"\"\"Create a new flavor\"\"\""},{"line_number":377,"context_line":"    f \u003d cs.flavors.create(args.name, args.ram, args.vcpus, args.disk, args.id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FoIg%3D","line":374,"updated":"2012-08-24 18:26:12.000000000","message":"Typically, for a boolean argument, you\u0027d use a switch or pair of switches, rather than converting a string to a boolean.  I\u0027d suggest having a --not-public switch that stores False into the is_public name, while defaulting it to True.  Also note the use of dashes (\u0027-\u0027) in my suggested switch name, as opposed to the underscore you use.","commit_id":"04ad7e77a4979746a53599c44cd79fbb94fdf8f1"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"1447156aa15e49178a8b99b402e8401eb5e56629","unresolved":false,"context_lines":[{"line_number":371,"context_line":"     metavar\u003d\u0027\u003cis_public\u003e\u0027,"},{"line_number":372,"context_line":"     help\u003d\"Make flavor accessible to the public (default true)\","},{"line_number":373,"context_line":"     type\u003dutils.string_to_bool,"},{"line_number":374,"context_line":"     default\u003dTrue)"},{"line_number":375,"context_line":"def do_flavor_create(cs, args):"},{"line_number":376,"context_line":"    \"\"\"Create a new flavor\"\"\""},{"line_number":377,"context_line":"    f \u003d cs.flavors.create(args.name, args.ram, args.vcpus, args.disk, args.id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fnuk%3D","line":374,"in_reply_to":"AAAALH%2F%2FoIg%3D","updated":"2012-08-25 04:54:43.000000000","message":"The idea here is to follow the glance private image conception, is_public option at the image creation time.\n\nThat\u0027s why I think it might be a good idea to in line with it and make the command line usage intuitive across OpenStack components.","commit_id":"04ad7e77a4979746a53599c44cd79fbb94fdf8f1"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"14e79038642249021ba47af6039f61884b070f13","unresolved":false,"context_lines":[{"line_number":372,"context_line":"     metavar\u003d\u0027\u003cis_public\u003e\u0027,"},{"line_number":373,"context_line":"     help\u003d\"Make flavor accessible to the public (default true)\","},{"line_number":374,"context_line":"     type\u003dutils.bool_from_str,"},{"line_number":375,"context_line":"     default\u003dTrue)"},{"line_number":376,"context_line":"def do_flavor_create(cs, args):"},{"line_number":377,"context_line":"    \"\"\"Create a new flavor\"\"\""},{"line_number":378,"context_line":"    f \u003d cs.flavors.create(args.name, args.ram, args.vcpus, args.disk, args.id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnVM%3D","line":375,"updated":"2012-08-27 14:24:55.000000000","message":"I\u0027m going to insist that the parameter should be named \"--is-public\" rather than \"--is_public\"; there\u0027s an effort going on right now to standardize option names as using dashes rather than underscores.  I\u0027ll accept a version that provides the underscore as an alias.\n\nSee https://review.openstack.org/#/c/11821/","commit_id":"1566557bbda1fd814742c66ce810c98ddbd0d4bb"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"0ea509ff3bf80e543f39a86a97016f73a9338b8f","unresolved":false,"context_lines":[{"line_number":372,"context_line":"     metavar\u003d\u0027\u003cis_public\u003e\u0027,"},{"line_number":373,"context_line":"     help\u003d\"Make flavor accessible to the public (default true)\","},{"line_number":374,"context_line":"     type\u003dutils.bool_from_str,"},{"line_number":375,"context_line":"     default\u003dTrue)"},{"line_number":376,"context_line":"def do_flavor_create(cs, args):"},{"line_number":377,"context_line":"    \"\"\"Create a new flavor\"\"\""},{"line_number":378,"context_line":"    f \u003d cs.flavors.create(args.name, args.ram, args.vcpus, args.disk, args.id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAALH%2F%2FnU4%3D","line":375,"in_reply_to":"AAAALH%2F%2FnVM%3D","updated":"2012-08-27 14:39:54.000000000","message":"Done.\n\nSorry, I didn\u0027t aware the background. Thank you for explaining.","commit_id":"1566557bbda1fd814742c66ce810c98ddbd0d4bb"}],"tests/v1_1/test_flavors.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"dca82221563d2b968ee43dfb5824cd95960c6ae1","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        cs.assert_called(\u0027POST\u0027, \u0027/flavors\u0027, body)"},{"line_number":67,"context_line":"        self.assertTrue(isinstance(f, flavors.Flavor))"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_create_ephemeral_ispublic_defaults(self):"},{"line_number":70,"context_line":"        f \u003d cs.flavors.create(\"flavorcreate\", 512, 1, 10, 1234)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FwkM%3D","line":69,"updated":"2012-08-14 15:09:10.000000000","message":"I think it\u0027s better to leave origin test case alone and create a new one for \u0027is_public\u0027 case, or even there\u0027s no need to add new test case since above one has already got it covered.","commit_id":"23036014e22d4072f22066c750af3a2e41ea5e1d"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b97e9a0d053943fb741b8c9ccc6aa2048164f8fe","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        cs.assert_called(\u0027POST\u0027, \u0027/flavors\u0027, body)"},{"line_number":67,"context_line":"        self.assertTrue(isinstance(f, flavors.Flavor))"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def test_create_ephemeral_ispublic_defaults(self):"},{"line_number":70,"context_line":"        f \u003d cs.flavors.create(\"flavorcreate\", 512, 1, 10, 1234)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        body \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FwhU%3D","line":69,"in_reply_to":"AAAALH%2F%2FwkM%3D","updated":"2012-08-14 15:50:49.000000000","message":"This test case is slightly modified because \"os-flavor-access:is_public\" property is returned in following call. Otherwise this test case could not pass.","commit_id":"23036014e22d4072f22066c750af3a2e41ea5e1d"}],"tests/v1_1/test_shell.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"dca82221563d2b968ee43dfb5824cd95960c6ae1","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/flavors\u0027, body, pos\u003d-2)"},{"line_number":380,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/flavors/1\u0027)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def test_aggregate_list(self):"},{"line_number":383,"context_line":"        self.run_command(\u0027aggregate-list\u0027)"},{"line_number":384,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/os-aggregates\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2FwlM%3D","line":381,"updated":"2012-08-14 15:09:10.000000000","message":"Do you consider add unittest for \u0027flavor-access-list/add/remove\u0027?","commit_id":"23036014e22d4072f22066c750af3a2e41ea5e1d"},{"author":{"_account_id":2468,"name":"unicell","email":"unicell@gmail.com","username":"unicell"},"change_message_id":"b97e9a0d053943fb741b8c9ccc6aa2048164f8fe","unresolved":false,"context_lines":[{"line_number":378,"context_line":""},{"line_number":379,"context_line":"        self.assert_called(\u0027POST\u0027, \u0027/flavors\u0027, body, pos\u003d-2)"},{"line_number":380,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/flavors/1\u0027)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def test_aggregate_list(self):"},{"line_number":383,"context_line":"        self.run_command(\u0027aggregate-list\u0027)"},{"line_number":384,"context_line":"        self.assert_called(\u0027GET\u0027, \u0027/os-aggregates\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAALH%2F%2Fwdw%3D","line":381,"in_reply_to":"AAAALH%2F%2FwlM%3D","updated":"2012-08-14 15:50:49.000000000","message":"Considered, I\u0027d rather not to, because it is very hard to cover.\n\nAs you can see here, there is no test case for aggreate add/remove either.","commit_id":"23036014e22d4072f22066c750af3a2e41ea5e1d"}]}
