)]}'
{"releasenotes/notes/cluster-maintenance-strategy-41f640927948fb56.yaml":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"66db57a145e8bdc90d9000f5eae3f5ecb845910a","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added a strategy for maintaining one compute node"},{"line_number":5,"context_line":"    without having the user\u0027s application been interruptted."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7f96bb07_7edffb0b","line":5,"range":{"start_line":5,"start_character":47,"end_line":5,"end_character":59},"updated":"2018-01-23 09:24:18.000000000","message":"interrupted","commit_id":"535b059f4ca6e0f89e0e785f8621fee63765b1c7"}],"releasenotes/notes/host-maintenance-strategy-41f640927948fb56.yaml":[{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"b8dfbd3bd918bf18334fcca0993bb1b25e8dc7d3","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Added a strategy for maintaining one compute node"},{"line_number":5,"context_line":"    without having the user\u0027s application been interruptted."},{"line_number":6,"context_line":"    It will firstly migrate all instances from the"},{"line_number":7,"context_line":"    maintenance node to one backup node. If not, it will"},{"line_number":8,"context_line":"    migrate all instances, relying on nova-schduler."}],"source_content_type":"text/x-yaml","patch_set":12,"id":"bf659307_cbf4c7f3","line":7,"range":{"start_line":7,"start_character":41,"end_line":7,"end_character":47},"updated":"2018-04-03 02:30:39.000000000","message":"If not what?  no backup node?","commit_id":"aa2edfacaa898bab617ea8074646c83199b424b8"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"0d02070ef48d81aef662139703fb5ed9520e494b","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added a strategy for maintaining one compute node"},{"line_number":5,"context_line":"    without having the user\u0027s application been interruptted."},{"line_number":6,"context_line":"    It will firstly migrate all instances from the"},{"line_number":7,"context_line":"    maintenance node to one backup node. If not, it will"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9f6a8fd7_363096e8","line":4,"updated":"2018-04-20 06:40:27.000000000","message":"IMHO, its better to write \nAdded a strategy for one compute node maintenance","commit_id":"0855b3ad985572b9d264079ca62337eab4c9d575"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"0d02070ef48d81aef662139703fb5ed9520e494b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Added a strategy for maintaining one compute node"},{"line_number":5,"context_line":"    without having the user\u0027s application been interruptted."},{"line_number":6,"context_line":"    It will firstly migrate all instances from the"},{"line_number":7,"context_line":"    maintenance node to one backup node. If not, it will"},{"line_number":8,"context_line":"    migrate all instances, relying on nova-schduler."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9f6a8fd7_763a8ecc","line":7,"updated":"2018-04-20 06:40:27.000000000","message":"Please make it clear in release not, that who will provide the backup node, and if not provided it will rely on nova-scheduler.","commit_id":"0855b3ad985572b9d264079ca62337eab4c9d575"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"836e366b658a5ef706af4934543b7da87303b4ad","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    without having the user\u0027s application been interruptted."},{"line_number":6,"context_line":"    It will firstly migrate all instances from the"},{"line_number":7,"context_line":"    maintenance node to one backup node. If not, it will"},{"line_number":8,"context_line":"    migrate all instances, relying on nova-schduler."}],"source_content_type":"text/x-yaml","patch_set":13,"id":"9f6a8fd7_5bd1b322","line":8,"range":{"start_line":8,"start_character":43,"end_line":8,"end_character":51},"updated":"2018-04-20 05:42:35.000000000","message":"s/schduler/scheduler","commit_id":"0855b3ad985572b9d264079ca62337eab4c9d575"}],"watcher/decision_engine/goal/goals.py":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"66db57a145e8bdc90d9000f5eae3f5ecb845910a","unresolved":false,"context_lines":[{"line_number":222,"context_line":"    \"\"\"ClusterMaintenance"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    This goal is used to maintain compute nodes"},{"line_number":225,"context_line":"    without having the user\u0027s application being interupted."},{"line_number":226,"context_line":"    \"\"\""},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_1e0d978f","line":225,"range":{"start_line":225,"start_character":48,"end_line":225,"end_character":58},"updated":"2018-01-23 09:24:18.000000000","message":"interrupted","commit_id":"535b059f4ca6e0f89e0e785f8621fee63765b1c7"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"836e366b658a5ef706af4934543b7da87303b4ad","unresolved":false,"context_lines":[{"line_number":247,"context_line":"    \"\"\"ClusterMaintenance"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    This goal is used to maintain compute nodes"},{"line_number":250,"context_line":"    without having the user\u0027s application being interupted."},{"line_number":251,"context_line":"    \"\"\""},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":13,"id":"9f6a8fd7_3b687f85","line":250,"range":{"start_line":250,"start_character":48,"end_line":250,"end_character":58},"updated":"2018-04-20 05:42:35.000000000","message":"s/interupted/interrupted","commit_id":"0855b3ad985572b9d264079ca62337eab4c9d575"}],"watcher/decision_engine/strategy/strategies/cluster_maintenance.py":[{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"66db57a145e8bdc90d9000f5eae3f5ecb845910a","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                                             reason\u003dreason)\r"},{"line_number":319,"context_line":"\r"},{"line_number":320,"context_line":"    def pre_execute(self):\r"},{"line_number":321,"context_line":"        if not self.compute_model:\r"},{"line_number":322,"context_line":"            raise wexc.ClusterStateNotDefined()\r"},{"line_number":323,"context_line":"\r"},{"line_number":324,"context_line":"        if self.compute_model.stale:\r"},{"line_number":325,"context_line":"            raise wexc.ClusterStateStale()\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_39598d34","line":322,"range":{"start_line":321,"start_character":8,"end_line":322,"end_character":47},"updated":"2018-01-23 09:24:18.000000000","message":"This is needless. It\u0027s same as https://github.com/openstack/watcher/blob/master/watcher/decision_engine/strategy/strategies/base.py#L193-L194","commit_id":"535b059f4ca6e0f89e0e785f8621fee63765b1c7"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"66db57a145e8bdc90d9000f5eae3f5ecb845910a","unresolved":false,"context_lines":[{"line_number":321,"context_line":"        if not self.compute_model:\r"},{"line_number":322,"context_line":"            raise wexc.ClusterStateNotDefined()\r"},{"line_number":323,"context_line":"\r"},{"line_number":324,"context_line":"        if self.compute_model.stale:\r"},{"line_number":325,"context_line":"            raise wexc.ClusterStateStale()\r"},{"line_number":326,"context_line":"\r"},{"line_number":327,"context_line":"        LOG.debug(self.compute_model.to_string())\r"},{"line_number":328,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_196ff1c5","line":325,"range":{"start_line":324,"start_character":8,"end_line":325,"end_character":42},"updated":"2018-01-23 09:24:18.000000000","message":"This is needless.\nIt is same as\nhttps://github.com/openstack/watcher/blob/master/watcher/decision_engine/strategy/strategies/base.py#L196-L197","commit_id":"535b059f4ca6e0f89e0e785f8621fee63765b1c7"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"66db57a145e8bdc90d9000f5eae3f5ecb845910a","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        LOG.info(_(\u0027Executing Cluster Maintenance Migration Strategy\u0027))\r"},{"line_number":331,"context_line":"\r"},{"line_number":332,"context_line":"        node \u003d self.input_parameters.node\r"},{"line_number":333,"context_line":"        if not node:\r"},{"line_number":334,"context_line":"            LOG.debug(\"Please input the hostname which one needs maintenance\")\r"},{"line_number":335,"context_line":"            return\r"},{"line_number":336,"context_line":"\r"},{"line_number":337,"context_line":"        maintenance_node \u003d self.compute_model.get_node_by_uuid(node)\r"},{"line_number":338,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":6,"id":"7f96bb07_79bab5c0","line":335,"range":{"start_line":333,"start_character":8,"end_line":335,"end_character":18},"updated":"2018-01-23 09:24:18.000000000","message":"if you can check whether node is empty or not, you can use jsonschema validation.\nhttp://json-schema.org/latest/json-schema-validation.html#rfc.section.6.5.3\n\nExample is here: http://json-schema.org/example1.html","commit_id":"535b059f4ca6e0f89e0e785f8621fee63765b1c7"}],"watcher/decision_engine/strategy/strategies/host_maintenance.py":[{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"b8dfbd3bd918bf18334fcca0993bb1b25e8dc7d3","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        return {\r"},{"line_number":55,"context_line":"            \"properties\": {\r"},{"line_number":56,"context_line":"                \"maintenance_node\": {\r"},{"line_number":57,"context_line":"                    \"description\": \"The hostname which need maintenance\",\r"},{"line_number":58,"context_line":"                    \"type\": \"string\",\r"},{"line_number":59,"context_line":"                    \"default\": \"\",\r"},{"line_number":60,"context_line":"                },\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"bf659307_abcab39d","line":57,"range":{"start_line":57,"start_character":40,"end_line":57,"end_character":48},"updated":"2018-04-03 02:30:39.000000000","message":"name of compute node?","commit_id":"aa2edfacaa898bab617ea8074646c83199b424b8"},{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"ccc737b921582bddf6b4b7fe8ea532d7d7afce8c","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        return {\r"},{"line_number":55,"context_line":"            \"properties\": {\r"},{"line_number":56,"context_line":"                \"maintenance_node\": {\r"},{"line_number":57,"context_line":"                    \"description\": \"The hostname which need maintenance\",\r"},{"line_number":58,"context_line":"                    \"type\": \"string\",\r"},{"line_number":59,"context_line":"                    \"default\": \"\",\r"},{"line_number":60,"context_line":"                },\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_55e6bb18","line":57,"range":{"start_line":57,"start_character":40,"end_line":57,"end_character":48},"in_reply_to":"bf659307_abcab39d","updated":"2018-04-17 08:52:19.000000000","message":"Done","commit_id":"aa2edfacaa898bab617ea8074646c83199b424b8"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"b8dfbd3bd918bf18334fcca0993bb1b25e8dc7d3","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                    \"default\": \"\",\r"},{"line_number":60,"context_line":"                },\r"},{"line_number":61,"context_line":"                \"backup_node\": {\r"},{"line_number":62,"context_line":"                    \"description\": \"The hostname which will backup \"\r"},{"line_number":63,"context_line":"                                   \"the maintenance node.\",\r"},{"line_number":64,"context_line":"                    \"type\": \"string\",\r"},{"line_number":65,"context_line":"                    \"default\": \"\",\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"bf659307_2bbea3fe","line":62,"range":{"start_line":62,"start_character":40,"end_line":62,"end_character":48},"updated":"2018-04-03 02:30:39.000000000","message":"ditto","commit_id":"aa2edfacaa898bab617ea8074646c83199b424b8"},{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"ccc737b921582bddf6b4b7fe8ea532d7d7afce8c","unresolved":false,"context_lines":[{"line_number":59,"context_line":"                    \"default\": \"\",\r"},{"line_number":60,"context_line":"                },\r"},{"line_number":61,"context_line":"                \"backup_node\": {\r"},{"line_number":62,"context_line":"                    \"description\": \"The hostname which will backup \"\r"},{"line_number":63,"context_line":"                                   \"the maintenance node.\",\r"},{"line_number":64,"context_line":"                    \"type\": \"string\",\r"},{"line_number":65,"context_line":"                    \"default\": \"\",\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_d5bbabe2","line":62,"range":{"start_line":62,"start_character":40,"end_line":62,"end_character":48},"in_reply_to":"bf659307_2bbea3fe","updated":"2018-04-17 08:52:19.000000000","message":"Done","commit_id":"aa2edfacaa898bab617ea8074646c83199b424b8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"ea165fa2eca7bd0d20bc83a2960097746d7dfb64","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    \"type\": \"string\",\r"},{"line_number":65,"context_line":"                    \"default\": \"\",\r"},{"line_number":66,"context_line":"                },\r"},{"line_number":67,"context_line":"            },\r"},{"line_number":68,"context_line":"        }\r"},{"line_number":69,"context_line":"\r"},{"line_number":70,"context_line":"    def get_disabled_compute_nodes_with_reason(self, reason\u003dNone):\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"bf659307_73710244","line":67,"updated":"2018-04-02 02:16:36.000000000","message":"If maintenance_node and backup_node is mandatory parameter, it is better to use \"required\": [\"maintenance_node\", backup_node] instead of default.\nIf this strategy does not accept other paremeters, it is better to use \"additionalProperties\": False.","commit_id":"aa2edfacaa898bab617ea8074646c83199b424b8"},{"author":{"_account_id":24501,"name":"sue","display_name":"suzhengwei","email":"sugar-2008@163.com","username":"suzhengwei"},"change_message_id":"ccc737b921582bddf6b4b7fe8ea532d7d7afce8c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    \"type\": \"string\",\r"},{"line_number":65,"context_line":"                    \"default\": \"\",\r"},{"line_number":66,"context_line":"                },\r"},{"line_number":67,"context_line":"            },\r"},{"line_number":68,"context_line":"        }\r"},{"line_number":69,"context_line":"\r"},{"line_number":70,"context_line":"    def get_disabled_compute_nodes_with_reason(self, reason\u003dNone):\r"}],"source_content_type":"text/x-python","patch_set":12,"id":"9f6a8fd7_f5c02f53","line":67,"in_reply_to":"bf659307_73710244","updated":"2018-04-17 08:52:19.000000000","message":"Done","commit_id":"aa2edfacaa898bab617ea8074646c83199b424b8"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"836e366b658a5ef706af4934543b7da87303b4ad","unresolved":false,"context_lines":[{"line_number":29,"context_line":"\r"},{"line_number":30,"context_line":"\r"},{"line_number":31,"context_line":"class HostMaintenance(base.HostMaintenanceBaseStrategy):\r"},{"line_number":32,"context_line":"    \"\"\"Host Maintenance\"\"\"\r"},{"line_number":33,"context_line":"    INSTANCE_MIGRATION \u003d \"migrate\"\r"},{"line_number":34,"context_line":"    CHANGE_NOVA_SERVICE_STATE \u003d \"change_nova_service_state\"\r"},{"line_number":35,"context_line":"    REASON_FOR_DISABLE \u003d \u0027watcher_disabled\u0027\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"9f6a8fd7_fbc20759","line":32,"range":{"start_line":32,"start_character":7,"end_line":32,"end_character":23},"updated":"2018-04-20 05:42:35.000000000","message":"It\u0027s better to add a resume for your strategy.\npls refer to others.","commit_id":"0855b3ad985572b9d264079ca62337eab4c9d575"},{"author":{"_account_id":21692,"name":"licanwei","email":"li.canwei2@zte.com.cn","username":"licanwei"},"change_message_id":"836e366b658a5ef706af4934543b7da87303b4ad","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        backup host. If users didn\u0027t give the backup host, it will select\r"},{"line_number":224,"context_line":"        one unused node to backup the maintaining node.\r"},{"line_number":225,"context_line":"\r"},{"line_number":226,"context_line":"        It Calculate the resource both of the backup node and maintaining\r"},{"line_number":227,"context_line":"        node to evaluate the migrations from maintaining node to backup node.\r"},{"line_number":228,"context_line":"        If all instances of the maintaining node can migrated to\r"},{"line_number":229,"context_line":"        the backup node, it will set the maintaining node in\r"}],"source_content_type":"text/x-python","patch_set":13,"id":"9f6a8fd7_5b23f356","line":226,"range":{"start_line":226,"start_character":11,"end_line":226,"end_character":20},"updated":"2018-04-20 05:42:35.000000000","message":"calculates","commit_id":"0855b3ad985572b9d264079ca62337eab4c9d575"}]}
