)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a6ea4e0256f7e3c2ce09a8e5eec3724878fd2e27","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mehdi Abaakouk \u003cmehdi.abaakouk@enovance.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-07-19 07:52:09 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement dot in maching_metadata key for mongodb"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Before the dict maching_metadata was stored as dict in mongo."},{"line_number":10,"context_line":"But mongo doesn\u0027t allow dot in dictionnary key"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAQn%2F%2F41Y%3D","line":7,"updated":"2013-07-19 19:23:36.000000000","message":"matching?","commit_id":"53c2cf277ecfbf354b8ee9503740462e169ba8ac"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"38614d065682af54946daed85270dea0dc235d34","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Mehdi Abaakouk \u003cmehdi.abaakouk@enovance.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-07-19 07:52:09 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement dot in maching_metadata key for mongodb"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Before the dict maching_metadata was stored as dict in mongo."},{"line_number":10,"context_line":"But mongo doesn\u0027t allow dot in dictionnary key"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAQn%2F%2F2O4%3D","line":7,"in_reply_to":"AAAAQn%2F%2F41Y%3D","updated":"2013-07-22 07:35:04.000000000","message":"Done","commit_id":"53c2cf277ecfbf354b8ee9503740462e169ba8ac"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a6ea4e0256f7e3c2ce09a8e5eec3724878fd2e27","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement dot in maching_metadata key for mongodb"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Before the dict maching_metadata was stored as dict in mongo."},{"line_number":10,"context_line":"But mongo doesn\u0027t allow dot in dictionnary key"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This change converts the maching_metadata dict into a array like this:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAQn%2F%2F41Q%3D","line":9,"updated":"2013-07-19 19:23:36.000000000","message":"matching?","commit_id":"53c2cf277ecfbf354b8ee9503740462e169ba8ac"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"38614d065682af54946daed85270dea0dc235d34","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implement dot in maching_metadata key for mongodb"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Before the dict maching_metadata was stored as dict in mongo."},{"line_number":10,"context_line":"But mongo doesn\u0027t allow dot in dictionnary key"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This change converts the maching_metadata dict into a array like this:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAQn%2F%2F2O8%3D","line":9,"in_reply_to":"AAAAQn%2F%2F41Q%3D","updated":"2013-07-22 07:35:04.000000000","message":"Done","commit_id":"53c2cf277ecfbf354b8ee9503740462e169ba8ac"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a6ea4e0256f7e3c2ce09a8e5eec3724878fd2e27","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Implement dot in maching_metadata key for mongodb"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Before the dict maching_metadata was stored as dict in mongo."},{"line_number":10,"context_line":"But mongo doesn\u0027t allow dot in dictionnary key"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This change converts the maching_metadata dict into a array like this:"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAQn%2F%2F410%3D","line":10,"updated":"2013-07-19 19:23:36.000000000","message":"dictionary","commit_id":"53c2cf277ecfbf354b8ee9503740462e169ba8ac"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"38614d065682af54946daed85270dea0dc235d34","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Implement dot in maching_metadata key for mongodb"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Before the dict maching_metadata was stored as dict in mongo."},{"line_number":10,"context_line":"But mongo doesn\u0027t allow dot in dictionnary key"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This change converts the maching_metadata dict into a array like this:"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAQn%2F%2F2PA%3D","line":10,"in_reply_to":"AAAAQn%2F%2F410%3D","updated":"2013-07-22 07:35:04.000000000","message":"Done","commit_id":"53c2cf277ecfbf354b8ee9503740462e169ba8ac"}],"ceilometer/storage/impl_mongodb.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"0aa77723466506e38bcc8dc28ea26e92bed6565e","unresolved":false,"context_lines":[{"line_number":639,"context_line":"            self._decode_matching_metadata(a)"},{"line_number":640,"context_line":"            yield models.Alarm(**a)"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"    def _decode_matching_metadata(self, data):"},{"line_number":643,"context_line":"        matching_metadata \u003d data[\u0027matching_metadata\u0027]"},{"line_number":644,"context_line":"        if isinstance(matching_metadata, list):"},{"line_number":645,"context_line":"            data[\u0027matching_metadata\u0027] \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F%2BA4%3D","line":642,"updated":"2013-07-18 09:42:51.000000000","message":"staticmethod\n\nYou should just pass data[\u0027matching_metadata\u0027] as argument and return what it should be set to.","commit_id":"1688a9feb8036dec58d672a097d9dca4f8749df4"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"caadd6eecab2e3e953e59505637da7cccbba41bd","unresolved":false,"context_lines":[{"line_number":639,"context_line":"            self._decode_matching_metadata(a)"},{"line_number":640,"context_line":"            yield models.Alarm(**a)"},{"line_number":641,"context_line":""},{"line_number":642,"context_line":"    def _decode_matching_metadata(self, data):"},{"line_number":643,"context_line":"        matching_metadata \u003d data[\u0027matching_metadata\u0027]"},{"line_number":644,"context_line":"        if isinstance(matching_metadata, list):"},{"line_number":645,"context_line":"            data[\u0027matching_metadata\u0027] \u003d {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F9gQ%3D","line":642,"in_reply_to":"AAAAQn%2F%2F%2BA4%3D","updated":"2013-07-18 13:27:14.000000000","message":"Done","commit_id":"1688a9feb8036dec58d672a097d9dca4f8749df4"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"0aa77723466506e38bcc8dc28ea26e92bed6565e","unresolved":false,"context_lines":[{"line_number":646,"context_line":"            for elem in matching_metadata:"},{"line_number":647,"context_line":"                data[\u0027matching_metadata\u0027][elem[\u0027key\u0027]] \u003d elem[\u0027value\u0027]"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def _encode_matching_metadata(self, data):"},{"line_number":650,"context_line":"        matching_metadata \u003d data[\u0027matching_metadata\u0027]"},{"line_number":651,"context_line":"        data[\u0027matching_metadata\u0027] \u003d []"},{"line_number":652,"context_line":"        for k, v in matching_metadata.iteritems():"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F%2BA0%3D","line":649,"updated":"2013-07-18 09:42:51.000000000","message":"Same as above.","commit_id":"1688a9feb8036dec58d672a097d9dca4f8749df4"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"caadd6eecab2e3e953e59505637da7cccbba41bd","unresolved":false,"context_lines":[{"line_number":646,"context_line":"            for elem in matching_metadata:"},{"line_number":647,"context_line":"                data[\u0027matching_metadata\u0027][elem[\u0027key\u0027]] \u003d elem[\u0027value\u0027]"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def _encode_matching_metadata(self, data):"},{"line_number":650,"context_line":"        matching_metadata \u003d data[\u0027matching_metadata\u0027]"},{"line_number":651,"context_line":"        data[\u0027matching_metadata\u0027] \u003d []"},{"line_number":652,"context_line":"        for k, v in matching_metadata.iteritems():"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F9gM%3D","line":649,"in_reply_to":"AAAAQn%2F%2F%2BA0%3D","updated":"2013-07-18 13:27:14.000000000","message":"Done","commit_id":"1688a9feb8036dec58d672a097d9dca4f8749df4"}],"tests/storage/base.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"a6ea4e0256f7e3c2ce09a8e5eec3724878fd2e27","unresolved":false,"context_lines":[{"line_number":813,"context_line":"                               \u0027test.five\u0027, \u0027lt\u0027, 10, \u0027min\u0027,"},{"line_number":814,"context_line":"                               \u0027me\u0027, \u0027and-da-boys\u0027,"},{"line_number":815,"context_line":"                               alarm_actions\u003d[\u0027http://nowhere/alarms\u0027],"},{"line_number":816,"context_line":"                               matching_metadata\u003d"},{"line_number":817,"context_line":"                               {\u0027key2\u0027: \u0027value2\u0027,"},{"line_number":818,"context_line":"                                \u0027user_metadata.key3\u0027: \u0027value3\u0027})]"},{"line_number":819,"context_line":"        for a in alarms:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F4z0%3D","line":816,"updated":"2013-07-19 19:23:36.000000000","message":"Needs a test for when it\u0027s not a dict (as per decoding if-statement)","commit_id":"53c2cf277ecfbf354b8ee9503740462e169ba8ac"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"38614d065682af54946daed85270dea0dc235d34","unresolved":false,"context_lines":[{"line_number":813,"context_line":"                               \u0027test.five\u0027, \u0027lt\u0027, 10, \u0027min\u0027,"},{"line_number":814,"context_line":"                               \u0027me\u0027, \u0027and-da-boys\u0027,"},{"line_number":815,"context_line":"                               alarm_actions\u003d[\u0027http://nowhere/alarms\u0027],"},{"line_number":816,"context_line":"                               matching_metadata\u003d"},{"line_number":817,"context_line":"                               {\u0027key2\u0027: \u0027value2\u0027,"},{"line_number":818,"context_line":"                                \u0027user_metadata.key3\u0027: \u0027value3\u0027})]"},{"line_number":819,"context_line":"        for a in alarms:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAQn%2F%2F2QE%3D","line":816,"in_reply_to":"AAAAQn%2F%2F4z0%3D","updated":"2013-07-22 07:35:04.000000000","message":"In the model, this is always a dict, the list is a internal mongo stuff, the compatibilly test (for the if-statement) has been written in test_impl_mongodb.py","commit_id":"53c2cf277ecfbf354b8ee9503740462e169ba8ac"}],"tests/storage/test_impl_mongodb.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"57f15faa31c74819a0145fcaa1b7225a4742015f","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        old \u003d list(self.conn.get_alarms(name\u003d\u0027old-alert\u0027))[0]"},{"line_number":167,"context_line":"        self.assertEquals(old.matching_metadata, {\u0027key\u0027: \u0027value\u0027})"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"class CompatibilityTest(MongoDBEngineTestBase):"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def prepare_data(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2F13M%3D","line":169,"updated":"2013-07-22 10:19:57.000000000","message":"Why are these tests in mongodb only?","commit_id":"fc77c191801ef43f3d457b5a4775b6aeda21f1f6"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"f096c2fccf732bdc563972abff3dd0af1f88f9e5","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        old \u003d list(self.conn.get_alarms(name\u003d\u0027old-alert\u0027))[0]"},{"line_number":167,"context_line":"        self.assertEquals(old.matching_metadata, {\u0027key\u0027: \u0027value\u0027})"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"class CompatibilityTest(MongoDBEngineTestBase):"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    def prepare_data(self):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAQn%2F%2F11o%3D","line":169,"in_reply_to":"AAAAQn%2F%2F13M%3D","updated":"2013-07-22 10:33:08.000000000","message":"From the storage API point of view only dict are valid.\n\nPreviously the dict from the API was directly written to mongo, but because the key have often dot in it and mongo don\u0027t allow this, the dict is converted into a special array.\n\nI have added generic tests of matching_metadata in base.py because before matching_metadata was not tested.\n\nAnd this test test the alarm storage API in case of the mongo db have the old dict format from the previous implementation. It bypass storage api alarm creation to create a old format alarm in mongo db and test if the storage API return the correct result.","commit_id":"fc77c191801ef43f3d457b5a4775b6aeda21f1f6"}]}
