)]}'
{"climate/cmd/manager.py":[{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"75978c748d721050892364cc9995485f83c324a3","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    db_api.setup_db()"},{"line_number":37,"context_line":"    service_utils.prepare_service(sys.argv)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    if CONF.plugins and \u0027physical.host.plugin\u0027 in CONF.plugins:"},{"line_number":40,"context_line":"        manager_fn \u003d getattr(host_manager_service, \u0027ManagerService\u0027, None)"},{"line_number":41,"context_line":"    else:"},{"line_number":42,"context_line":"        manager_fn \u003d getattr(manager_service, \u0027ManagerService\u0027, None)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2F0lc%3D","line":39,"updated":"2013-10-28 13:42:49.000000000","message":"You might want to create a separate service that will run the plugin. There\u0027s no need to use the same executable.","commit_id":"7ab3aa959795818e48dae838d6cdefbce2c51a70"},{"author":{"_account_id":7075,"name":"Swann Croiset","email":"scroiset@mirantis.com","username":"swann"},"change_message_id":"759333605e609e8abee225e6747cf28cad974eed","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    service_utils.prepare_service(sys.argv)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    if CONF.plugins and \u0027physical.host.plugin\u0027 in CONF.plugins:"},{"line_number":40,"context_line":"        manager_fn \u003d getattr(host_manager_service, \u0027ManagerService\u0027, None)"},{"line_number":41,"context_line":"    else:"},{"line_number":42,"context_line":"        manager_fn \u003d getattr(manager_service, \u0027ManagerService\u0027, None)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2F57U%3D","line":40,"updated":"2013-10-25 13:09:04.000000000","message":"maybe : s/_fn/_class","commit_id":"7ab3aa959795818e48dae838d6cdefbce2c51a70"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"75978c748d721050892364cc9995485f83c324a3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    else:"},{"line_number":42,"context_line":"        manager_fn \u003d getattr(manager_service, \u0027ManagerService\u0027, None)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    if manager_fn is None:"},{"line_number":45,"context_line":"        raise exceptions.ClimateException(\"Manager Service not loaded\")"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    service.launch("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAATn%2F%2F0mA%3D","line":44,"updated":"2013-10-28 13:42:49.000000000","message":"I don\u0027t see how this check is needed. Classes will always be there since they are declared in modules.","commit_id":"7ab3aa959795818e48dae838d6cdefbce2c51a70"}],"climate/manager/service.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b1ada6386352e0943186a700fe5405b4fc5e90b2","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            fn \u003d getattr(self.plugins[resource_type], method, None)"},{"line_number":226,"context_line":"        except KeyError:"},{"line_number":227,"context_line":"            LOG.debug(\"Plugin %s not loaded\")"},{"line_number":228,"context_line":"            raise AttributeError(name)"},{"line_number":229,"context_line":"        if fn is not None:"},{"line_number":230,"context_line":"            return fn"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2BBfI%3D","line":227,"updated":"2013-12-03 13:44:29.000000000","message":"What plugin? :)","commit_id":"0c79f880bbbf5fd3fae90a0aa8dd807d05361d67"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"23b07fb5549e912e7993364935c992b52b727b77","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            fn \u003d getattr(self.plugins[resource_type], method, None)"},{"line_number":226,"context_line":"        except KeyError:"},{"line_number":227,"context_line":"            LOG.debug(\"Plugin %s not loaded\")"},{"line_number":228,"context_line":"            raise AttributeError(name)"},{"line_number":229,"context_line":"        if fn is not None:"},{"line_number":230,"context_line":"            return fn"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATn%2F%2BAo4%3D","line":227,"in_reply_to":"AAAATn%2F%2BBfI%3D","updated":"2013-12-03 14:38:51.000000000","message":"Oops, will fix it into LOG.debug(\"Plugin %s not loaded\", resource_type).\nThat said, I won\u0027t create another patchset just for that, waiting other comments ;-)","commit_id":"0c79f880bbbf5fd3fae90a0aa8dd807d05361d67"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"2f2eb46afab96957d289412972611d0830e4dec3","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            resource_type, method \u003d name.rsplit(\u0027:\u0027, 1)"},{"line_number":220,"context_line":"        except ValueError:"},{"line_number":221,"context_line":"            # NOTE(sbauza) : Call to method without plugin prefix, we need"},{"line_number":222,"context_line":"            # to introspect the instance itself"},{"line_number":223,"context_line":"            raise AttributeError(name)"},{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            fn \u003d getattr(self.plugins[resource_type], method, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9r74%3D","line":222,"updated":"2013-12-07 17:49:09.000000000","message":"__getattr__ is being called only after instance\u0027s __dict__ and class have been inspected. So this comment isn\u0027t exactly truthful.","commit_id":"4506014284c2230583127a0c5c4d55bf1f26332c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"70a6965278f7e60ab448af44232ba3b28252c7eb","unresolved":false,"context_lines":[{"line_number":219,"context_line":"            resource_type, method \u003d name.rsplit(\u0027:\u0027, 1)"},{"line_number":220,"context_line":"        except ValueError:"},{"line_number":221,"context_line":"            # NOTE(sbauza) : Call to method without plugin prefix, we need"},{"line_number":222,"context_line":"            # to introspect the instance itself"},{"line_number":223,"context_line":"            raise AttributeError(name)"},{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            fn \u003d getattr(self.plugins[resource_type], method, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9VdY%3D","line":222,"in_reply_to":"AAAATn%2F9r74%3D","updated":"2013-12-12 15:15:05.000000000","message":"Done","commit_id":"4506014284c2230583127a0c5c4d55bf1f26332c"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"2f2eb46afab96957d289412972611d0830e4dec3","unresolved":false,"context_lines":[{"line_number":222,"context_line":"            # to introspect the instance itself"},{"line_number":223,"context_line":"            raise AttributeError(name)"},{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            fn \u003d getattr(self.plugins[resource_type], method, None)"},{"line_number":226,"context_line":"        except KeyError:"},{"line_number":227,"context_line":"            LOG.debug(\"Plugin with resource type %s not found\", resource_type)"},{"line_number":228,"context_line":"            raise AttributeError(name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9r7w%3D","line":225,"updated":"2013-12-07 17:49:09.000000000","message":"try: block should be minimized. \n\nThere\u0027s no reason to use the third argument to getattr. Another try: block would be better.","commit_id":"4506014284c2230583127a0c5c4d55bf1f26332c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"70a6965278f7e60ab448af44232ba3b28252c7eb","unresolved":false,"context_lines":[{"line_number":222,"context_line":"            # to introspect the instance itself"},{"line_number":223,"context_line":"            raise AttributeError(name)"},{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            fn \u003d getattr(self.plugins[resource_type], method, None)"},{"line_number":226,"context_line":"        except KeyError:"},{"line_number":227,"context_line":"            LOG.debug(\"Plugin with resource type %s not found\", resource_type)"},{"line_number":228,"context_line":"            raise AttributeError(name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9VaY%3D","line":225,"in_reply_to":"AAAATn%2F9r7w%3D","updated":"2013-12-12 15:15:05.000000000","message":"Done","commit_id":"4506014284c2230583127a0c5c4d55bf1f26332c"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"2f2eb46afab96957d289412972611d0830e4dec3","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            fn \u003d getattr(self.plugins[resource_type], method, None)"},{"line_number":226,"context_line":"        except KeyError:"},{"line_number":227,"context_line":"            LOG.debug(\"Plugin with resource type %s not found\", resource_type)"},{"line_number":228,"context_line":"            raise AttributeError(name)"},{"line_number":229,"context_line":"        if fn is not None:"},{"line_number":230,"context_line":"            return fn"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9r7s%3D","line":227,"updated":"2013-12-07 17:49:09.000000000","message":"I believe this should be logged as error.","commit_id":"4506014284c2230583127a0c5c4d55bf1f26332c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"70a6965278f7e60ab448af44232ba3b28252c7eb","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        try:"},{"line_number":225,"context_line":"            fn \u003d getattr(self.plugins[resource_type], method, None)"},{"line_number":226,"context_line":"        except KeyError:"},{"line_number":227,"context_line":"            LOG.debug(\"Plugin with resource type %s not found\", resource_type)"},{"line_number":228,"context_line":"            raise AttributeError(name)"},{"line_number":229,"context_line":"        if fn is not None:"},{"line_number":230,"context_line":"            return fn"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9VaU%3D","line":227,"in_reply_to":"AAAATn%2F9r7s%3D","updated":"2013-12-12 15:15:05.000000000","message":"Done","commit_id":"4506014284c2230583127a0c5c4d55bf1f26332c"}],"climate/plugins/base.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"3dc7db67c81d79d11fafd56a11b9489be13b1536","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"EXTRA_METHODS \u003d []"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class BasePlugin(object):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BTIE%3D","line":26,"updated":"2013-11-27 17:44:40.000000000","message":"sorry, forgot to remove it. Will be done in a later patch","commit_id":"8464c1090642cc1b4ba8dd49d75ef47619d83535"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"d6376413aa15131a363fdbdaa0615d20c66934db","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"EXTRA_METHODS \u003d []"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class BasePlugin(object):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BQes%3D","line":26,"in_reply_to":"AAAATn%2F%2BQxo%3D","updated":"2013-11-28 09:10:30.000000000","message":"okay.","commit_id":"8464c1090642cc1b4ba8dd49d75ef47619d83535"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"34a015f646ff19674f7c646ccc64eacd6f0b0725","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"EXTRA_METHODS \u003d []"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class BasePlugin(object):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BQxo%3D","line":26,"in_reply_to":"AAAATn%2F%2BRLk%3D","updated":"2013-11-28 08:05:31.000000000","message":"Oops, yes, I mean later patchset, as I still need to write model classes.","commit_id":"8464c1090642cc1b4ba8dd49d75ef47619d83535"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"c6b2a3d7d74a042028ce1b15e37c21636571a7f7","unresolved":false,"context_lines":[{"line_number":23,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":24,"context_line":"CONF \u003d cfg.CONF"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"EXTRA_METHODS \u003d []"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class BasePlugin(object):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BRLk%3D","line":26,"in_reply_to":"AAAATn%2F%2BTIE%3D","updated":"2013-11-28 05:45:32.000000000","message":"you mean later patchset?","commit_id":"8464c1090642cc1b4ba8dd49d75ef47619d83535"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"51838799f7d0db65f1c5ad3243d82af35660e3bd","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    title \u003d None"},{"line_number":34,"context_line":"    description \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    controlers \u003d []"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def get_plugin_opts(self):"},{"line_number":39,"context_line":"        \"\"\"Plugin can expose some options that should be specified in conf file"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BQ%2FY%3D","line":36,"updated":"2013-11-28 06:40:02.000000000","message":"I suppose there is a typo here :) controllers?","commit_id":"8464c1090642cc1b4ba8dd49d75ef47619d83535"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"34a015f646ff19674f7c646ccc64eacd6f0b0725","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    title \u003d None"},{"line_number":34,"context_line":"    description \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    controlers \u003d []"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def get_plugin_opts(self):"},{"line_number":39,"context_line":"        \"\"\"Plugin can expose some options that should be specified in conf file"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BQxg%3D","line":36,"in_reply_to":"AAAATn%2F%2BQ%2FY%3D","updated":"2013-11-28 08:05:31.000000000","message":"Done","commit_id":"8464c1090642cc1b4ba8dd49d75ef47619d83535"},{"author":{"_account_id":7535,"name":"Nikolay Starodubtsev","email":"starodubcevna@gmail.com","username":"Kezar"},"change_message_id":"d6376413aa15131a363fdbdaa0615d20c66934db","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        \"\"\""},{"line_number":56,"context_line":"        pass"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def manager_extras(self, manager):"},{"line_number":59,"context_line":"        \"\"\"Extra controllers to be added to the manager or specific actions to"},{"line_number":60,"context_line":"        be made."},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BQeQ%3D","line":58,"updated":"2013-11-28 09:10:30.000000000","message":"what about UT coverage for this func?","commit_id":"8464c1090642cc1b4ba8dd49d75ef47619d83535"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"c97e7006bc8c2e0a6c9f0ae015419d667fc9b7d2","unresolved":false,"context_lines":[{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":"CONF \u003d cfg.CONF"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"EXTRA_METHODS \u003d []"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class BasePlugin(object):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BCQg%3D","line":25,"updated":"2013-12-03 07:48:45.000000000","message":"not used in this change","commit_id":"6a89251f77aadbde11079ada7ee0329b51a07cea"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c7dc4037e4ee11d77ae3b9c8f488d922b35f031d","unresolved":false,"context_lines":[{"line_number":22,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":23,"context_line":"CONF \u003d cfg.CONF"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"EXTRA_METHODS \u003d []"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class BasePlugin(object):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BBo4%3D","line":25,"in_reply_to":"AAAATn%2F%2BCQg%3D","updated":"2013-12-03 10:24:49.000000000","message":"Done","commit_id":"6a89251f77aadbde11079ada7ee0329b51a07cea"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"c97e7006bc8c2e0a6c9f0ae015419d667fc9b7d2","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    title \u003d None"},{"line_number":33,"context_line":"    description \u003d None"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    controlers \u003d []"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_plugin_opts(self):"},{"line_number":38,"context_line":"        \"\"\"Plugin can expose some options that should be specified in conf file"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BCQk%3D","line":35,"updated":"2013-12-03 07:48:45.000000000","message":"not used in this change. It was needed in 5th patch set, but I see no usage here.","commit_id":"6a89251f77aadbde11079ada7ee0329b51a07cea"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c7dc4037e4ee11d77ae3b9c8f488d922b35f031d","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    title \u003d None"},{"line_number":33,"context_line":"    description \u003d None"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    controlers \u003d []"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_plugin_opts(self):"},{"line_number":38,"context_line":"        \"\"\"Plugin can expose some options that should be specified in conf file"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BBow%3D","line":35,"in_reply_to":"AAAATn%2F%2BCQk%3D","updated":"2013-12-03 10:24:49.000000000","message":"Done","commit_id":"6a89251f77aadbde11079ada7ee0329b51a07cea"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"c97e7006bc8c2e0a6c9f0ae015419d667fc9b7d2","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        return {"},{"line_number":59,"context_line":"            \u0027resource_type\u0027: self.resource_type,"},{"line_number":60,"context_line":"            \u0027title\u0027: self.title,"},{"line_number":61,"context_line":"            \u0027description\u0027: self.description"},{"line_number":62,"context_line":"        }"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BCRA%3D","line":61,"updated":"2013-12-03 07:48:45.000000000","message":"why do you remove comma here? It\u0027s common practice to leave it at the end of dicl/list to change only one line in next changes, not two.","commit_id":"6a89251f77aadbde11079ada7ee0329b51a07cea"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"c7dc4037e4ee11d77ae3b9c8f488d922b35f031d","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        return {"},{"line_number":59,"context_line":"            \u0027resource_type\u0027: self.resource_type,"},{"line_number":60,"context_line":"            \u0027title\u0027: self.title,"},{"line_number":61,"context_line":"            \u0027description\u0027: self.description"},{"line_number":62,"context_line":"        }"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2BBos%3D","line":61,"in_reply_to":"AAAATn%2F%2BCRA%3D","updated":"2013-12-03 10:24:49.000000000","message":"Done","commit_id":"6a89251f77aadbde11079ada7ee0329b51a07cea"}],"climate/tests/manager/__init__.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"1709631bb9ff1d0b13d7386ea3f2440214d14c49","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Mirantis Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F%2BBns%3D","line":1,"updated":"2013-12-03 10:27:15.000000000","message":"coming from rebase, patching against.","commit_id":"2af6d17bcb05f2f15ced88c3f14d548dff7163a5"},{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"2f2eb46afab96957d289412972611d0830e4dec3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Mirantis Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9r7o%3D","side":"PARENT","line":1,"updated":"2013-12-07 17:49:09.000000000","message":"This change is not relevant.","commit_id":"dcf1ecf7f8c75d03b5460b36e71f602d5336402b"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"70a6965278f7e60ab448af44232ba3b28252c7eb","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Mirantis Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9VaQ%3D","side":"PARENT","line":1,"in_reply_to":"AAAATn%2F9r7o%3D","updated":"2013-12-12 15:15:05.000000000","message":"Done","commit_id":"dcf1ecf7f8c75d03b5460b36e71f602d5336402b"}],"climate/tests/manager/test_service.py":[{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"2f2eb46afab96957d289412972611d0830e4dec3","unresolved":false,"context_lines":[{"line_number":244,"context_line":"            \u0027111\u0027, {\u0027status\u0027: \u0027IN_USE\u0027})"},{"line_number":245,"context_line":"        self.event_update.assert_called_once_with(\u00271\u0027, {\u0027status\u0027: \u0027DONE\u0027})"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_plugin_dispatcher_with_getattr(self):"},{"line_number":248,"context_line":"        self.fake_list_computehosts \u003d \\"},{"line_number":249,"context_line":"            self.patch(self.fake_phys_plugin, \u0027list_computehosts\u0027)"},{"line_number":250,"context_line":"        self.fake_list_computehosts.return_value \u003d \u0027foo\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9r7k%3D","line":247,"updated":"2013-12-07 17:49:09.000000000","message":"This test should be broken into a number of independent tests.","commit_id":"4506014284c2230583127a0c5c4d55bf1f26332c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"70a6965278f7e60ab448af44232ba3b28252c7eb","unresolved":false,"context_lines":[{"line_number":244,"context_line":"            \u0027111\u0027, {\u0027status\u0027: \u0027IN_USE\u0027})"},{"line_number":245,"context_line":"        self.event_update.assert_called_once_with(\u00271\u0027, {\u0027status\u0027: \u0027DONE\u0027})"},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"    def test_plugin_dispatcher_with_getattr(self):"},{"line_number":248,"context_line":"        self.fake_list_computehosts \u003d \\"},{"line_number":249,"context_line":"            self.patch(self.fake_phys_plugin, \u0027list_computehosts\u0027)"},{"line_number":250,"context_line":"        self.fake_list_computehosts.return_value \u003d \u0027foo\u0027"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9VV8%3D","line":247,"in_reply_to":"AAAATn%2F9r7k%3D","updated":"2013-12-12 15:15:05.000000000","message":"Done","commit_id":"4506014284c2230583127a0c5c4d55bf1f26332c"}],"climate/tests/plugins/test_physical_host_plugin.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"affb386303510c07e93c9d0d5f3bb7ff0adc1fd0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2013 Mirantis Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F9P48%3D","line":1,"updated":"2013-12-13 14:44:00.000000000","message":"Please note the tests are correctly badly written, as I just wanted to pass the py27 gates. I\u0027m currently rewriting them correctly.","commit_id":"d41d287dbdf351a4ccb470a2ee01c8d742623ed6"}],"climate/tests/test_exceptions.py":[{"author":{"_account_id":708,"name":"Yuriy Taraday","email":"yuriy@taraday.nl","username":"yorik-sar"},"change_message_id":"2f2eb46afab96957d289412972611d0830e4dec3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        class FakeClimateException(exceptions.ClimateException):"},{"line_number":42,"context_line":"            msg_fmt \u003d \"default message: %(misspelled_code)s\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        exc \u003d FakeClimateException(code\u003d500, misspelled_code\u003d\u0027blah\u0027)"},{"line_number":45,"context_line":"        self.assertEqual(unicode(exc), \u0027default message: blah\u0027)"},{"line_number":46,"context_line":"        self.assertEqual(exc.message, \u0027default message: blah\u0027)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9r7g%3D","line":44,"updated":"2013-12-07 17:49:09.000000000","message":"This change is irrelevant.","commit_id":"4506014284c2230583127a0c5c4d55bf1f26332c"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"70a6965278f7e60ab448af44232ba3b28252c7eb","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        class FakeClimateException(exceptions.ClimateException):"},{"line_number":42,"context_line":"            msg_fmt \u003d \"default message: %(misspelled_code)s\""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        exc \u003d FakeClimateException(code\u003d500, misspelled_code\u003d\u0027blah\u0027)"},{"line_number":45,"context_line":"        self.assertEqual(unicode(exc), \u0027default message: blah\u0027)"},{"line_number":46,"context_line":"        self.assertEqual(exc.message, \u0027default message: blah\u0027)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F9VYo%3D","line":44,"in_reply_to":"AAAATn%2F9r7g%3D","updated":"2013-12-12 15:15:05.000000000","message":"Done","commit_id":"4506014284c2230583127a0c5c4d55bf1f26332c"}]}
