)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"2e26f09fd3d3b68dc3a1f947f16d72e95701fd99","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add user_metadata to network samples"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously \u0027user_metadata\u0027  is not included in ceilometer network samples,"},{"line_number":10,"context_line":"while it is in other samples. This causes network samples not triggering"},{"line_number":11,"context_line":"alarms heat created."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da9df570_477bd77a","line":9,"updated":"2014-09-26 04:06:37.000000000","message":"nit: two spaces not needed","commit_id":"a700578aeb56d90e8fa323fa179b6910070d7a26"},{"author":{"_account_id":13189,"name":"Hang Liu","email":"hangliu@cn.ibm.com","username":"hangliu"},"change_message_id":"caed2b94bd72b506ba9a75c6a56fce195be64841","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add user_metadata to network samples"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Previously \u0027user_metadata\u0027  is not included in ceilometer network samples,"},{"line_number":10,"context_line":"while it is in other samples. This causes network samples not triggering"},{"line_number":11,"context_line":"alarms heat created."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"baa201ad_8e50330c","line":9,"in_reply_to":"da9df570_477bd77a","updated":"2014-10-08 14:46:14.000000000","message":"I will fix it. thanks!","commit_id":"a700578aeb56d90e8fa323fa179b6910070d7a26"}],"ceilometer/tests/compute/pollsters/test_net.py":[{"author":{"_account_id":8052,"name":"Nejc Saje","email":"nejc@saje.info","username":"nsaje"},"change_message_id":"7f7f3fecc372d7398f88445e5dadefd44bd74c10","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        self.assertEqual(expected, user_metadata[\u0027autoscale_group\u0027])"},{"line_number":135,"context_line":"        self.assertEqual(2, len(user_metadata))"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def _check_get_samples(self, factory, expected):"},{"line_number":138,"context_line":"        mgr \u003d manager.AgentManager()"},{"line_number":139,"context_line":"        pollster \u003d factory()"},{"line_number":140,"context_line":"        samples \u003d list(pollster.get_samples(mgr, {}, [self.instance]))"}],"source_content_type":"text/x-python","patch_set":3,"id":"da9df570_eecbfa1b","line":137,"updated":"2014-09-24 15:00:02.000000000","message":"I think you\u0027re missing a decorator here, aren\u0027t you?\n\n @mock.patch(\u0027ceilometer.pipeline.setup_pipeline\u0027, mock.MagicMock())","commit_id":"ce974336ac82d83227b188d75df6d00f1c7f9ff7"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"2e26f09fd3d3b68dc3a1f947f16d72e95701fd99","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from ceilometer.tests.compute.pollsters import base"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FauxInstance(object):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self, **kwds):"},{"line_number":32,"context_line":"        for name, value in kwds.items():"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9df570_67ce1bb6","line":29,"updated":"2014-09-26 04:06:37.000000000","message":"-1: what does this class do? I think it is a dict....\n\nso we can shorten the whole class with:\n\n    class FauxInstance(dict):\n        def __getattr__(self, name):\n            return self[name]","commit_id":"a700578aeb56d90e8fa323fa179b6910070d7a26"},{"author":{"_account_id":13189,"name":"Hang Liu","email":"hangliu@cn.ibm.com","username":"hangliu"},"change_message_id":"caed2b94bd72b506ba9a75c6a56fce195be64841","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from ceilometer.tests.compute.pollsters import base"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FauxInstance(object):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self, **kwds):"},{"line_number":32,"context_line":"        for name, value in kwds.items():"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_fa97bd45","line":29,"in_reply_to":"da9df570_127586f9","updated":"2014-10-08 14:46:14.000000000","message":"I think getattr() support should be kept. Otherwise, if someone call  it in the future code, he must be confused if he found that would break the tests.\n\nI will fix the others, thanks for suggestions!","commit_id":"a700578aeb56d90e8fa323fa179b6910070d7a26"},{"author":{"_account_id":13189,"name":"Hang Liu","email":"hangliu@cn.ibm.com","username":"hangliu"},"change_message_id":"0163e0d309c727488dadca97a3aa3bdaad3ff7c1","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from ceilometer.tests.compute.pollsters import base"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FauxInstance(object):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self, **kwds):"},{"line_number":32,"context_line":"        for name, value in kwds.items():"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9df570_ac3e1fd8","line":29,"in_reply_to":"da9df570_67ce1bb6","updated":"2014-09-26 11:34:47.000000000","message":"Thanks for the comments!\n\n\u0027FauxInstance\u0027 is more than a dictionary, the difference is:\n\nWhen retrieving attribute by\n  getattr(intance, \"undefined_attr\", \"default_attr\")\n\n\u0027FauxInstance\u0027 returns \u0027default_attr\u0027, while\ndictionary implementation raises an exception.\n\nObviously dictionary cannot be an instance faux since it is not necessary to define all attributes in a test and the default value should be accepted without exception.","commit_id":"a700578aeb56d90e8fa323fa179b6910070d7a26"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"078f614cd5221d78dd194cb2edd4e214eca3732c","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from ceilometer.tests.compute.pollsters import base"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FauxInstance(object):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self, **kwds):"},{"line_number":32,"context_line":"        for name, value in kwds.items():"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9df570_127586f9","line":29,"in_reply_to":"da9df570_ac3e1fd8","updated":"2014-09-26 12:44:12.000000000","message":"so is there any usage of getattr(intance, \"undefined_attr\", \"default_attr\") in our source and test code?\n\nI give -1 because I test with my recommended code, and it works.\n\nIf you guys feel better with a more similar but complicated thing than a just work one, that ok, but could L39-L42 be merged to a single line?\n\n    return getattr(self, key, default)","commit_id":"a700578aeb56d90e8fa323fa179b6910070d7a26"},{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"dc9c63f348555182d51d19493f9804e46d97953b","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FauxInstance(object):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self, **kwds):"},{"line_number":32,"context_line":"        for name, value in kwds.items():"},{"line_number":33,"context_line":"            setattr(self, name, value)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_f5583558","line":31,"updated":"2014-10-02 06:51:23.000000000","message":"It is common to use **kwargs instead of kwds.","commit_id":"a700578aeb56d90e8fa323fa179b6910070d7a26"},{"author":{"_account_id":13189,"name":"Hang Liu","email":"hangliu@cn.ibm.com","username":"hangliu"},"change_message_id":"caed2b94bd72b506ba9a75c6a56fce195be64841","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class FauxInstance(object):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self, **kwds):"},{"line_number":32,"context_line":"        for name, value in kwds.items():"},{"line_number":33,"context_line":"            setattr(self, name, value)"},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_5a99a977","line":31,"in_reply_to":"baa201ad_f5583558","updated":"2014-10-08 14:46:14.000000000","message":"I will fix it, thanks for suggestions!","commit_id":"a700578aeb56d90e8fa323fa179b6910070d7a26"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"078f614cd5221d78dd194cb2edd4e214eca3732c","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        ]"},{"line_number":85,"context_line":"        self.inspector.inspect_vnics \u003d mock.Mock(return_value\u003dvnics)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        self.INSTANCE_PROPERTIES \u003d {\u0027name\u0027: \u0027display name\u0027,"},{"line_number":88,"context_line":"                                    \u0027OS-EXT-SRV-ATTR:instance_name\u0027:"},{"line_number":89,"context_line":"                                    \u0027instance-000001\u0027,"},{"line_number":90,"context_line":"                                    \u0027OS-EXT-AZ:availability_zone\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9df570_c6e5ff09","line":87,"updated":"2014-09-26 12:44:12.000000000","message":"if you put this dict in such form, I think L88,  L105, and L113 can be shorten to a single line, not break them:\n\n        self.INSTANCE_PROPERTIES \u003d {\n            \u0027name\u0027: \u0027display name\u0027,\n            \u0027OS-EXT-SRV-ATTR:instance_name\u0027: \u0027instance-000001\u0027,\n            \u0027OS-EXT-AZ:availability_zone\u0027: \u0027foo-zone\u0027,\n            \u0027reservation_id\u0027: \u0027reservation id\u0027,\n            \u0027id\u0027: \u0027instance id\u0027,\n            \u0027user_id\u0027: \u0027user id\u0027,\n            \u0027tenant_id\u0027: \u0027tenant id\u0027,\n            \u0027architecture\u0027: \u0027x86_64\u0027,\n            \u0027kernel_id\u0027: \u0027kernel id\u0027,\n            \u0027os_type\u0027: \u0027linux\u0027,\n            \u0027ramdisk_id\u0027: \u0027ramdisk id\u0027,\n            \u0027status\u0027: \u0027active\u0027,\n            \u0027ephemeral_gb\u0027: 0,\n            \u0027root_gb\u0027: 20,\n            \u0027disk_gb\u0027: 20,\n            \u0027image\u0027: {\u0027id\u0027: 1,\n                      \u0027links\u0027: [{\"rel\": \"bookmark\", \u0027href\u0027: 2}]},\n            \u0027hostId\u0027: \u00271234-5678\u0027,\n            \u0027flavor\u0027: {\u0027id\u0027: 1,\n                       \u0027disk\u0027: 20,\n                       \u0027ram\u0027: 512,\n                       \u0027vcpus\u0027: 2,\n                       \u0027ephemeral\u0027: 0},        \n            \u0027metadata\u0027: {\u0027metering.autoscale.group\u0027: \u0027X\u0027 * 512,\n                         \u0027metering.ephemeral_gb\u0027: 42}}\n\nand object attribute name usually use low case, upper case is for class scope attribute","commit_id":"a700578aeb56d90e8fa323fa179b6910070d7a26"},{"author":{"_account_id":13189,"name":"Hang Liu","email":"hangliu@cn.ibm.com","username":"hangliu"},"change_message_id":"caed2b94bd72b506ba9a75c6a56fce195be64841","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        ]"},{"line_number":85,"context_line":"        self.inspector.inspect_vnics \u003d mock.Mock(return_value\u003dvnics)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        self.INSTANCE_PROPERTIES \u003d {\u0027name\u0027: \u0027display name\u0027,"},{"line_number":88,"context_line":"                                    \u0027OS-EXT-SRV-ATTR:instance_name\u0027:"},{"line_number":89,"context_line":"                                    \u0027instance-000001\u0027,"},{"line_number":90,"context_line":"                                    \u0027OS-EXT-AZ:availability_zone\u0027:"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_1a7ac123","line":87,"in_reply_to":"da9df570_c6e5ff09","updated":"2014-10-08 14:46:14.000000000","message":"Some lines\u0027 length exceed the 80 chars, they must be broken.\nI will fix the others, thanks for suggestions!","commit_id":"a700578aeb56d90e8fa323fa179b6910070d7a26"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"2e26f09fd3d3b68dc3a1f947f16d72e95701fd99","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                                       vnic_data\u003dself.vnic0)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        md \u003d sm.resource_metadata"},{"line_number":196,"context_line":"        user_metadata \u003d md[\u0027user_metadata\u0027]"},{"line_number":197,"context_line":"        expected \u003d self.INSTANCE_PROPERTIES["},{"line_number":198,"context_line":"            \u0027metadata\u0027][\u0027metering.autoscale.group\u0027][:256]"},{"line_number":199,"context_line":"        self.assertEqual(expected, user_metadata[\u0027autoscale_group\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"da9df570_27f17302","line":196,"updated":"2014-09-26 04:06:37.000000000","message":"I think those two lines can be merged to one\n\n    user_metadata \u003d sm.resource_metadata[\u0027user_metadata\u0027]","commit_id":"a700578aeb56d90e8fa323fa179b6910070d7a26"},{"author":{"_account_id":13189,"name":"Hang Liu","email":"hangliu@cn.ibm.com","username":"hangliu"},"change_message_id":"caed2b94bd72b506ba9a75c6a56fce195be64841","unresolved":false,"context_lines":[{"line_number":193,"context_line":"                                       vnic_data\u003dself.vnic0)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        md \u003d sm.resource_metadata"},{"line_number":196,"context_line":"        user_metadata \u003d md[\u0027user_metadata\u0027]"},{"line_number":197,"context_line":"        expected \u003d self.INSTANCE_PROPERTIES["},{"line_number":198,"context_line":"            \u0027metadata\u0027][\u0027metering.autoscale.group\u0027][:256]"},{"line_number":199,"context_line":"        self.assertEqual(expected, user_metadata[\u0027autoscale_group\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"baa201ad_1aa1e193","line":196,"in_reply_to":"da9df570_27f17302","updated":"2014-10-08 14:46:14.000000000","message":"I will fix it, thanks for suggestions!","commit_id":"a700578aeb56d90e8fa323fa179b6910070d7a26"}]}
