)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"74e729c782519f729b650b9e583818dbe9ae1bc9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add action description"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add action get_type and get_description in class BaseAction."},{"line_number":10,"context_line":"This information will be sent to the API side via notification."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially Implements: blueprint dynamic-action-description"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bff0334d_d2ff4cff","line":9,"range":{"start_line":9,"start_character":11,"end_line":9,"end_character":19},"updated":"2017-04-06 20:51:50.000000000","message":"nit: not relevant anymore","commit_id":"663251810e4f2b5d870c6c7e91b1a385df5383f4"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"cbc45e6f534f2ada566a8a66dd388f0c2c545f2c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add action description"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Add action get_type and get_description in class BaseAction."},{"line_number":10,"context_line":"This information will be sent to the API side via notification."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partially Implements: blueprint dynamic-action-description"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"bff0334d_b35cc77e","line":9,"range":{"start_line":9,"start_character":11,"end_line":9,"end_character":19},"in_reply_to":"bff0334d_d2ff4cff","updated":"2017-04-07 00:46:41.000000000","message":"Done","commit_id":"663251810e4f2b5d870c6c7e91b1a385df5383f4"}],"watcher/applier/actions/base.py":[{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"8f9970e42be22b223c27d9fcbe94fa463c1a3f8d","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        return True"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @abc.abstractmethod"},{"line_number":134,"context_line":"    def get_type(self):"},{"line_number":135,"context_line":"        \"\"\"Type of the action\"\"\""},{"line_number":136,"context_line":"        raise NotImplementedError()"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_9a8ebd25","line":134,"range":{"start_line":134,"start_character":8,"end_line":134,"end_character":16},"updated":"2017-04-05 15:03:58.000000000","message":"IMHO, the \"type\" should come from the setup.cfg file which you can read via the the action loader (stevedore).\nIt should be the one making the mapping between them.\nIf you want to make this info trickle down within the class, you can update the Loadable base class to have a \"driver_name\"   that will be injected by the loader: this would have an impact on all other plugins though with quite a lot of code to modify. What do you think?","commit_id":"23d2529d60078224f8cff65f31dc995b6e1e422b"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"779bc62a19b720b0084000f0f718e0b5e4d9c4cb","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        return True"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @abc.abstractmethod"},{"line_number":134,"context_line":"    def get_type(self):"},{"line_number":135,"context_line":"        \"\"\"Type of the action\"\"\""},{"line_number":136,"context_line":"        raise NotImplementedError()"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bff0334d_c6aa0f84","line":134,"range":{"start_line":134,"start_character":8,"end_line":134,"end_character":16},"in_reply_to":"bff0334d_9a8ebd25","updated":"2017-04-06 09:32:41.000000000","message":"yes, you are right. \naction type can remove.\nThx!","commit_id":"23d2529d60078224f8cff65f31dc995b6e1e422b"},{"author":{"_account_id":18971,"name":"Vincent Françoise","email":"Vincent.FRANCOISE@b-com.com","username":"v-francoise"},"change_message_id":"cccabea5e38f082e31835f350f6fa211bfb7a948","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def validate_parameters(self):"},{"line_number":130,"context_line":"        self.schema(self.input_parameters)"},{"line_number":131,"context_line":"        return True"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @abc.abstractmethod"},{"line_number":134,"context_line":"    def get_description(self):"},{"line_number":135,"context_line":"        \"\"\"Description of the action\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_c655b9fb","line":132,"updated":"2017-04-12 07:24:49.000000000","message":"Since you removed the get_type() method, are you planning on adding the extra bit of code I was mentioning in my previous comment to do the type mapping?\nIf so, I would rather wait to see this 2nd changeset before merging this one.","commit_id":"2b0bb3a7b65a6e6952009d35b905240f943ced24"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"1db6255c05b2cca96f229f08b09cff58e4c4a191","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    def validate_parameters(self):"},{"line_number":130,"context_line":"        self.schema(self.input_parameters)"},{"line_number":131,"context_line":"        return True"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    @abc.abstractmethod"},{"line_number":134,"context_line":"    def get_description(self):"},{"line_number":135,"context_line":"        \"\"\"Description of the action\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_4653e9e2","line":132,"in_reply_to":"bff0334d_c655b9fb","updated":"2017-04-12 07:30:11.000000000","message":"Hi Vincent,\nthe 2nd changeset:https://review.openstack.org/#/c/454638/","commit_id":"2b0bb3a7b65a6e6952009d35b905240f943ced24"}],"watcher/applier/actions/change_nova_service_state.py":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"3f794a8bed1ad4bd4ffbd220f4338e390824255a","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def get_description(self):"},{"line_number":106,"context_line":"        \"\"\"Description of the action\"\"\""},{"line_number":107,"context_line":"        return (\"Disables or enables the nova-compute service.\""},{"line_number":108,"context_line":"                \"A disabled nova-compute service can not be selected \""},{"line_number":109,"context_line":"                \"by the nova for future deployment of new server.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_2c74f834","line":109,"range":{"start_line":107,"start_character":17,"end_line":109,"end_character":66},"updated":"2017-04-17 02:08:39.000000000","message":"This should be \n\u0027Change the state of Nova service state to %s for %s\u0027\n% (state, resource_id)\nfrom the approved spec\nhttps://specs.openstack.org/openstack/watcher-specs/specs/pike/approved/dynamic-action-description.html#work-items","commit_id":"e37e3c0159771e2e58d9d313c90ec90a236ec17c"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"93a77073d92c1c5f69beb2a6f30c73b06902d87c","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def get_description(self):"},{"line_number":106,"context_line":"        \"\"\"Description of the action\"\"\""},{"line_number":107,"context_line":"        return (\"Disables or enables the nova-compute service.\""},{"line_number":108,"context_line":"                \"A disabled nova-compute service can not be selected \""},{"line_number":109,"context_line":"                \"by the nova for future deployment of new server.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_f0249ec8","line":109,"range":{"start_line":107,"start_character":17,"end_line":109,"end_character":66},"in_reply_to":"7ffa3b31_10882ae5","updated":"2017-04-17 08:51:51.000000000","message":"Thanks, I understand we agreed using notification rather than DB.","commit_id":"e37e3c0159771e2e58d9d313c90ec90a236ec17c"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"e19ae150859ead802281baa2398feeb496136a2b","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def get_description(self):"},{"line_number":106,"context_line":"        \"\"\"Description of the action\"\"\""},{"line_number":107,"context_line":"        return (\"Disables or enables the nova-compute service.\""},{"line_number":108,"context_line":"                \"A disabled nova-compute service can not be selected \""},{"line_number":109,"context_line":"                \"by the nova for future deployment of new server.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_ae04787c","line":109,"range":{"start_line":107,"start_character":17,"end_line":109,"end_character":66},"in_reply_to":"7ffa3b31_2c74f834","updated":"2017-04-17 07:45:52.000000000","message":"spec is error. I will modify the spec.\nwhen applier loads action dynamically, it can not get the resource_id and state parameters.\nwe can not send such description through notifications. pls refer to: https://review.openstack.org/#/c/454638/","commit_id":"e37e3c0159771e2e58d9d313c90ec90a236ec17c"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"618ea3508426e2efb2ac902fe0af807fb5b4e2be","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def get_description(self):"},{"line_number":106,"context_line":"        \"\"\"Description of the action\"\"\""},{"line_number":107,"context_line":"        return (\"Disables or enables the nova-compute service.\""},{"line_number":108,"context_line":"                \"A disabled nova-compute service can not be selected \""},{"line_number":109,"context_line":"                \"by the nova for future deployment of new server.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_10882ae5","line":109,"range":{"start_line":107,"start_character":17,"end_line":109,"end_character":66},"in_reply_to":"7ffa3b31_704d2e71","updated":"2017-04-17 08:34:19.000000000","message":"DB or notification, Vincent had talk about this:\nhttps://review.openstack.org/#/c/401111/7/specs/ocata/approved/dynamic-action-description.rst","commit_id":"e37e3c0159771e2e58d9d313c90ec90a236ec17c"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"80e7c04fea7b06f735d7164eea54020a28257ad8","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def get_description(self):"},{"line_number":106,"context_line":"        \"\"\"Description of the action\"\"\""},{"line_number":107,"context_line":"        return (\"Disables or enables the nova-compute service.\""},{"line_number":108,"context_line":"                \"A disabled nova-compute service can not be selected \""},{"line_number":109,"context_line":"                \"by the nova for future deployment of new server.\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_704d2e71","line":109,"range":{"start_line":107,"start_character":17,"end_line":109,"end_character":66},"in_reply_to":"7ffa3b31_ae04787c","updated":"2017-04-17 08:05:31.000000000","message":"Apart from the spec, it is much simpler to use database for storing static description, I think.","commit_id":"e37e3c0159771e2e58d9d313c90ec90a236ec17c"}],"watcher/applier/actions/migration.py":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"3f794a8bed1ad4bd4ffbd220f4338e390824255a","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def get_description(self):"},{"line_number":177,"context_line":"        \"\"\"Description of the action\"\"\""},{"line_number":178,"context_line":"        return \"moving a VM instance from source_node to destination_node\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_ac88081f","line":178,"range":{"start_line":178,"start_character":16,"end_line":178,"end_character":73},"updated":"2017-04-17 02:08:39.000000000","message":"This should be \"%s migration of the instance %s from %s to %s’ % (\nmigration_type, resource_id, source_node, destination_node)\"\nfrom the approved spec.\nhttps://specs.openstack.org/openstack/watcher-specs/specs/pike/approved/dynamic-action-description.html#work-items","commit_id":"e37e3c0159771e2e58d9d313c90ec90a236ec17c"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"e19ae150859ead802281baa2398feeb496136a2b","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def get_description(self):"},{"line_number":177,"context_line":"        \"\"\"Description of the action\"\"\""},{"line_number":178,"context_line":"        return \"moving a VM instance from source_node to destination_node\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_ce0d8491","line":178,"range":{"start_line":178,"start_character":16,"end_line":178,"end_character":73},"in_reply_to":"7ffa3b31_ac88081f","updated":"2017-04-17 07:45:52.000000000","message":"spec is error. I will modify the spec.","commit_id":"e37e3c0159771e2e58d9d313c90ec90a236ec17c"}],"watcher/applier/actions/nop.py":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"3f794a8bed1ad4bd4ffbd220f4338e390824255a","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def get_description(self):"},{"line_number":70,"context_line":"        \"\"\"Description of the action\"\"\""},{"line_number":71,"context_line":"        return \"do nothing\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_6c9fa050","line":71,"range":{"start_line":71,"start_character":16,"end_line":71,"end_character":26},"updated":"2017-04-17 02:08:39.000000000","message":"This action is logging a message.","commit_id":"e37e3c0159771e2e58d9d313c90ec90a236ec17c"}],"watcher/applier/actions/resize.py":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"3f794a8bed1ad4bd4ffbd220f4338e390824255a","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def get_description(self):"},{"line_number":109,"context_line":"        \"\"\"Description of the action\"\"\""},{"line_number":110,"context_line":"        return \"Resize a server with specified flavor.\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_8cf9cc81","line":110,"range":{"start_line":110,"start_character":16,"end_line":110,"end_character":54},"updated":"2017-04-17 02:08:39.000000000","message":"Since this is dynamic description, could you write \"\u0027Resize a server %s with specified flavor %s\u0027 % (resource_id, flavor)\" or something like this?","commit_id":"e37e3c0159771e2e58d9d313c90ec90a236ec17c"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"e19ae150859ead802281baa2398feeb496136a2b","unresolved":false,"context_lines":[{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def get_description(self):"},{"line_number":109,"context_line":"        \"\"\"Description of the action\"\"\""},{"line_number":110,"context_line":"        return \"Resize a server with specified flavor.\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_0e06cc87","line":110,"range":{"start_line":110,"start_character":16,"end_line":110,"end_character":54},"in_reply_to":"7ffa3b31_8cf9cc81","updated":"2017-04-17 07:45:52.000000000","message":"actually, i think the bp is about dynamic action,not dynamic description.","commit_id":"e37e3c0159771e2e58d9d313c90ec90a236ec17c"}],"watcher/applier/actions/sleep.py":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"3f794a8bed1ad4bd4ffbd220f4338e390824255a","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_description(self):"},{"line_number":71,"context_line":"        \"\"\"Description of the action\"\"\""},{"line_number":72,"context_line":"        return \"Wait for a given interval in seconds.\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_8c278c13","line":72,"range":{"start_line":72,"start_character":27,"end_line":72,"end_character":32},"updated":"2017-04-17 02:08:39.000000000","message":"Since this is dynamic description, could you write \"\u0027Wait for a %s interval in seconds\u0027 % (duration)\" or something like this?","commit_id":"e37e3c0159771e2e58d9d313c90ec90a236ec17c"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"e19ae150859ead802281baa2398feeb496136a2b","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def get_description(self):"},{"line_number":71,"context_line":"        \"\"\"Description of the action\"\"\""},{"line_number":72,"context_line":"        return \"Wait for a given interval in seconds.\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_ee0a8088","line":72,"range":{"start_line":72,"start_character":27,"end_line":72,"end_character":32},"in_reply_to":"7ffa3b31_8c278c13","updated":"2017-04-17 07:45:52.000000000","message":"actually, i think the bp is about dynamic action,not dynamic description.","commit_id":"e37e3c0159771e2e58d9d313c90ec90a236ec17c"}]}
