)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"5597261fb2e4d430621c68c52882c1a150849391","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2013-12-18 11:49:21 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add autoscaling notifications"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I23e4478faf58ef23b031a3b0d4087c892dc4e96f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATn%2F8rfg%3D","line":8,"updated":"2013-12-23 10:38:26.000000000","message":"Please add a description here, and reference the blueprint.","commit_id":"3f55757faff452009fc716ab92a9d6a8d215d830"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"8537207edfc3bed83cb0012a129b18de78b0f835","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2013-12-18 11:49:21 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add autoscaling notifications"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I23e4478faf58ef23b031a3b0d4087c892dc4e96f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAT3%2F%2F6IY%3D","line":8,"in_reply_to":"AAAATn%2F8rfg%3D","updated":"2014-01-06 14:10:21.000000000","message":"Done","commit_id":"3f55757faff452009fc716ab92a9d6a8d215d830"}],"heat/engine/notification.py":[{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"5597261fb2e4d430621c68c52882c1a150849391","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                     capacity\u003dNone,"},{"line_number":60,"context_line":"                     groupname\u003dNone,"},{"line_number":61,"context_line":"                     message\u003dNone,"},{"line_number":62,"context_line":"                     suffix\u003d\u0027error\u0027):"},{"line_number":63,"context_line":"    \"\"\"Send autoscaling notifications to the configured notification driver.\"\"\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    publisher_id \u003d CONF.default_publisher_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F8rfM%3D","line":62,"updated":"2013-12-23 10:38:26.000000000","message":"AFAIK only message is optional here, maybe there shoudn\u0027t be default value? Having suffix defaults to \u0027error\u0027 feels weird at least.","commit_id":"3f55757faff452009fc716ab92a9d6a8d215d830"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"8537207edfc3bed83cb0012a129b18de78b0f835","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                     capacity\u003dNone,"},{"line_number":60,"context_line":"                     groupname\u003dNone,"},{"line_number":61,"context_line":"                     message\u003dNone,"},{"line_number":62,"context_line":"                     suffix\u003d\u0027error\u0027):"},{"line_number":63,"context_line":"    \"\"\"Send autoscaling notifications to the configured notification driver.\"\"\""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    publisher_id \u003d CONF.default_publisher_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F6LE%3D","line":62,"in_reply_to":"AAAATn%2F8rfM%3D","updated":"2014-01-06 14:10:21.000000000","message":"absolutely right. \n\nfixed","commit_id":"3f55757faff452009fc716ab92a9d6a8d215d830"},{"author":{"_account_id":6794,"name":"Simon Pasquier","email":"pasquier.simon@gmail.com","username":"simon-pasquier"},"change_message_id":"d4001993420538fbcdeb2868abc0d85e891ced18","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    publisher_id \u003d CONF.default_publisher_id"},{"line_number":66,"context_line":"    if not publisher_id:"},{"line_number":67,"context_line":"        publisher_id \u003d notifier_api.publisher_id(SERVICE)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    event_type \u003d \u0027%s.%s.%s\u0027 % (SERVICE, \u0027autoscaling\u0027, suffix)"},{"line_number":70,"context_line":"    body \u003d engine_api.format_notification_body(stack)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F2s8%3D","line":67,"updated":"2014-01-07 16:33:34.000000000","message":"The 3 lines above, line 76 and line 81 are shared with the send() function. So part of the code could be factorized in a common funct.","commit_id":"26ca57cddec440d285123e4bdf97101d358fc00d"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"6f227cffeb033e2abb4524d90dcf79503d04b13e","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    publisher_id \u003d CONF.default_publisher_id"},{"line_number":66,"context_line":"    if not publisher_id:"},{"line_number":67,"context_line":"        publisher_id \u003d notifier_api.publisher_id(SERVICE)"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    event_type \u003d \u0027%s.%s.%s\u0027 % (SERVICE, \u0027autoscaling\u0027, suffix)"},{"line_number":70,"context_line":"    body \u003d engine_api.format_notification_body(stack)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F2gE%3D","line":67,"in_reply_to":"AAAAUH%2F%2F2s8%3D","updated":"2014-01-07 17:14:07.000000000","message":"Done","commit_id":"26ca57cddec440d285123e4bdf97101d358fc00d"},{"author":{"_account_id":7256,"name":"Randall Burt","email":"randall.burt@rackspace.com","username":"randall-burt"},"change_message_id":"97e84bf6dc584ab4681b39d4ff730669cc4a6664","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            engine_api.format_notification_body(stack))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def send_autoscaling(stack,"},{"line_number":69,"context_line":"                     adjustment\u003dNone,"},{"line_number":70,"context_line":"                     adjustment_type\u003dNone,"},{"line_number":71,"context_line":"                     capacity\u003dNone,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FJwQ%3D","line":68,"updated":"2014-01-16 22:54:23.000000000","message":"I know I\u0027m late to the party and don\u0027t hold up the train for it, but this seems odd that we\u0027d have resource specific notification methods inside this module. IMO, this belongs in the autoscaling resource module, not here. -1 only, though, so other core can feel free to ignore me and approve.","commit_id":"50e050c10c1adce3f2e29d45e27edfec8afb3fa3"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"589299799da8830e4b95768eaf8910c918ae6e15","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            engine_api.format_notification_body(stack))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def send_autoscaling(stack,"},{"line_number":69,"context_line":"                     adjustment\u003dNone,"},{"line_number":70,"context_line":"                     adjustment_type\u003dNone,"},{"line_number":71,"context_line":"                     capacity\u003dNone,"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUH%2F%2FHro%3D","line":68,"in_reply_to":"AAAAUH%2F%2FJwQ%3D","updated":"2014-01-17 08:56:13.000000000","message":"It\u0027s your POV :)\n\nI think it\u0027s relevant to put all notifications stuff in the same place.","commit_id":"50e050c10c1adce3f2e29d45e27edfec8afb3fa3"},{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"52e770e2f9649bdf37872b969dcc7c575e28ace0","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            engine_api.format_notification_body(stack))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def send_autoscaling(stack,"},{"line_number":69,"context_line":"                     adjustment\u003dNone,"},{"line_number":70,"context_line":"                     adjustment_type\u003dNone,"},{"line_number":71,"context_line":"                     capacity\u003dNone,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2FEuk%3D","line":68,"updated":"2014-01-17 17:34:18.000000000","message":"fwiw I also agree with Randall that this code should live in an autoscaling-related module (though the exact location may change with as-lib work).","commit_id":"9cc6c58e8a483ad9f49f674cb298251cb7ce82eb"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"084a7ddcf5856ada2b09af33fe1e51e7103a3cd1","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            engine_api.format_notification_body(stack))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"def send_autoscaling(stack,"},{"line_number":69,"context_line":"                     adjustment\u003dNone,"},{"line_number":70,"context_line":"                     adjustment_type\u003dNone,"},{"line_number":71,"context_line":"                     capacity\u003dNone,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2B%2BKs%3D","line":68,"in_reply_to":"AAAAUH%2F%2FEuk%3D","updated":"2014-01-20 08:50:13.000000000","message":"Ok,You have convinced me all two.\n\nI see : \nmove heat/engine/notification.py -\u003e heat/engine/notification/__init__.py\n\nand put autoscaling notification code here : heat/engine/notification/autoscaling.py\n\n\nIs this that fits with your vision ?","commit_id":"9cc6c58e8a483ad9f49f674cb298251cb7ce82eb"},{"author":{"_account_id":6800,"name":"Christopher Armstrong","email":"chris.armstrong@rackspace.com","username":"radix"},"change_message_id":"52e770e2f9649bdf37872b969dcc7c575e28ace0","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    level \u003d _get_default_level()"},{"line_number":85,"context_line":"    if suffix \u003d\u003d \u0027error\u0027:"},{"line_number":86,"context_line":"        level \u003d notifier_api.ERROR"},{"line_number":87,"context_line":"        body[\u0027message\u0027] \u003d message"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    _notify(stack.context, event_type, level, body)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2FEvI%3D","line":87,"updated":"2014-01-17 17:34:18.000000000","message":"This seems strange.\n\nI would expect message to default to None, and for the message to be set in the body regardless of the suffix. But maybe I\u0027m missing something about Ceilometer.","commit_id":"9cc6c58e8a483ad9f49f674cb298251cb7ce82eb"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"084a7ddcf5856ada2b09af33fe1e51e7103a3cd1","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    level \u003d _get_default_level()"},{"line_number":85,"context_line":"    if suffix \u003d\u003d \u0027error\u0027:"},{"line_number":86,"context_line":"        level \u003d notifier_api.ERROR"},{"line_number":87,"context_line":"        body[\u0027message\u0027] \u003d message"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    _notify(stack.context, event_type, level, body)"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2B%2BPY%3D","line":87,"in_reply_to":"AAAAUH%2F%2FEvI%3D","updated":"2014-01-20 08:50:13.000000000","message":"Yes, only one message for the error notification case. but ok you right, I\u0027ll rework on messages to be more consistent and easier to handle with ceilometer: have a message for each \u0027suffix\u0027","commit_id":"9cc6c58e8a483ad9f49f674cb298251cb7ce82eb"}],"heat/engine/resources/autoscaling.py":[{"author":{"_account_id":7225,"name":"Serg Melikyan","email":"smelikyan@mirantis.com","username":"smelikyan"},"change_message_id":"8a6656267686b8e843b75bb0afccd0a3c1eb41a4","unresolved":false,"context_lines":[{"line_number":626,"context_line":"            result \u003d self.resize(new_capacity)"},{"line_number":627,"context_line":"        except Exception as resize_ex:"},{"line_number":628,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":629,"context_line":"                try:"},{"line_number":630,"context_line":"                    notification.send_autoscaling("},{"line_number":631,"context_line":"                        self.stack,"},{"line_number":632,"context_line":"                        adjustment\u003dadjustment,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9C%2F0%3D","line":629,"updated":"2013-12-17 10:29:46.000000000","message":"Why this particular notification is wrapped by Try/Except?","commit_id":"a45be1a80c1dd13ed35a9172267fa60b2cadeb41"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"f5643a54d07da77fbff286dcba3827977fcad358","unresolved":false,"context_lines":[{"line_number":626,"context_line":"            result \u003d self.resize(new_capacity)"},{"line_number":627,"context_line":"        except Exception as resize_ex:"},{"line_number":628,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":629,"context_line":"                try:"},{"line_number":630,"context_line":"                    notification.send_autoscaling("},{"line_number":631,"context_line":"                        self.stack,"},{"line_number":632,"context_line":"                        adjustment\u003dadjustment,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F89tM%3D","line":629,"in_reply_to":"AAAATn%2F9C%2F0%3D","updated":"2013-12-18 10:51:56.000000000","message":"just to log exception if we couldn\u0027t send error notification and always permit the reraise of the intial exception.\n\nbtw, no need to reraise the notif exception .. I\u0027ll remove the raise notif_ex","commit_id":"a45be1a80c1dd13ed35a9172267fa60b2cadeb41"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"025f7870dd35f56e3472c0b69575296b9942d1c8","unresolved":false,"context_lines":[{"line_number":585,"context_line":"        \"\"\""},{"line_number":586,"context_line":"        Adjust the size of the scaling group if the cooldown permits."},{"line_number":587,"context_line":"        \"\"\""},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"        if self._cooldown_inprogress():"},{"line_number":590,"context_line":"            logger.info(_(\"%(name)s NOT performing scaling adjustment, \""},{"line_number":591,"context_line":"                        \"cooldown %(cooldown)s\") % {"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F2Yk%3D","line":588,"updated":"2014-01-07 17:37:53.000000000","message":"nit. get rid of this extra line.","commit_id":"ad086bf39c633d08f753154235256ca95dc0d455"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"8f072ae3988c08c1684f7f87fabc98dec994e524","unresolved":false,"context_lines":[{"line_number":585,"context_line":"        \"\"\""},{"line_number":586,"context_line":"        Adjust the size of the scaling group if the cooldown permits."},{"line_number":587,"context_line":"        \"\"\""},{"line_number":588,"context_line":""},{"line_number":589,"context_line":"        if self._cooldown_inprogress():"},{"line_number":590,"context_line":"            logger.info(_(\"%(name)s NOT performing scaling adjustment, \""},{"line_number":591,"context_line":"                        \"cooldown %(cooldown)s\") % {"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F2Qg%3D","line":588,"in_reply_to":"AAAAUH%2F%2F2Yk%3D","updated":"2014-01-07 18:47:21.000000000","message":"Done","commit_id":"ad086bf39c633d08f753154235256ca95dc0d455"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"025f7870dd35f56e3472c0b69575296b9942d1c8","unresolved":false,"context_lines":[{"line_number":639,"context_line":"                                      groupname\u003dself.FnGetRefId(),"},{"line_number":640,"context_line":"                                      suffix\u003d\u0027start\u0027)"},{"line_number":641,"context_line":"        try:"},{"line_number":642,"context_line":"            result \u003d self.resize(new_capacity)"},{"line_number":643,"context_line":"        except Exception as resize_ex:"},{"line_number":644,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":645,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F2Yc%3D","line":642,"updated":"2014-01-07 17:37:53.000000000","message":"It seems resize does not return any value. you can get rid of result here (unless I am missing something). \nIf resize really returns a value, you should assign default value to result out side of the try catch block, otherwise you would get \u0027referenced before assignment\u0027 error at line 666 in case there is any exception.","commit_id":"ad086bf39c633d08f753154235256ca95dc0d455"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"8f072ae3988c08c1684f7f87fabc98dec994e524","unresolved":false,"context_lines":[{"line_number":639,"context_line":"                                      groupname\u003dself.FnGetRefId(),"},{"line_number":640,"context_line":"                                      suffix\u003d\u0027start\u0027)"},{"line_number":641,"context_line":"        try:"},{"line_number":642,"context_line":"            result \u003d self.resize(new_capacity)"},{"line_number":643,"context_line":"        except Exception as resize_ex:"},{"line_number":644,"context_line":"            with excutils.save_and_reraise_exception():"},{"line_number":645,"context_line":"                try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F2Ro%3D","line":642,"in_reply_to":"AAAAUH%2F%2F2Yc%3D","updated":"2014-01-07 18:47:21.000000000","message":"indeed, no result returned by resize method and no more by adjust. \n\nit\u0027s the original code but\nI can fix it in this patch if you really want to :)","commit_id":"ad086bf39c633d08f753154235256ca95dc0d455"},{"author":{"_account_id":7230,"name":"Vijendar Komalla","email":"vijendar.komalla@rackspace.com","username":"vijendar"},"change_message_id":"025f7870dd35f56e3472c0b69575296b9942d1c8","unresolved":false,"context_lines":[{"line_number":652,"context_line":"                        message\u003dstr(resize_ex),"},{"line_number":653,"context_line":"                        suffix\u003d\u0027error\u0027)"},{"line_number":654,"context_line":"                except Exception:"},{"line_number":655,"context_line":"                    logger.exception(\u0027Failed sending error notification\u0027)"},{"line_number":656,"context_line":"        else:"},{"line_number":657,"context_line":"            notification.send_autoscaling(self.stack,"},{"line_number":658,"context_line":"                                          adjustment\u003dadjustment,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F2YY%3D","line":655,"updated":"2014-01-07 17:37:53.000000000","message":"Include string in _(\u0027\u0027) for translation/localization. _(\u0027\u0027Failed sending error notification\u0027.\u0027)","commit_id":"ad086bf39c633d08f753154235256ca95dc0d455"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"8f072ae3988c08c1684f7f87fabc98dec994e524","unresolved":false,"context_lines":[{"line_number":652,"context_line":"                        message\u003dstr(resize_ex),"},{"line_number":653,"context_line":"                        suffix\u003d\u0027error\u0027)"},{"line_number":654,"context_line":"                except Exception:"},{"line_number":655,"context_line":"                    logger.exception(\u0027Failed sending error notification\u0027)"},{"line_number":656,"context_line":"        else:"},{"line_number":657,"context_line":"            notification.send_autoscaling(self.stack,"},{"line_number":658,"context_line":"                                          adjustment\u003dadjustment,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F2Qw%3D","line":655,"in_reply_to":"AAAAUH%2F%2F2YY%3D","updated":"2014-01-07 18:47:21.000000000","message":"Done","commit_id":"ad086bf39c633d08f753154235256ca95dc0d455"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"639c9c236f3f5bb206fc89583dd3e3dda4da2cd1","unresolved":false,"context_lines":[{"line_number":631,"context_line":"            return"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        # send a notification before, on-error and on-success."},{"line_number":634,"context_line":"        notification.send_autoscaling(self.stack,"},{"line_number":635,"context_line":"                                      adjustment\u003dadjustment,"},{"line_number":636,"context_line":"                                      adjustment_type\u003dadjustment_type,"},{"line_number":637,"context_line":"                                      capacity\u003dcapacity,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2FCXU%3D","line":634,"updated":"2014-01-18 04:54:28.000000000","message":"A common kwargs would make these 3 calls less obtrusive.","commit_id":"9cc6c58e8a483ad9f49f674cb298251cb7ce82eb"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"084a7ddcf5856ada2b09af33fe1e51e7103a3cd1","unresolved":false,"context_lines":[{"line_number":631,"context_line":"            return"},{"line_number":632,"context_line":""},{"line_number":633,"context_line":"        # send a notification before, on-error and on-success."},{"line_number":634,"context_line":"        notification.send_autoscaling(self.stack,"},{"line_number":635,"context_line":"                                      adjustment\u003dadjustment,"},{"line_number":636,"context_line":"                                      adjustment_type\u003dadjustment_type,"},{"line_number":637,"context_line":"                                      capacity\u003dcapacity,"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAUH%2F%2B%2BQ4%3D","line":634,"in_reply_to":"AAAAUH%2F%2FCXU%3D","updated":"2014-01-20 08:50:13.000000000","message":"good point. nicer indeed","commit_id":"9cc6c58e8a483ad9f49f674cb298251cb7ce82eb"}],"heat/tests/test_autoscaling.py":[{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"5597261fb2e4d430621c68c52882c1a150849391","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                                          capacity\u003dend_capacity,"},{"line_number":223,"context_line":"                                          groupname\u003dmox.IgnoreArg(),"},{"line_number":224,"context_line":"                                          suffix\u003d\u0027end\u0027,"},{"line_number":225,"context_line":"                                          ).AndReturn(False)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def _stub_meta_expected(self, now, data, nmeta\u003d1):"},{"line_number":228,"context_line":"        # Stop time at now"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F8rfE%3D","line":225,"updated":"2013-12-23 10:38:26.000000000","message":"Those kind of conditionals feel awkward. You\u0027re only using with_error once, I suggest removing it from here and simply have the corresponding code in the error test method.","commit_id":"3f55757faff452009fc716ab92a9d6a8d215d830"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"8537207edfc3bed83cb0012a129b18de78b0f835","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                                          capacity\u003dend_capacity,"},{"line_number":223,"context_line":"                                          groupname\u003dmox.IgnoreArg(),"},{"line_number":224,"context_line":"                                          suffix\u003d\u0027end\u0027,"},{"line_number":225,"context_line":"                                          ).AndReturn(False)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"    def _stub_meta_expected(self, now, data, nmeta\u003d1):"},{"line_number":228,"context_line":"        # Stop time at now"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F6Ic%3D","line":225,"in_reply_to":"AAAATn%2F8rfE%3D","updated":"2014-01-06 14:10:21.000000000","message":"Humm,  I like the idea to have only one helper method to mocking the notifications even if the conditional is under used.\n\nAnd if I remove here the \u0027error\u0027 case, I need to keep the param \u0027with_error\u0027 and the \u0027if\u0027 to not mock the \u0027end\u0027 when needed ..  which does not simplify things much.","commit_id":"3f55757faff452009fc716ab92a9d6a8d215d830"}],"heat/tests/test_notifications.py":[{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"65a6012136c5f8aaf56ea0f98ad14ff9d9f9b01b","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        stack.create()"},{"line_number":191,"context_line":"        self.stack \u003d stack"},{"line_number":192,"context_line":"        group \u003d stack[\u0027WebServerGroup\u0027]"},{"line_number":193,"context_line":"        self.assertEqual((group.CREATE, group.COMPLETE), group.state)"},{"line_number":194,"context_line":"        return group"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def mock_stack_except_for_group(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9I3s%3D","line":193,"updated":"2013-12-16 12:45:43.000000000","message":"please fix the order of arguments to assertEqual to be (expected, observed), also in lines 286, 295, 317","commit_id":"a45be1a80c1dd13ed35a9172267fa60b2cadeb41"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"f5643a54d07da77fbff286dcba3827977fcad358","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        stack.create()"},{"line_number":191,"context_line":"        self.stack \u003d stack"},{"line_number":192,"context_line":"        group \u003d stack[\u0027WebServerGroup\u0027]"},{"line_number":193,"context_line":"        self.assertEqual((group.CREATE, group.COMPLETE), group.state)"},{"line_number":194,"context_line":"        return group"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def mock_stack_except_for_group(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F89sg%3D","line":193,"in_reply_to":"AAAATn%2F9HS0%3D","updated":"2013-12-18 10:51:56.000000000","message":"Done","commit_id":"a45be1a80c1dd13ed35a9172267fa60b2cadeb41"},{"author":{"_account_id":6917,"name":"Bartosz Górski","email":"bartosz@codilime.com","username":"bartosz-gorski"},"change_message_id":"5602c74eeef03ed48055d6fe1d237895275bb333","unresolved":false,"context_lines":[{"line_number":190,"context_line":"        stack.create()"},{"line_number":191,"context_line":"        self.stack \u003d stack"},{"line_number":192,"context_line":"        group \u003d stack[\u0027WebServerGroup\u0027]"},{"line_number":193,"context_line":"        self.assertEqual((group.CREATE, group.COMPLETE), group.state)"},{"line_number":194,"context_line":"        return group"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def mock_stack_except_for_group(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F9HS0%3D","line":193,"in_reply_to":"AAAATn%2F9I3s%3D","updated":"2013-12-16 17:18:56.000000000","message":"This one is ok. But those in lines 286, 295, 317 should be changed.","commit_id":"a45be1a80c1dd13ed35a9172267fa60b2cadeb41"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"5597261fb2e4d430621c68c52882c1a150849391","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                          \u0027adjustment\u0027: adjust,"},{"line_number":266,"context_line":"                          \u0027stack_name\u0027: self.stack_name,"},{"line_number":267,"context_line":"                          \u0027state\u0027: \u0027CREATE_COMPLETE\u0027})"},{"line_number":268,"context_line":"                         ]"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        return expected"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F8re0%3D","line":268,"updated":"2013-12-23 10:38:26.000000000","message":"Same comment as the other test file. Maybe create 1 simple test method just creating the first expected.","commit_id":"3f55757faff452009fc716ab92a9d6a8d215d830"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"8537207edfc3bed83cb0012a129b18de78b0f835","unresolved":false,"context_lines":[{"line_number":265,"context_line":"                          \u0027adjustment\u0027: adjust,"},{"line_number":266,"context_line":"                          \u0027stack_name\u0027: self.stack_name,"},{"line_number":267,"context_line":"                          \u0027state\u0027: \u0027CREATE_COMPLETE\u0027})"},{"line_number":268,"context_line":"                         ]"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        return expected"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2F8Qk%3D","line":268,"in_reply_to":"AAAATn%2F8re0%3D","updated":"2014-01-06 14:10:21.000000000","message":"same answer as the other test file.","commit_id":"3f55757faff452009fc716ab92a9d6a8d215d830"}]}
