)]}'
{"tempest/services/compute/admin/xml/quotas_client.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0f17419b9a7307e716c0bbb33e35a15b180a556d","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            post_body.add_attr(\u0027injected_file_content_bytes\u0027,"},{"line_number":50,"context_line":"                               injected_file_content_bytes)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        if metadata_items \u003e\u003d 0:"},{"line_number":53,"context_line":"            post_body.add_attr(\u0027metadata_items\u0027, metadata_items)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if ram \u003e\u003d 0:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FnOA%3D","line":52,"updated":"2013-01-13 19:25:37.000000000","message":"Although it is technically legal to compare None to 0, it isn\u0027t particularly recommended. Could you replace all the \u0027\u003e\u003d 0\u0027 occurrences in this file with \"is not None\"?\n\nShould just be like this:\n\n if injected_file_content_bytes is not None:\n    ...\n\nThe reason for this is partly so we are able to test things like setting cores \u003d\u003d 0 (to effectively disable an account).\n\nIf I missed the use of \u003e\u003d 0 in the JSON client, please forgive me and correct that file as well. Thanks!","commit_id":"7954d3c6952596bfb85c7069b9d238f85ce1a16e"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"ef0de8f3f3c5a001359177867c1bfda41d4d3aa9","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            post_body.add_attr(\u0027injected_file_content_bytes\u0027,"},{"line_number":50,"context_line":"                               injected_file_content_bytes)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        if metadata_items \u003e\u003d 0:"},{"line_number":53,"context_line":"            post_body.add_attr(\u0027metadata_items\u0027, metadata_items)"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        if ram \u003e\u003d 0:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FjfM%3D","line":52,"in_reply_to":"AAAAM3%2F%2FnOA%3D","updated":"2013-01-16 06:07:00.000000000","message":"Done. Did also for JSON client.","commit_id":"7954d3c6952596bfb85c7069b9d238f85ce1a16e"}],"tempest/services/compute/xml/quotas_client.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"c37e2935477b50612216d6c2aeafec6e0e1bd5e0","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                v \u003d int(v)"},{"line_number":41,"context_line":"            except ValueError:"},{"line_number":42,"context_line":"                try:"},{"line_number":43,"context_line":"                    v \u003d float(v)"},{"line_number":44,"context_line":"                except ValueError:"},{"line_number":45,"context_line":"                    pass"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FpMA%3D","line":43,"updated":"2013-01-11 10:38:17.000000000","message":"Which quota is float now ?","commit_id":"07c96f88bb697dff7150e567583d7a73255f62c7"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"7e932266a8debc18d1f7d8f504ec38c3ac126117","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                v \u003d int(v)"},{"line_number":41,"context_line":"            except ValueError:"},{"line_number":42,"context_line":"                try:"},{"line_number":43,"context_line":"                    v \u003d float(v)"},{"line_number":44,"context_line":"                except ValueError:"},{"line_number":45,"context_line":"                    pass"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FpH8%3D","line":43,"in_reply_to":"AAAAM3%2F%2FpMA%3D","updated":"2013-01-11 12:36:21.000000000","message":"Done","commit_id":"07c96f88bb697dff7150e567583d7a73255f62c7"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"3e8411aeafd0075eed7aa59804387e34facf9689","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        for k, v in q.items():"},{"line_number":39,"context_line":"            try:"},{"line_number":40,"context_line":"                v \u003d int(v)"},{"line_number":41,"context_line":"            except ValueError:"},{"line_number":42,"context_line":"                pass"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"            quota[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FpGs%3D","line":41,"updated":"2013-01-11 12:53:25.000000000","message":"Are you sure you want to pass on ValueError ?","commit_id":"7954d3c6952596bfb85c7069b9d238f85ce1a16e"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"ef0de8f3f3c5a001359177867c1bfda41d4d3aa9","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        for k, v in q.items():"},{"line_number":39,"context_line":"            try:"},{"line_number":40,"context_line":"                v \u003d int(v)"},{"line_number":41,"context_line":"            except ValueError:"},{"line_number":42,"context_line":"                pass"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"            quota[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fjf8%3D","line":41,"in_reply_to":"AAAAM3%2F%2FnN4%3D","updated":"2013-01-16 06:07:00.000000000","message":"Consider the following quota list:\n\n\"{\u0027injected_file_content_bytes\u0027: \u002710240\u0027, \u0027metadata_items\u0027: \u0027128\u0027, \u0027ram\u0027: \u002751200\u0027, \u0027floating_ips\u0027: \u002710\u0027, \u0027key_pairs\u0027: \u0027100\u0027, \u0027id\u0027: \u00275dfc65fb9e9443b9816705f8a4a2b06a\u0027, \u0027instances\u0027: \u002710\u0027, \u0027security_group_rules\u0027: \u002720\u0027, \u0027injected_files\u0027: \u00275\u0027, \u0027cores\u0027: \u002720\u0027, \u0027injected_file_path_bytes\u0027: \u0027255\u0027, \u0027security_groups\u0027: \u002710\u0027}\"\n\nwhere the value of key \u0027id\u0027 cannot be converted into an *integer*. This id is the tenant_id of which the quota is being listed. Hence we encounter **ValueError** while iterating for value\u003d\u00275dfc65fb9e9443b9816705f8a4a2b06a\u0027. But raising an exception for this would only stop test case execution for no reason. Request you to suggest a way to handle this VauleError while key \u003d \u0027id\u0027.","commit_id":"7954d3c6952596bfb85c7069b9d238f85ce1a16e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0f17419b9a7307e716c0bbb33e35a15b180a556d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        for k, v in q.items():"},{"line_number":39,"context_line":"            try:"},{"line_number":40,"context_line":"                v \u003d int(v)"},{"line_number":41,"context_line":"            except ValueError:"},{"line_number":42,"context_line":"                pass"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"            quota[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FnN4%3D","line":41,"in_reply_to":"AAAAM3%2F%2Fops%3D","updated":"2013-01-13 19:25:37.000000000","message":"Ravi, I agree with Attila that we should not be pass\u0027ing on ValueError. We definitely want to catch these errors. For example, if the API contract is that every quota value is an integer, and the server passes \"one\" back in the XML, we\u0027d want to know about that! :)","commit_id":"7954d3c6952596bfb85c7069b9d238f85ce1a16e"},{"author":{"_account_id":1795,"name":"Ravikumar Venkatesan","email":"ravikumar.venkatesan@hpe.com","username":"ravikumar-venkatesan"},"change_message_id":"54c5a8b2f7fddfebc7bd863a56185a71b088d3e8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        for k, v in q.items():"},{"line_number":39,"context_line":"            try:"},{"line_number":40,"context_line":"                v \u003d int(v)"},{"line_number":41,"context_line":"            except ValueError:"},{"line_number":42,"context_line":"                pass"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"            quota[k] \u003d v"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2Fops%3D","line":41,"in_reply_to":"AAAAM3%2F%2FpGs%3D","updated":"2013-01-11 20:17:08.000000000","message":"Hi- I think so . I feel it makes sense in that context.","commit_id":"7954d3c6952596bfb85c7069b9d238f85ce1a16e"}],"tempest/tests/compute/admin/test_quotas.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0f17419b9a7307e716c0bbb33e35a15b180a556d","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                                 \u0027cores\u0027: 20, \u0027security_groups\u0027: 10}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @classmethod"},{"line_number":58,"context_line":"    def tearDown(self, cls):"},{"line_number":59,"context_line":"        for server in cls.servers:"},{"line_number":60,"context_line":"            try:"},{"line_number":61,"context_line":"                cls.servers_client.delete_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FnN0%3D","line":58,"updated":"2013-01-13 19:25:37.000000000","message":"tearDown is not a class method. tearDownClass is the class method, and tearDown runs after each test method. Is that what you want here?","commit_id":"7954d3c6952596bfb85c7069b9d238f85ce1a16e"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"ef0de8f3f3c5a001359177867c1bfda41d4d3aa9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                                 \u0027cores\u0027: 20, \u0027security_groups\u0027: 10}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @classmethod"},{"line_number":58,"context_line":"    def tearDown(self, cls):"},{"line_number":59,"context_line":"        for server in cls.servers:"},{"line_number":60,"context_line":"            try:"},{"line_number":61,"context_line":"                cls.servers_client.delete_server(server[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FjfU%3D","line":58,"in_reply_to":"AAAAM3%2F%2FnN0%3D","updated":"2013-01-16 06:07:00.000000000","message":"This tearDown method was already present in the script before I started adding XML support. Yes Jay you are right. It need to be tearDownClass as it is enough to run once all the test methods are done. I changed this in next patch.\n\nThanks.","commit_id":"7954d3c6952596bfb85c7069b9d238f85ce1a16e"}],"tempest/tests/compute/test_quotas.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"0f17419b9a7307e716c0bbb33e35a15b180a556d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class QuotasTestBase(object):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @classmethod"},{"line_number":26,"context_line":"    def setUpClass(self, cls):"},{"line_number":27,"context_line":"        cls.client \u003d cls.quotas_client"},{"line_number":28,"context_line":"        cls.admin_client \u003d cls._get_identity_admin_client()"},{"line_number":29,"context_line":"        resp, tenants \u003d cls.admin_client.list_tenants()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FnNw%3D","line":26,"updated":"2013-01-13 19:25:37.000000000","message":"setUpClass is a class method. It\u0027s only argument is a class object reference. There is not two arguments to it.\n\nThe above line should be reverted back to setUpClass(cls)","commit_id":"7954d3c6952596bfb85c7069b9d238f85ce1a16e"},{"author":{"_account_id":2238,"name":"rajalakshmi-ganesan","email":"rajalakshmi.girish@hpe.com","username":"rajalakshmi-ganesan"},"change_message_id":"ef0de8f3f3c5a001359177867c1bfda41d4d3aa9","unresolved":false,"context_lines":[{"line_number":23,"context_line":"class QuotasTestBase(object):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @classmethod"},{"line_number":26,"context_line":"    def setUpClass(self, cls):"},{"line_number":27,"context_line":"        cls.client \u003d cls.quotas_client"},{"line_number":28,"context_line":"        cls.admin_client \u003d cls._get_identity_admin_client()"},{"line_number":29,"context_line":"        resp, tenants \u003d cls.admin_client.list_tenants()"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FjfI%3D","line":26,"in_reply_to":"AAAAM3%2F%2FnNw%3D","updated":"2013-01-16 06:07:00.000000000","message":"Done","commit_id":"7954d3c6952596bfb85c7069b9d238f85ce1a16e"}]}
