)]}'
{"watcher/applier/execution/base.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e2099841bb02e5ab63b6f52e54889af07fc14d8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"da6ed579_ec405136","line":59,"updated":"2016-01-14 16:38:53.000000000","message":"maybe add :\n\n    @abc.abstractmethod\n    def execute(self, actions):\n        raise NotImplementedError()","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"bafab54795a51d981234a2c075d9428a5188398d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"da6ed579_38c9c326","line":59,"in_reply_to":"da6ed579_ec405136","updated":"2016-01-14 17:10:45.000000000","message":"good idea.","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"}],"watcher/applier/execution/default.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e2099841bb02e5ab63b6f52e54889af07fc14d8","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            try:"},{"line_number":38,"context_line":"                self.notify(action, action_plan.Status.ONGOING)"},{"line_number":39,"context_line":"                loaded_action \u003d self.action_factory.make_action(action)"},{"line_number":40,"context_line":"                result \u003d self.deploy.execute_primitive(loaded_action)"},{"line_number":41,"context_line":"                if result is False:"},{"line_number":42,"context_line":"                    self.notify(action, action_plan.Status.FAILED)"},{"line_number":43,"context_line":"                    self.deploy.rollback()"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_177132a8","line":40,"range":{"start_line":40,"start_character":16,"end_line":40,"end_character":22},"updated":"2016-01-14 16:38:53.000000000","message":"Why do not process a \"failed\" execution of an Action through an Exception raised ?","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"bafab54795a51d981234a2c075d9428a5188398d","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            try:"},{"line_number":38,"context_line":"                self.notify(action, action_plan.Status.ONGOING)"},{"line_number":39,"context_line":"                loaded_action \u003d self.action_factory.make_action(action)"},{"line_number":40,"context_line":"                result \u003d self.deploy.execute_primitive(loaded_action)"},{"line_number":41,"context_line":"                if result is False:"},{"line_number":42,"context_line":"                    self.notify(action, action_plan.Status.FAILED)"},{"line_number":43,"context_line":"                    self.deploy.rollback()"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_78917bf0","line":40,"range":{"start_line":40,"start_character":16,"end_line":40,"end_character":22},"in_reply_to":"da6ed579_177132a8","updated":"2016-01-14 17:10:45.000000000","message":"I don\u0027t want to waste my time on this because I will remove it with the integration of taskflow.\n\nThis is the next patchset:\nhttps://review.openstack.org/#/c/264142/","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e2099841bb02e5ab63b6f52e54889af07fc14d8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                result \u003d self.deploy.execute_primitive(loaded_action)"},{"line_number":41,"context_line":"                if result is False:"},{"line_number":42,"context_line":"                    self.notify(action, action_plan.Status.FAILED)"},{"line_number":43,"context_line":"                    self.deploy.rollback()"},{"line_number":44,"context_line":"                    return False"},{"line_number":45,"context_line":"                else:"},{"line_number":46,"context_line":"                    self.deploy.populate(loaded_action)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_acb9f916","line":43,"range":{"start_line":43,"start_character":0,"end_line":43,"end_character":42},"updated":"2016-01-14 16:38:53.000000000","message":"Can this rollback configurable in watcher conf ? maybe another bp ...","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"bafab54795a51d981234a2c075d9428a5188398d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                result \u003d self.deploy.execute_primitive(loaded_action)"},{"line_number":41,"context_line":"                if result is False:"},{"line_number":42,"context_line":"                    self.notify(action, action_plan.Status.FAILED)"},{"line_number":43,"context_line":"                    self.deploy.rollback()"},{"line_number":44,"context_line":"                    return False"},{"line_number":45,"context_line":"                else:"},{"line_number":46,"context_line":"                    self.deploy.populate(loaded_action)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_f86a4bec","line":43,"range":{"start_line":43,"start_character":0,"end_line":43,"end_character":42},"in_reply_to":"da6ed579_acb9f916","updated":"2016-01-14 17:10:45.000000000","message":"ditto","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e2099841bb02e5ab63b6f52e54889af07fc14d8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                    self.deploy.rollback()"},{"line_number":44,"context_line":"                    return False"},{"line_number":45,"context_line":"                else:"},{"line_number":46,"context_line":"                    self.deploy.populate(loaded_action)"},{"line_number":47,"context_line":"                    self.notify(action, action_plan.Status.SUCCEEDED)"},{"line_number":48,"context_line":"            except Exception as e:"},{"line_number":49,"context_line":"                LOG.debug(\u0027The ActionPlanExecutor failed to execute the action\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_0c6b65f2","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":55},"updated":"2016-01-14 16:38:53.000000000","message":"should this code be rather in applier/execution/deploy_phase.py  (in method execute_primitive)?","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"bafab54795a51d981234a2c075d9428a5188398d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                    self.deploy.rollback()"},{"line_number":44,"context_line":"                    return False"},{"line_number":45,"context_line":"                else:"},{"line_number":46,"context_line":"                    self.deploy.populate(loaded_action)"},{"line_number":47,"context_line":"                    self.notify(action, action_plan.Status.SUCCEEDED)"},{"line_number":48,"context_line":"            except Exception as e:"},{"line_number":49,"context_line":"                LOG.debug(\u0027The ActionPlanExecutor failed to execute the action\u0027"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_987c6fb6","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":55},"in_reply_to":"da6ed579_0c6b65f2","updated":"2016-01-14 17:10:45.000000000","message":"ditto","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"059a378a70a01b8e532f6ba5c4edfd40eabb8f5b","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                    self.notify(action, action_plan.Status.SUCCEEDED)"},{"line_number":48,"context_line":"            except Exception as e:"},{"line_number":49,"context_line":"                LOG.debug(\u0027The ActionPlanExecutor failed to execute the action\u0027"},{"line_number":50,"context_line":"                          \u0027 %s (%s) \u0027, action, unicode(e))"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"                LOG.error(_LE(\"Trigger a rollback\"))"},{"line_number":53,"context_line":"                self.notify(action, action_plan.Status.FAILED)"}],"source_content_type":"text/x-python","patch_set":19,"id":"da6ed579_107ee169","line":50,"range":{"start_line":50,"start_character":47,"end_line":50,"end_character":54},"updated":"2016-01-15 14:30:02.000000000","message":"Can you remove this: it\u0027s not python 3 compatible","commit_id":"5a2b593dc5d602137d6e19017afabdb8625650b7"}],"watcher/applier/primitives/factory.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e2099841bb02e5ab63b6f52e54889af07fc14d8","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def make_action(self, object_action):"},{"line_number":32,"context_line":"        LOG.debug(\"Creating instance of %s\", object_action.action_type)"},{"line_number":33,"context_line":"        loaded_action \u003d self.action_loader.load(name\u003dobject_action.action_type)"},{"line_number":34,"context_line":"        loaded_action.input_parameters \u003d object_action.input_parameters"},{"line_number":35,"context_line":"        loaded_action.applies_to \u003d object_action.applies_to"},{"line_number":36,"context_line":"        return loaded_action"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_521fb86b","line":33,"updated":"2016-01-14 16:38:53.000000000","message":"What happens when we have an action plan which schedules several actions with the same action type ? Is the associated action\u0027s driver loaded every time ?","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"bafab54795a51d981234a2c075d9428a5188398d","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def make_action(self, object_action):"},{"line_number":32,"context_line":"        LOG.debug(\"Creating instance of %s\", object_action.action_type)"},{"line_number":33,"context_line":"        loaded_action \u003d self.action_loader.load(name\u003dobject_action.action_type)"},{"line_number":34,"context_line":"        loaded_action.input_parameters \u003d object_action.input_parameters"},{"line_number":35,"context_line":"        loaded_action.applies_to \u003d object_action.applies_to"},{"line_number":36,"context_line":"        return loaded_action"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_2c918447","line":33,"in_reply_to":"da6ed579_521fb86b","updated":"2016-01-14 17:10:45.000000000","message":"IMHO, we have to instantiate at each time a new action because the action can have different parameters and the actions can be executed in parallel.","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"}],"watcher/applier/primitives/migration.py":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"62cc628324470309d25d565c22d96c921a394a13","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        wrapper \u003d nclient.NovaClient(keystone.get_credentials(),"},{"line_number":37,"context_line":"                                     session\u003dkeystone.get_session())"},{"line_number":38,"context_line":"        instance \u003d wrapper.find_instance(self.instance_uuid)"},{"line_number":39,"context_line":"        if instance:"},{"line_number":40,"context_line":"            if self.migration_type is \u0027live\u0027:"},{"line_number":41,"context_line":"                return wrapper.live_migrate_instance("},{"line_number":42,"context_line":"                    instance_id\u003dself.instance_uuid, dest_hostname\u003ddestination)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_3be67c15","line":39,"range":{"start_line":39,"start_character":11,"end_line":39,"end_character":19},"updated":"2016-01-15 08:30:33.000000000","message":"What if there is no instance?\nShouldn\u0027t it raise some exception as well ?","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"7d7873fdf4bcc4671f80e1fab87a6cdceecf7f4c","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        wrapper \u003d nclient.NovaClient(keystone.get_credentials(),"},{"line_number":37,"context_line":"                                     session\u003dkeystone.get_session())"},{"line_number":38,"context_line":"        instance \u003d wrapper.find_instance(self.instance_uuid)"},{"line_number":39,"context_line":"        if instance:"},{"line_number":40,"context_line":"            if self.migration_type is \u0027live\u0027:"},{"line_number":41,"context_line":"                return wrapper.live_migrate_instance("},{"line_number":42,"context_line":"                    instance_id\u003dself.instance_uuid, dest_hostname\u003ddestination)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_ac69d0fa","line":39,"range":{"start_line":39,"start_character":11,"end_line":39,"end_character":19},"in_reply_to":"da6ed579_3be67c15","updated":"2016-01-15 09:34:58.000000000","message":"Done","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"}],"watcher/tests/applier/execution/test_default_action_plan_executor.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e2099841bb02e5ab63b6f52e54889af07fc14d8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            \u0027action_plan_id\u0027: 0,"},{"line_number":43,"context_line":"            \u0027action_type\u0027: \"nop\","},{"line_number":44,"context_line":"            \u0027applies_to\u0027: \u0027\u0027,"},{"line_number":45,"context_line":"            \u0027input_parameters\u0027: {\u0027state\u0027: \u0027OFFLINE\u0027,"},{"line_number":46,"context_line":"                                 \u0027powet\u0027: \u0027powet\u0027},"},{"line_number":47,"context_line":"            \u0027state\u0027: objects.action.Status.PENDING,"},{"line_number":48,"context_line":"            \u0027alarm\u0027: None,"},{"line_number":49,"context_line":"            \u0027next\u0027: None,"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_ddcdf985","line":46,"range":{"start_line":45,"start_character":34,"end_line":46,"end_character":51},"updated":"2016-01-14 16:38:53.000000000","message":"parameter for NOP is only \u0027message\u0027, isn\u0027t it ?","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"bafab54795a51d981234a2c075d9428a5188398d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            \u0027action_plan_id\u0027: 0,"},{"line_number":43,"context_line":"            \u0027action_type\u0027: \"nop\","},{"line_number":44,"context_line":"            \u0027applies_to\u0027: \u0027\u0027,"},{"line_number":45,"context_line":"            \u0027input_parameters\u0027: {\u0027state\u0027: \u0027OFFLINE\u0027,"},{"line_number":46,"context_line":"                                 \u0027powet\u0027: \u0027powet\u0027},"},{"line_number":47,"context_line":"            \u0027state\u0027: objects.action.Status.PENDING,"},{"line_number":48,"context_line":"            \u0027alarm\u0027: None,"},{"line_number":49,"context_line":"            \u0027next\u0027: None,"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_6cc21c36","line":46,"range":{"start_line":45,"start_character":34,"end_line":46,"end_character":51},"in_reply_to":"da6ed579_ddcdf985","updated":"2016-01-14 17:10:45.000000000","message":"we don\u0027t have the schema yet :p \n\nWe still need to add https://pypi.python.org/pypi/schema","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"},{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"2e2099841bb02e5ab63b6f52e54889af07fc14d8","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        actions.append(objects.Action.get_by_uuid(self.context,"},{"line_number":55,"context_line":"                                                  action[\u0027uuid\u0027]))"},{"line_number":56,"context_line":"        result \u003d self.executor.execute(actions)"},{"line_number":57,"context_line":"        self.assertEqual(result, True)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_1d01516a","line":57,"updated":"2016-01-14 16:38:53.000000000","message":"maybe check that parameters are taken into account.","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"},{"author":{"_account_id":16495,"name":"Jean-Emile DARTOIS","email":"jean-emile.dartois@b-com.com","username":"JeD"},"change_message_id":"bafab54795a51d981234a2c075d9428a5188398d","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        actions.append(objects.Action.get_by_uuid(self.context,"},{"line_number":55,"context_line":"                                                  action[\u0027uuid\u0027]))"},{"line_number":56,"context_line":"        result \u003d self.executor.execute(actions)"},{"line_number":57,"context_line":"        self.assertEqual(result, True)"}],"source_content_type":"text/x-python","patch_set":18,"id":"da6ed579_8c53d038","line":57,"in_reply_to":"da6ed579_1d01516a","updated":"2016-01-14 17:10:45.000000000","message":"IMHO,it is already check by https://github.com/openstack/watcher/blob/master/watcher/tests/api/v1/test_actions.py#L88","commit_id":"080ae656f0e69d4fea179466dd74227ce50a75de"}]}
