)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":21361,"name":"Chris Spencer","email":"christopher.m.spencer@intel.com","username":"chrisspencer"},"change_message_id":"741b25f4c9b00f402496079ce767cc1c696bc2c8","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Added Actuator Strategy"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This strategy now allow us to create action plans with an excplicit"},{"line_number":10,"context_line":"set of actions."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I7b04b9936ce5f3b5b38f319da7f8737e0f3eea88"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ba2be162_051a576e","line":9,"range":{"start_line":9,"start_character":58,"end_line":9,"end_character":67},"updated":"2017-03-02 14:32:10.000000000","message":"s/excplicit/explicit","commit_id":"70a07bed2a1a786b8a53cd5974decd625cd08b52"}],"watcher/decision_engine/strategy/strategies/actuation.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"606f7804702e60e3e8a714ca587fbe66e235e6fd","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"This strategy allows anyone to create an action plan with a predefined set of"},{"line_number":21,"context_line":"actions. This strategy can be used for 2 different purposes:"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"- Test actions"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"\"\"\""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a461143_a71d71bf","line":23,"range":{"start_line":22,"start_character":0,"end_line":23,"end_character":14},"updated":"2017-01-25 17:19:13.000000000","message":"What is your second purpose ?\nPlease, add a nen section in the developer guide about it","commit_id":"e5fe98c5891545c7fe9d15575a5c697a4db644f5"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"395aececb3fd782ffc3c49baf8e6bca26037374d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                            }"},{"line_number":74,"context_line":"                        },"},{"line_number":75,"context_line":"                        \"required\": ["},{"line_number":76,"context_line":"                            \"action_type\", \"input_parameters\""},{"line_number":77,"context_line":"                        ],"},{"line_number":78,"context_line":"                        \"additionalProperties\": True,"},{"line_number":79,"context_line":"                    }"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff346bd7_edf029cc","line":76,"updated":"2017-07-25 01:39:04.000000000","message":"resource_id is required.","commit_id":"aa14f9692ba3188176265265e0da412ba63faf0c"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"91b5f8a7717d39307711d4454a6274e9e27dd410","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                            }"},{"line_number":74,"context_line":"                        },"},{"line_number":75,"context_line":"                        \"required\": ["},{"line_number":76,"context_line":"                            \"action_type\", \"input_parameters\""},{"line_number":77,"context_line":"                        ],"},{"line_number":78,"context_line":"                        \"additionalProperties\": True,"},{"line_number":79,"context_line":"                    }"}],"source_content_type":"text/x-python","patch_set":11,"id":"df3967d1_18a052f4","line":76,"in_reply_to":"ff346bd7_abc4be40","updated":"2017-07-31 23:42:11.000000000","message":"I got it.","commit_id":"aa14f9692ba3188176265265e0da412ba63faf0c"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"6d21b87c34377861e75a7578d554b40c7db1d6fe","unresolved":false,"context_lines":[{"line_number":73,"context_line":"                            }"},{"line_number":74,"context_line":"                        },"},{"line_number":75,"context_line":"                        \"required\": ["},{"line_number":76,"context_line":"                            \"action_type\", \"input_parameters\""},{"line_number":77,"context_line":"                        ],"},{"line_number":78,"context_line":"                        \"additionalProperties\": True,"},{"line_number":79,"context_line":"                    }"}],"source_content_type":"text/x-python","patch_set":11,"id":"ff346bd7_abc4be40","line":76,"in_reply_to":"ff346bd7_edf029cc","updated":"2017-07-28 08:38:08.000000000","message":"It isn\u0027t required field for such action types like nop, sleep.","commit_id":"aa14f9692ba3188176265265e0da412ba63faf0c"}],"watcher/tests/decision_engine/strategy/strategies/test_actuator.py":[{"author":{"_account_id":12394,"name":"David TARDIVEL","email":"David.TARDIVEL@b-com.com","username":"David.T"},"change_message_id":"606f7804702e60e3e8a714ca587fbe66e235e6fd","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        self.strategy \u003d strategies.Actuator(config\u003dmock.Mock())"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def test_actuator_strategy(self):"},{"line_number":32,"context_line":"        fake_action \u003d {\"action_type\": \"TEST\", \"input_parameters\": {\"a\": \"b\"}}"},{"line_number":33,"context_line":"        self.strategy.input_parameters \u003d utils.Struct("},{"line_number":34,"context_line":"            {\"actions\": [fake_action]})"},{"line_number":35,"context_line":"        solution \u003d self.strategy.execute()"}],"source_content_type":"text/x-python","patch_set":1,"id":"3a461143_82db031b","line":32,"range":{"start_line":32,"start_character":39,"end_line":32,"end_character":43},"updated":"2017-01-25 17:19:13.000000000","message":"IMHO, uppercase, and maybe use a real action: security_group rule_delete","commit_id":"e5fe98c5891545c7fe9d15575a5c697a4db644f5"}],"watcher_tempest_plugin/tests/scenario/test_execute_actuator.py":[{"author":{"_account_id":21361,"name":"Chris Spencer","email":"christopher.m.spencer@intel.com","username":"chrisspencer"},"change_message_id":"741b25f4c9b00f402496079ce767cc1c696bc2c8","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                \"action_type\": \"migrate\","},{"line_number":38,"context_line":"                \"input_parameters\": {"},{"line_number":39,"context_line":"                    \"migration_type\": \"live\","},{"line_number":40,"context_line":"                    \"resource_id\": \"TODO\","},{"line_number":41,"context_line":"                    \"source_node\": \"TODO\","},{"line_number":42,"context_line":"                    \"destination_node\": \"TODO\"}}]}),"},{"line_number":43,"context_line":"        (\"sleep\", {"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_e55623d1","line":40,"range":{"start_line":40,"start_character":36,"end_line":40,"end_character":40},"updated":"2017-03-02 14:32:10.000000000","message":"Are all of these TODO something that needs to be filled out properly?  If not, we should change to something other than TODO, maybe something like foo, test, or other value that people know is just filler","commit_id":"70a07bed2a1a786b8a53cd5974decd625cd08b52"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"c5ada5c2d012bc4c939335787d082b23b04fb50e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                \"action_type\": \"migrate\","},{"line_number":38,"context_line":"                \"input_parameters\": {"},{"line_number":39,"context_line":"                    \"migration_type\": \"live\","},{"line_number":40,"context_line":"                    \"resource_id\": \"TODO\","},{"line_number":41,"context_line":"                    \"source_node\": \"TODO\","},{"line_number":42,"context_line":"                    \"destination_node\": \"TODO\"}}]}),"},{"line_number":43,"context_line":"        (\"sleep\", {"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba2be162_487d46e6","line":40,"range":{"start_line":40,"start_character":36,"end_line":40,"end_character":40},"in_reply_to":"ba2be162_e55623d1","updated":"2017-03-02 14:46:50.000000000","message":"Thanks for noticing, they are real TODOs that I wrote more than a month ago that I didn\u0027t see when rebasing. it\u0027s because  we cannot specify a relevant resource ID before we actually create the instances. Will fix this.","commit_id":"70a07bed2a1a786b8a53cd5974decd625cd08b52"},{"author":{"_account_id":26034,"name":"Mikhail Kizilov","email":"kizilov.mikhail@gmail.com","username":"mkiz"},"change_message_id":"ce7f48d11a27549da9daf0b6c870f6076a2d105e","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestExecuteActionsViaActuator(base.BaseInfraOptimScenarioTest):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    scenarios \u003d ["},{"line_number":34,"context_line":"        # (\"nop\", {"},{"line_number":35,"context_line":"        #     \"actions\": [{"},{"line_number":36,"context_line":"        #         \"action_type\": \"nop\","},{"line_number":37,"context_line":"        #         \"input_parameters\": {{\"message\": \"hello World\"}}}]}),"},{"line_number":38,"context_line":"        # (\"migrate\", {"},{"line_number":39,"context_line":"        #     \"actions\": [{"},{"line_number":40,"context_line":"        #         \"action_type\": \"migrate\","},{"line_number":41,"context_line":"        #         \"input_parameters\": {"},{"line_number":42,"context_line":"        #             \"migration_type\": \"live\","},{"line_number":43,"context_line":"        #             \"resource_id\": \"TODO\","},{"line_number":44,"context_line":"        #             \"source_node\": \"TODO\","},{"line_number":45,"context_line":"        #             \"destination_node\": \"TODO\"}}]}),"},{"line_number":46,"context_line":"        # (\"sleep\", {"},{"line_number":47,"context_line":"        #     \"actions\": [{"},{"line_number":48,"context_line":"        #         \"action_type\": \"sleep\","},{"line_number":49,"context_line":"        #         \"input_parameters\": {\"duration\": 1}}]}),"},{"line_number":50,"context_line":"        # (\"change_nova_service_state\", {"},{"line_number":51,"context_line":"        #     \"actions\": [{"},{"line_number":52,"context_line":"        #         \"action_type\": \"change_nova_service_state\","},{"line_number":53,"context_line":"        #         \"input_parameters\": {"},{"line_number":54,"context_line":"        #             \"resource_id\": \"TODO\","},{"line_number":55,"context_line":"        #             \"state\": \"enabled\"}}]}),"},{"line_number":56,"context_line":"        (\"resize\", {"},{"line_number":57,"context_line":"            \"actions\": [{"},{"line_number":58,"context_line":"                \"action_type\": \"resize\","},{"line_number":59,"context_line":"                \"input_parameters\": {"},{"line_number":60,"context_line":"                    \"resource_id\": \"TODO\","},{"line_number":61,"context_line":"                    \"flavor\": \"TODO\"}}]}),"},{"line_number":62,"context_line":"    ]"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    @classmethod"},{"line_number":65,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3f1d235d_2aaa4b70","line":62,"range":{"start_line":33,"start_character":4,"end_line":62,"end_character":5},"updated":"2017-07-04 11:03:26.000000000","message":"What is the purpose of these scenarios in case we can\u0027t fill it with relevant info?","commit_id":"25cbea919b2d51507740e5deddb32d9004b51a5a"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"cf823ae9b5a7ee4bbc5edd99c5ccbc76dca7e4f8","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class TestExecuteActionsViaActuator(base.BaseInfraOptimScenarioTest):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    scenarios \u003d ["},{"line_number":34,"context_line":"        # (\"nop\", {"},{"line_number":35,"context_line":"        #     \"actions\": [{"},{"line_number":36,"context_line":"        #         \"action_type\": \"nop\","},{"line_number":37,"context_line":"        #         \"input_parameters\": {{\"message\": \"hello World\"}}}]}),"},{"line_number":38,"context_line":"        # (\"migrate\", {"},{"line_number":39,"context_line":"        #     \"actions\": [{"},{"line_number":40,"context_line":"        #         \"action_type\": \"migrate\","},{"line_number":41,"context_line":"        #         \"input_parameters\": {"},{"line_number":42,"context_line":"        #             \"migration_type\": \"live\","},{"line_number":43,"context_line":"        #             \"resource_id\": \"TODO\","},{"line_number":44,"context_line":"        #             \"source_node\": \"TODO\","},{"line_number":45,"context_line":"        #             \"destination_node\": \"TODO\"}}]}),"},{"line_number":46,"context_line":"        # (\"sleep\", {"},{"line_number":47,"context_line":"        #     \"actions\": [{"},{"line_number":48,"context_line":"        #         \"action_type\": \"sleep\","},{"line_number":49,"context_line":"        #         \"input_parameters\": {\"duration\": 1}}]}),"},{"line_number":50,"context_line":"        # (\"change_nova_service_state\", {"},{"line_number":51,"context_line":"        #     \"actions\": [{"},{"line_number":52,"context_line":"        #         \"action_type\": \"change_nova_service_state\","},{"line_number":53,"context_line":"        #         \"input_parameters\": {"},{"line_number":54,"context_line":"        #             \"resource_id\": \"TODO\","},{"line_number":55,"context_line":"        #             \"state\": \"enabled\"}}]}),"},{"line_number":56,"context_line":"        (\"resize\", {"},{"line_number":57,"context_line":"            \"actions\": [{"},{"line_number":58,"context_line":"                \"action_type\": \"resize\","},{"line_number":59,"context_line":"                \"input_parameters\": {"},{"line_number":60,"context_line":"                    \"resource_id\": \"TODO\","},{"line_number":61,"context_line":"                    \"flavor\": \"TODO\"}}]}),"},{"line_number":62,"context_line":"    ]"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    @classmethod"},{"line_number":65,"context_line":"    def resource_setup(cls):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f1a1f67_4de51ddc","line":62,"range":{"start_line":33,"start_character":4,"end_line":62,"end_character":5},"in_reply_to":"3f1d235d_2aaa4b70","updated":"2017-07-20 08:31:10.000000000","message":"Yeah it was WIP that I couldn\u0027t finish back then. It\u0027s great you\u0027ve picked it up! Thx!\nI actually looked at the code you did (currently w/ -1 jenkins) but it looks promising and exactly along the line of what I wanted to do :)","commit_id":"25cbea919b2d51507740e5deddb32d9004b51a5a"}]}
