)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"846d81237d453f6e8f1169b9d49a3adcab674b5a","unresolved":false,"context_lines":[{"line_number":15,"context_line":"include actions such as instance migration, changing hypervisor state,"},{"line_number":16,"context_line":"changing power state (ACPI level, ...)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This patchset add a common generic dynamic loader for watcher."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Partially implements: blueprint watcher-add-actions-via-conf"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"da6ed579_eb2540ae","line":18,"updated":"2016-01-12 04:26:05.000000000","message":"Can you expand on this a bit (e.g., \"loader for plugins, such as for custom Actions, Strategies, Planners, etc.\")?","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"b1801a2be2ce906cb5f2e6a5156202ef7f5014ec","unresolved":false,"context_lines":[{"line_number":15,"context_line":"include actions such as instance migration, changing hypervisor state,"},{"line_number":16,"context_line":"changing power state (ACPI level, ...)."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This patchset add a common generic dynamic loader for watcher."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Partially implements: blueprint watcher-add-actions-via-conf"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"da6ed579_f6c99bad","line":18,"in_reply_to":"da6ed579_eb2540ae","updated":"2016-01-12 10:51:30.000000000","message":"Done","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"}],"watcher/applier/primitives/loading/default.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"846d81237d453f6e8f1169b9d49a3adcab674b5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"da6ed579_2806fe20","updated":"2016-01-12 04:26:05.000000000","message":"Do you envision there being other implementations of action loaders?  Seems like we could get away with just having watcher/applier/primitives/loader.py with ActionLoader which would simplify things a bit.  This same comment applies for the other Default*Loaders.","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"b1801a2be2ce906cb5f2e6a5156202ef7f5014ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"da6ed579_4cf2599c","in_reply_to":"da6ed579_2806fe20","updated":"2016-01-12 10:51:30.000000000","message":"yes, the idea is to provide the possibility to have other implementations of the loaders. \nWe only use \u0027stevedore\u0027 thirdparty currently, but we plan to have other loaders to support many languages ( Go, Java, C++, ..)","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"}],"watcher/common/exception.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"846d81237d453f6e8f1169b9d49a3adcab674b5a","unresolved":false,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"class LoadingError(WatcherException):"},{"line_number":303,"context_line":"    message \u003d _(\"Error loading plugin\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_88c12a83","line":303,"updated":"2016-01-12 04:26:05.000000000","message":"Include name of plugin that failed to load in this message?","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"b1801a2be2ce906cb5f2e6a5156202ef7f5014ec","unresolved":false,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"class LoadingError(WatcherException):"},{"line_number":303,"context_line":"    message \u003d _(\"Error loading plugin\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_404d3d71","line":303,"in_reply_to":"da6ed579_88c12a83","updated":"2016-01-12 10:51:30.000000000","message":"Done","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"7fe02fb1537e1a01211fffe119bd01db664c151a","unresolved":false,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"class LoadingError(WatcherException):"},{"line_number":303,"context_line":"    message \u003d _(\"Error loading plugin \u0027%(name)s\u0027 \")"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_39406da5","line":303,"range":{"start_line":303,"start_character":48,"end_line":303,"end_character":49},"updated":"2016-01-12 17:09:29.000000000","message":"nit: extra space here","commit_id":"a09626c7374a63790fdf252509682968748c17e8"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"e273a2f5a0ecb301b4bf8bbf17a2a0439e44ec03","unresolved":false,"context_lines":[{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"class LoadingError(WatcherException):"},{"line_number":303,"context_line":"    message \u003d _(\"Error loading plugin \u0027%(name)s\u0027 \")"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_197569f8","line":303,"range":{"start_line":303,"start_character":48,"end_line":303,"end_character":49},"in_reply_to":"da6ed579_39406da5","updated":"2016-01-12 17:12:57.000000000","message":"Done","commit_id":"a09626c7374a63790fdf252509682968748c17e8"}],"watcher/common/loader/base.py":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"323459e8a9ad0a50ab221247b4057c4a0e1adf01","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        raise NotImplemented()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @abc.abstractmethod"},{"line_number":35,"context_line":"    def load(self, name, version):"},{"line_number":36,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa69d971_296ea22f","line":35,"range":{"start_line":35,"start_character":25,"end_line":35,"end_character":32},"updated":"2016-01-08 16:27:57.000000000","message":"The implementation of this method has a different signature than this one as if set a the following: version\u003dNone\n\nCan you please modify one of them so they are both matching?","commit_id":"ff8e2cdf0548708ed814567df7015cfaad0938c4"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"08c7f4b724420ea81530a762d05714ff63f59f7f","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        raise NotImplemented()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @abc.abstractmethod"},{"line_number":35,"context_line":"    def load(self, name, version):"},{"line_number":36,"context_line":"        raise NotImplementedError()"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa69d971_528b53c3","line":35,"range":{"start_line":35,"start_character":25,"end_line":35,"end_character":32},"in_reply_to":"fa69d971_296ea22f","updated":"2016-01-11 08:27:06.000000000","message":"IMHO, we can have a Base interface which declare the abstract method and we can overloading to change the behavior. In the base we don\u0027t want to specify the version at None.","commit_id":"ff8e2cdf0548708ed814567df7015cfaad0938c4"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"846d81237d453f6e8f1169b9d49a3adcab674b5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"da6ed579_a8574ec9","updated":"2016-01-12 04:26:05.000000000","message":"Could we get away with just having the DefaultLoader or do you think there\u0027s a likelihood of having other loader implementations?","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"b1801a2be2ce906cb5f2e6a5156202ef7f5014ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"da6ed579_806255d7","in_reply_to":"da6ed579_a8574ec9","updated":"2016-01-12 10:51:30.000000000","message":"see my previous comment","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"846d81237d453f6e8f1169b9d49a3adcab674b5a","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import abc"},{"line_number":20,"context_line":"import six"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_log import log"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"@six.add_metaclass(abc.ABCMeta)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_29692d8c","line":24,"range":{"start_line":22,"start_character":0,"end_line":24,"end_character":29},"updated":"2016-01-12 04:26:05.000000000","message":"Not used","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"b1801a2be2ce906cb5f2e6a5156202ef7f5014ec","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import abc"},{"line_number":20,"context_line":"import six"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_log import log"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"@six.add_metaclass(abc.ABCMeta)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_a05f590d","line":24,"range":{"start_line":22,"start_character":0,"end_line":24,"end_character":29},"in_reply_to":"da6ed579_29692d8c","updated":"2016-01-12 10:51:30.000000000","message":"Done","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"7fe02fb1537e1a01211fffe119bd01db664c151a","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @abc.abstractmethod"},{"line_number":27,"context_line":"    def list_available(self):"},{"line_number":28,"context_line":"        raise NotImplemented()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @abc.abstractmethod"},{"line_number":31,"context_line":"    def load(self, name):"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_d9a6f1c0","line":28,"range":{"start_line":28,"start_character":14,"end_line":28,"end_character":28},"updated":"2016-01-12 17:09:29.000000000","message":"Why not the same exception? IMHO, it should be NotImplementedError just like in the rest of the codebase","commit_id":"a09626c7374a63790fdf252509682968748c17e8"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"e273a2f5a0ecb301b4bf8bbf17a2a0439e44ec03","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    @abc.abstractmethod"},{"line_number":27,"context_line":"    def list_available(self):"},{"line_number":28,"context_line":"        raise NotImplemented()"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @abc.abstractmethod"},{"line_number":31,"context_line":"    def load(self, name):"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_995f1972","line":28,"range":{"start_line":28,"start_character":14,"end_line":28,"end_character":28},"in_reply_to":"da6ed579_d9a6f1c0","updated":"2016-01-12 17:12:57.000000000","message":"Done","commit_id":"a09626c7374a63790fdf252509682968748c17e8"}],"watcher/common/loader/default.py":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"323459e8a9ad0a50ab221247b4057c4a0e1adf01","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        super(DefaultLoader, self).__init__()"},{"line_number":32,"context_line":"        self.namespace \u003d namespace"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def load(self, name, version\u003dNone):"},{"line_number":35,"context_line":"        try:"},{"line_number":36,"context_line":"            if version is not None:"},{"line_number":37,"context_line":"                # create the versioned id of the driver to load"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa69d971_49699624","line":34,"range":{"start_line":34,"start_character":33,"end_line":34,"end_character":37},"updated":"2016-01-08 16:27:57.000000000","message":"Ditto","commit_id":"ff8e2cdf0548708ed814567df7015cfaad0938c4"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"08c7f4b724420ea81530a762d05714ff63f59f7f","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        super(DefaultLoader, self).__init__()"},{"line_number":32,"context_line":"        self.namespace \u003d namespace"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def load(self, name, version\u003dNone):"},{"line_number":35,"context_line":"        try:"},{"line_number":36,"context_line":"            if version is not None:"},{"line_number":37,"context_line":"                # create the versioned id of the driver to load"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa69d971_7288d7c5","line":34,"range":{"start_line":34,"start_character":33,"end_line":34,"end_character":37},"in_reply_to":"fa69d971_49699624","updated":"2016-01-11 08:27:06.000000000","message":"ditto","commit_id":"ff8e2cdf0548708ed814567df7015cfaad0938c4"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"c90fd81994d776d3180aee5fbbcc1d76bcd92ed7","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from stevedore.driver import DriverManager"},{"line_number":21,"context_line":"from stevedore import ExtensionManager"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from watcher.common.exception import LoadingError"},{"line_number":24,"context_line":"from watcher.common.loader.base import BaseLoader"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d log.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_3d70e43f","line":23,"updated":"2016-01-11 13:18:29.000000000","message":"it should be better to import the module only\n\nfrom watcher.common import exception","commit_id":"b9f1964216f91ab6e85b78548a552d347f153213"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"af3e18a7dd2d2c6ed2c317118ba5e0e465234119","unresolved":false,"context_lines":[{"line_number":20,"context_line":"from stevedore.driver import DriverManager"},{"line_number":21,"context_line":"from stevedore import ExtensionManager"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from watcher.common.exception import LoadingError"},{"line_number":24,"context_line":"from watcher.common.loader.base import BaseLoader"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"LOG \u003d log.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_135f0f10","line":23,"in_reply_to":"fa69d971_3d70e43f","updated":"2016-01-11 13:37:42.000000000","message":"Done","commit_id":"b9f1964216f91ab6e85b78548a552d347f153213"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"c90fd81994d776d3180aee5fbbcc1d76bcd92ed7","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            loaded \u003d driver_manager.driver"},{"line_number":43,"context_line":"        except Exception as exc:"},{"line_number":44,"context_line":"            LOG.exception(exc)"},{"line_number":45,"context_line":"            raise LoadingError()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        return loaded()"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fa69d971_5dcb5853","line":45,"range":{"start_line":45,"start_character":18,"end_line":45,"end_character":30},"updated":"2016-01-11 13:18:29.000000000","message":"s/LoadingError/exception.LoadingError","commit_id":"b9f1964216f91ab6e85b78548a552d347f153213"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"846d81237d453f6e8f1169b9d49a3adcab674b5a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def load(self, name, version\u003dNone):"},{"line_number":35,"context_line":"        try:"},{"line_number":36,"context_line":"            if version is not None:"},{"line_number":37,"context_line":"                # create the versioned id of the driver to load"},{"line_number":38,"context_line":"                name \u003d (\"%s_V%s\" % (name, version))"},{"line_number":39,"context_line":"            LOG.debug(\"Loading in namespace %s \u003d\u003e %s \", self.namespace, name)"},{"line_number":40,"context_line":"            driver_manager \u003d DriverManager(namespace\u003dself.namespace,"},{"line_number":41,"context_line":"                                           name\u003dname)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_e8030675","line":38,"range":{"start_line":37,"start_character":16,"end_line":38,"end_character":51},"updated":"2016-01-12 04:26:05.000000000","message":"So this allows you to load a specific version of the plugin?  I guess I don\u0027t get when this would be used versus just configuring the entry point to point to a different file that represents the different version.","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"846d81237d453f6e8f1169b9d49a3adcab674b5a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            loaded \u003d driver_manager.driver"},{"line_number":43,"context_line":"        except Exception as exc:"},{"line_number":44,"context_line":"            LOG.exception(exc)"},{"line_number":45,"context_line":"            raise exception.LoadingError()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        return loaded()"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_a80bce7c","line":45,"range":{"start_line":45,"start_character":28,"end_line":45,"end_character":42},"updated":"2016-01-12 04:26:05.000000000","message":"I think this should include the name / namespace trying to be loaded.","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"b1801a2be2ce906cb5f2e6a5156202ef7f5014ec","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            loaded \u003d driver_manager.driver"},{"line_number":43,"context_line":"        except Exception as exc:"},{"line_number":44,"context_line":"            LOG.exception(exc)"},{"line_number":45,"context_line":"            raise exception.LoadingError()"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        return loaded()"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_c0960d94","line":45,"range":{"start_line":45,"start_character":28,"end_line":45,"end_character":42},"in_reply_to":"da6ed579_a80bce7c","updated":"2016-01-12 10:51:30.000000000","message":"Done","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"}],"watcher/decision_engine/planner/loading/default.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"846d81237d453f6e8f1169b9d49a3adcab674b5a","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class DefaultPlannerLoader(DefaultLoader):"},{"line_number":28,"context_line":"    def __init__(self):"},{"line_number":29,"context_line":"        super(DefaultPlannerLoader, self).\\"},{"line_number":30,"context_line":"            __init__(namespace\u003d\u0027watcher_planners\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_cc73bfb3","line":30,"range":{"start_line":29,"start_character":8,"end_line":30,"end_character":50},"updated":"2016-01-12 04:26:05.000000000","message":"Backslash should be avoided if possible:\n\n  super(DefaultPlannerLoader, self).__init__(\n    namespace\u003d\u0027watcher_planners\u0027)","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"b1801a2be2ce906cb5f2e6a5156202ef7f5014ec","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class DefaultPlannerLoader(DefaultLoader):"},{"line_number":28,"context_line":"    def __init__(self):"},{"line_number":29,"context_line":"        super(DefaultPlannerLoader, self).\\"},{"line_number":30,"context_line":"            __init__(namespace\u003d\u0027watcher_planners\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_0058a5f9","line":30,"range":{"start_line":29,"start_character":8,"end_line":30,"end_character":50},"in_reply_to":"da6ed579_cc73bfb3","updated":"2016-01-12 10:51:30.000000000","message":"Done","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"7fe02fb1537e1a01211fffe119bd01db664c151a","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class DefaultPlannerLoader(DefaultLoader):"},{"line_number":28,"context_line":"    def __init__(self):"},{"line_number":29,"context_line":"        super(DefaultPlannerLoader, self).__init__("},{"line_number":30,"context_line":"            namespace\u003d\u0027watcher_planners\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_79fee56c","line":29,"range":{"start_line":29,"start_character":42,"end_line":29,"end_character":50},"updated":"2016-01-12 17:09:29.000000000","message":"nit: This can stick on a single line","commit_id":"a09626c7374a63790fdf252509682968748c17e8"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"e273a2f5a0ecb301b4bf8bbf17a2a0439e44ec03","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"class DefaultPlannerLoader(DefaultLoader):"},{"line_number":28,"context_line":"    def __init__(self):"},{"line_number":29,"context_line":"        super(DefaultPlannerLoader, self).__init__("},{"line_number":30,"context_line":"            namespace\u003d\u0027watcher_planners\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_d99a7114","line":29,"range":{"start_line":29,"start_character":42,"end_line":29,"end_character":50},"in_reply_to":"da6ed579_79fee56c","updated":"2016-01-12 17:12:57.000000000","message":"sorry 80 :)","commit_id":"a09626c7374a63790fdf252509682968748c17e8"}],"watcher/decision_engine/planner/manager.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"087992255cc7c663d83c9f409f34c52685e02e17","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"da6ed579_263cef92","updated":"2016-01-12 05:11:51.000000000","message":"What is this file?","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"b1801a2be2ce906cb5f2e6a5156202ef7f5014ec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"da6ed579_40053dc0","in_reply_to":"da6ed579_263cef92","updated":"2016-01-12 10:51:30.000000000","message":"Done","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"}],"watcher/decision_engine/strategy/loading/default.py":[{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"846d81237d453f6e8f1169b9d49a3adcab674b5a","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class DefaultStrategyLoader(DefaultLoader):"},{"line_number":31,"context_line":"    def __init__(self):"},{"line_number":32,"context_line":"        super(DefaultStrategyLoader, self).\\"},{"line_number":33,"context_line":"            __init__(namespace\u003d\u0027watcher_strategies\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_0cb9d72e","line":32,"updated":"2016-01-12 04:26:05.000000000","message":"Ditto","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"b1801a2be2ce906cb5f2e6a5156202ef7f5014ec","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class DefaultStrategyLoader(DefaultLoader):"},{"line_number":31,"context_line":"    def __init__(self):"},{"line_number":32,"context_line":"        super(DefaultStrategyLoader, self).\\"},{"line_number":33,"context_line":"            __init__(namespace\u003d\u0027watcher_strategies\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_60d88154","line":32,"in_reply_to":"da6ed579_0cb9d72e","updated":"2016-01-12 10:51:30.000000000","message":"Done","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"7fe02fb1537e1a01211fffe119bd01db664c151a","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class DefaultStrategyLoader(DefaultLoader):"},{"line_number":30,"context_line":"    def __init__(self):"},{"line_number":31,"context_line":"        super(DefaultStrategyLoader, self).__init__("},{"line_number":32,"context_line":"            namespace\u003d\u0027watcher_strategies\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_59f68190","line":31,"range":{"start_line":31,"start_character":43,"end_line":31,"end_character":51},"updated":"2016-01-12 17:09:29.000000000","message":"ditto","commit_id":"a09626c7374a63790fdf252509682968748c17e8"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"e273a2f5a0ecb301b4bf8bbf17a2a0439e44ec03","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class DefaultStrategyLoader(DefaultLoader):"},{"line_number":30,"context_line":"    def __init__(self):"},{"line_number":31,"context_line":"        super(DefaultStrategyLoader, self).__init__("},{"line_number":32,"context_line":"            namespace\u003d\u0027watcher_strategies\u0027)"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_79b6e58b","line":31,"range":{"start_line":31,"start_character":43,"end_line":31,"end_character":51},"in_reply_to":"da6ed579_59f68190","updated":"2016-01-12 17:12:57.000000000","message":"sorry 80 :)","commit_id":"a09626c7374a63790fdf252509682968748c17e8"}],"watcher/locale/fr/LC_MESSAGES/watcher.po":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"323459e8a9ad0a50ab221247b4057c4a0e1adf01","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"#: watcher/common/exception.py:303"},{"line_number":262,"context_line":"msgid \"Error loading plugin\""},{"line_number":263,"context_line":"msgstr \"\""},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"#: watcher/common/keystone.py:59"},{"line_number":266,"context_line":"msgid \"No Keystone service catalog loaded\""}],"source_content_type":"application/octet-stream","patch_set":11,"id":"fa69d971_69b6da8b","line":263,"range":{"start_line":263,"start_character":7,"end_line":263,"end_character":9},"updated":"2016-01-08 16:27:57.000000000","message":"Maybe we should translate stuff as we add/modify them (if possible)","commit_id":"ff8e2cdf0548708ed814567df7015cfaad0938c4"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"08c7f4b724420ea81530a762d05714ff63f59f7f","unresolved":false,"context_lines":[{"line_number":260,"context_line":""},{"line_number":261,"context_line":"#: watcher/common/exception.py:303"},{"line_number":262,"context_line":"msgid \"Error loading plugin\""},{"line_number":263,"context_line":"msgstr \"\""},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"#: watcher/common/keystone.py:59"},{"line_number":266,"context_line":"msgid \"No Keystone service catalog loaded\""}],"source_content_type":"application/octet-stream","patch_set":11,"id":"fa69d971_d2bd0369","line":263,"range":{"start_line":263,"start_character":7,"end_line":263,"end_character":9},"in_reply_to":"fa69d971_69b6da8b","updated":"2016-01-11 08:27:06.000000000","message":"Yes good idea","commit_id":"ff8e2cdf0548708ed814567df7015cfaad0938c4"}],"watcher/tests/common/loader/test_loader.py":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"323459e8a9ad0a50ab221247b4057c4a0e1adf01","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from watcher.tests.common.loader.FakeLoadable import FakeLoadable"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class TestLoader(BaseTestCase):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @mock.patch(\"watcher.common.loader.default.DriverManager\")"},{"line_number":32,"context_line":"    def test_load_driver_no_opt(self, m_driver_manager):"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa69d971_a931320d","line":29,"range":{"start_line":29,"start_character":6,"end_line":29,"end_character":16},"updated":"2016-01-08 16:27:57.000000000","message":"Maybe we should have tests that are actually loading proper endpoints on top of this test so we can make sure the endpoint is correct. Just like in watcher/tests/decision_engine/strategy/loading/test_default_strategy_loader.py (test_strategy_loader), this would be for:\n- Actions\n- Planners\n- Strategies","commit_id":"ff8e2cdf0548708ed814567df7015cfaad0938c4"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"08c7f4b724420ea81530a762d05714ff63f59f7f","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from watcher.tests.common.loader.FakeLoadable import FakeLoadable"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"class TestLoader(BaseTestCase):"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    @mock.patch(\"watcher.common.loader.default.DriverManager\")"},{"line_number":32,"context_line":"    def test_load_driver_no_opt(self, m_driver_manager):"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa69d971_2455674f","line":29,"range":{"start_line":29,"start_character":6,"end_line":29,"end_character":16},"in_reply_to":"fa69d971_a931320d","updated":"2016-01-11 08:27:06.000000000","message":"I agree, this already done however not in this patchset. You can find test for the planner here : \nhttps://review.openstack.org/#/c/264840/10/watcher/tests/decision_engine/planner/test_planner_manager.py\n\nI\u0027m waiting to have loadable actions in order to do the same. I also plan to use \ndef list_available of the class \u0027DefaultLoader\u0027 to load each endpoints available to test it.","commit_id":"ff8e2cdf0548708ed814567df7015cfaad0938c4"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"c90fd81994d776d3180aee5fbbcc1d76bcd92ed7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"fa69d971_bdde143c","line":46,"updated":"2016-01-11 13:18:29.000000000","message":"Add a test to verify raising of LoadingError Exception. Proposal: \n\nfrom watcher.common import exception\n\n\n    @mock.patch(\"watcher.common.loader.default.DriverManager\")\n    def test_load_driver_bad_plugin(self, m_driver_manager):\n        m_driver_manager.side_effect \u003d Exception()\n\n        loader_manager \u003d DefaultLoader(namespace\u003d\u0027TESTING\u0027)\n        self.assertRaises(\n            exception.LoadingError, loader_manager.load, name\u003d\u0027bad_driver\u0027)","commit_id":"b9f1964216f91ab6e85b78548a552d347f153213"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"af3e18a7dd2d2c6ed2c317118ba5e0e465234119","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"fa69d971_73944b8a","line":46,"in_reply_to":"fa69d971_bdde143c","updated":"2016-01-11 13:37:42.000000000","message":"Done","commit_id":"b9f1964216f91ab6e85b78548a552d347f153213"},{"author":{"_account_id":13289,"name":"Taylor Peoples","email":"tpeoples@us.ibm.com","username":"tpeoples"},"change_message_id":"846d81237d453f6e8f1169b9d49a3adcab674b5a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class TestLoader(BaseTestCase):"},{"line_number":31,"context_line":"    @mock.patch(\"watcher.common.loader.default.DriverManager\")"},{"line_number":32,"context_line":"    def test_load_driver_no_opt(self, m_driver_manager):"},{"line_number":33,"context_line":"        m_driver_manager.return_value \u003d DriverManager. \\"},{"line_number":34,"context_line":"            make_test_instance(extension\u003dExtension("},{"line_number":35,"context_line":"                name\u003dFakeLoadable.get_name(),"},{"line_number":36,"context_line":"                entry_point\u003d\"%s:%s\" % (FakeLoadable.__module__,"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_e8bb0674","line":33,"range":{"start_line":33,"start_character":53,"end_line":33,"end_character":56},"updated":"2016-01-12 04:26:05.000000000","message":"Ditto","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"b1801a2be2ce906cb5f2e6a5156202ef7f5014ec","unresolved":false,"context_lines":[{"line_number":30,"context_line":"class TestLoader(BaseTestCase):"},{"line_number":31,"context_line":"    @mock.patch(\"watcher.common.loader.default.DriverManager\")"},{"line_number":32,"context_line":"    def test_load_driver_no_opt(self, m_driver_manager):"},{"line_number":33,"context_line":"        m_driver_manager.return_value \u003d DriverManager. \\"},{"line_number":34,"context_line":"            make_test_instance(extension\u003dExtension("},{"line_number":35,"context_line":"                name\u003dFakeLoadable.get_name(),"},{"line_number":36,"context_line":"                entry_point\u003d\"%s:%s\" % (FakeLoadable.__module__,"}],"source_content_type":"text/x-python","patch_set":13,"id":"da6ed579_2087e910","line":33,"range":{"start_line":33,"start_character":53,"end_line":33,"end_character":56},"in_reply_to":"da6ed579_e8bb0674","updated":"2016-01-12 10:51:30.000000000","message":"Done","commit_id":"3699a2a74749e2bc58738f2b298682dd58141681"}]}
