)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"5f293cecef178b9a727c2f65b4c3f37d1ef957a9","unresolved":false,"context_lines":[{"line_number":12,"context_line":"updating the k8s cluster health status via the Magnum cluster"},{"line_number":13,"context_line":"update API by a 3rd party service so that a controller (e.g."},{"line_number":14,"context_line":"magnum-auto-healer) running inside the k8s cluster can call"},{"line_number":15,"context_line":"the Mangum update API to update the cluster health status."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Task: 38583"},{"line_number":18,"context_line":"Story: 2007242"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"df33271e_f2d89f1e","line":15,"range":{"start_line":15,"start_character":4,"end_line":15,"end_character":10},"updated":"2020-04-03 09:00:14.000000000","message":"Magnum","commit_id":"b8f8690659c89c24e32c13c1d80570f1091d56e7"}],"doc/source/user/k8s-health-monitoring.rst":[{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"ef76d31451281f46904e829186041f7ce03d97b5","unresolved":false,"context_lines":[{"line_number":1,"context_line":"Currently Magnum can support health monitoring for Kubernetes cluster. There"},{"line_number":2,"context_line":"are two scenarios supported now: internal and external."},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"External Health Montorning"},{"line_number":5,"context_line":"--------------------------"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Technically, now any 3rd service can call Magnum cluster update API to update"}],"source_content_type":"text/x-rst","patch_set":11,"id":"df33271e_9a085d92","line":4,"range":{"start_line":4,"start_character":0,"end_line":4,"end_character":26},"updated":"2020-04-02 13:53:54.000000000","message":"this should be the second topic as this is opt-in and only available when magnum_auto_healer is enabled.","commit_id":"6fff9b5b2a0531bf18268a6203b033ce495ff577"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"ef76d31451281f46904e829186041f7ce03d97b5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"External Health Montorning"},{"line_number":5,"context_line":"--------------------------"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Technically, now any 3rd service can call Magnum cluster update API to update"},{"line_number":8,"context_line":"the `health_status` and `health_status_reason` attributes. The health_status"},{"line_number":9,"context_line":"attribute can only be value in `HEALTHY`, `UNHEALTHY` or `UNKNOWN`. And the"},{"line_number":10,"context_line":"health_status_reason is a dictionray which includes key-pairs to help explain"}],"source_content_type":"text/x-rst","patch_set":11,"id":"df33271e_3abf91aa","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":36},"updated":"2020-04-02 13:53:54.000000000","message":"Any third party service can now...","commit_id":"6fff9b5b2a0531bf18268a6203b033ce495ff577"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"ef76d31451281f46904e829186041f7ce03d97b5","unresolved":false,"context_lines":[{"line_number":10,"context_line":"health_status_reason is a dictionray which includes key-pairs to help explain"},{"line_number":11,"context_line":"the current health status."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Internal Health Monitoring"},{"line_number":14,"context_line":"--------------------------"},{"line_number":15,"context_line":"Magnum has a periodic job to poll the k8s cluster if it\u0027s a reachable cluster."},{"line_number":16,"context_line":"If the floating IP is enabled, or the master loadbalancer is enabled and the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"df33271e_3aa671ac","line":13,"range":{"start_line":13,"start_character":0,"end_line":13,"end_character":26},"updated":"2020-04-02 13:53:54.000000000","message":"this should come first as this is the status quo","commit_id":"6fff9b5b2a0531bf18268a6203b033ce495ff577"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"ef76d31451281f46904e829186041f7ce03d97b5","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Internal Health Monitoring"},{"line_number":14,"context_line":"--------------------------"},{"line_number":15,"context_line":"Magnum has a periodic job to poll the k8s cluster if it\u0027s a reachable cluster."},{"line_number":16,"context_line":"If the floating IP is enabled, or the master loadbalancer is enabled and the"},{"line_number":17,"context_line":"master loadbalancer has floating IP associated, then Magnum will take this"},{"line_number":18,"context_line":"cluster as reachable. Then Magnum will call the k8s API per 10 seconds to poll"}],"source_content_type":"text/x-rst","patch_set":11,"id":"df33271e_5a9d3564","line":15,"range":{"start_line":15,"start_character":53,"end_line":15,"end_character":57},"updated":"2020-04-02 13:53:54.000000000","message":"it is","commit_id":"6fff9b5b2a0531bf18268a6203b033ce495ff577"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"e30b8f2ec3e9be0484e7d5597bf5f71783d54595","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Internal Health Monitoring"},{"line_number":14,"context_line":"--------------------------"},{"line_number":15,"context_line":"Magnum has a periodic job to poll the k8s cluster if it\u0027s a reachable cluster."},{"line_number":16,"context_line":"If the floating IP is enabled, or the master loadbalancer is enabled and the"},{"line_number":17,"context_line":"master loadbalancer has floating IP associated, then Magnum will take this"},{"line_number":18,"context_line":"cluster as reachable. Then Magnum will call the k8s API per 10 seconds to poll"}],"source_content_type":"text/x-rst","patch_set":11,"id":"df33271e_1c2d5fa7","line":15,"range":{"start_line":15,"start_character":53,"end_line":15,"end_character":57},"in_reply_to":"df33271e_5a9d3564","updated":"2020-04-02 23:02:16.000000000","message":"I will address all above comments in next ps.","commit_id":"6fff9b5b2a0531bf18268a6203b033ce495ff577"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"5f293cecef178b9a727c2f65b4c3f37d1ef957a9","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Currently, only `magnum-auto-healer"},{"line_number":18,"context_line":"\u003chttps://github.com/kubernetes/cloud-provider-openstack/tree/master/pkg/autohealing\u003e`_"},{"line_number":19,"context_line":"can be allowed to update cluster\u0027s `health_status` and `health_status_reason`"},{"line_number":20,"context_line":"attributes. Otherwise, the two attributes\u0027 value will be overwritten with"},{"line_number":21,"context_line":"\u0027UNKNOWN\u0027 and \u0027The cluster is not accessible\u0027. Both the"},{"line_number":22,"context_line":"label `auto_healing_enabled\u003dTrue` and"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df33271e_55b335e9","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":14},"updated":"2020-04-03 09:00:14.000000000","message":"nit: is able","commit_id":"b8f8690659c89c24e32c13c1d80570f1091d56e7"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a3f2216098f62f6e57ea8724080b7f3ae7bbe901","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Currently, only `magnum-auto-healer"},{"line_number":18,"context_line":"\u003chttps://github.com/kubernetes/cloud-provider-openstack/tree/master/pkg/autohealing\u003e`_"},{"line_number":19,"context_line":"can be allowed to update cluster\u0027s `health_status` and `health_status_reason`"},{"line_number":20,"context_line":"attributes. Otherwise, the two attributes\u0027 value will be overwritten with"},{"line_number":21,"context_line":"\u0027UNKNOWN\u0027 and \u0027The cluster is not accessible\u0027. Both the"},{"line_number":22,"context_line":"label `auto_healing_enabled\u003dTrue` and"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df33271e_2c23a8c0","line":19,"range":{"start_line":19,"start_character":0,"end_line":19,"end_character":14},"in_reply_to":"df33271e_55b335e9","updated":"2020-04-09 04:14:40.000000000","message":"Done","commit_id":"b8f8690659c89c24e32c13c1d80570f1091d56e7"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"5f293cecef178b9a727c2f65b4c3f37d1ef957a9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Currently, only `magnum-auto-healer"},{"line_number":18,"context_line":"\u003chttps://github.com/kubernetes/cloud-provider-openstack/tree/master/pkg/autohealing\u003e`_"},{"line_number":19,"context_line":"can be allowed to update cluster\u0027s `health_status` and `health_status_reason`"},{"line_number":20,"context_line":"attributes. Otherwise, the two attributes\u0027 value will be overwritten with"},{"line_number":21,"context_line":"\u0027UNKNOWN\u0027 and \u0027The cluster is not accessible\u0027. Both the"},{"line_number":22,"context_line":"label `auto_healing_enabled\u003dTrue` and"},{"line_number":23,"context_line":"`auto_healing_controller\u003dmagnum-auto-healer`"},{"line_number":24,"context_line":"must be set. The health_status attribute can only be value in `HEALTHY`,"},{"line_number":25,"context_line":"`UNHEALTHY` or `UNKNOWN`. And the health_status_reason is a dictionray which"},{"line_number":26,"context_line":"includes key-pairs to help explain the current health status."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df33271e_7533d962","line":24,"range":{"start_line":20,"start_character":12,"end_line":24,"end_character":12},"updated":"2020-04-03 09:00:14.000000000","message":"Both the\nlabel `auto_healing_enabled\u003dTrue` and\n`auto_healing_controller\u003dmagnum-auto-healer`\nmust be set otherwise the two attributes\u0027 value will be overwritten with\n\u0027UNKNOWN\u0027 and \u0027The cluster is not accessible\u0027 by the internal API poller.","commit_id":"b8f8690659c89c24e32c13c1d80570f1091d56e7"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"5f293cecef178b9a727c2f65b4c3f37d1ef957a9","unresolved":false,"context_lines":[{"line_number":21,"context_line":"\u0027UNKNOWN\u0027 and \u0027The cluster is not accessible\u0027. Both the"},{"line_number":22,"context_line":"label `auto_healing_enabled\u003dTrue` and"},{"line_number":23,"context_line":"`auto_healing_controller\u003dmagnum-auto-healer`"},{"line_number":24,"context_line":"must be set. The health_status attribute can only be value in `HEALTHY`,"},{"line_number":25,"context_line":"`UNHEALTHY` or `UNKNOWN`. And the health_status_reason is a dictionray which"},{"line_number":26,"context_line":"includes key-pairs to help explain the current health status."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df33271e_758119c3","line":24,"range":{"start_line":24,"start_character":45,"end_line":24,"end_character":61},"updated":"2020-04-03 09:00:14.000000000","message":"nit: either be","commit_id":"b8f8690659c89c24e32c13c1d80570f1091d56e7"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"5f293cecef178b9a727c2f65b4c3f37d1ef957a9","unresolved":false,"context_lines":[{"line_number":22,"context_line":"label `auto_healing_enabled\u003dTrue` and"},{"line_number":23,"context_line":"`auto_healing_controller\u003dmagnum-auto-healer`"},{"line_number":24,"context_line":"must be set. The health_status attribute can only be value in `HEALTHY`,"},{"line_number":25,"context_line":"`UNHEALTHY` or `UNKNOWN`. And the health_status_reason is a dictionray which"},{"line_number":26,"context_line":"includes key-pairs to help explain the current health status."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df33271e_d58bc5bc","line":25,"range":{"start_line":25,"start_character":24,"end_line":25,"end_character":33},"updated":"2020-04-03 09:00:14.000000000","message":"and the","commit_id":"b8f8690659c89c24e32c13c1d80570f1091d56e7"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"5f293cecef178b9a727c2f65b4c3f37d1ef957a9","unresolved":false,"context_lines":[{"line_number":22,"context_line":"label `auto_healing_enabled\u003dTrue` and"},{"line_number":23,"context_line":"`auto_healing_controller\u003dmagnum-auto-healer`"},{"line_number":24,"context_line":"must be set. The health_status attribute can only be value in `HEALTHY`,"},{"line_number":25,"context_line":"`UNHEALTHY` or `UNKNOWN`. And the health_status_reason is a dictionray which"},{"line_number":26,"context_line":"includes key-pairs to help explain the current health status."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df33271e_759d9908","line":25,"range":{"start_line":25,"start_character":60,"end_line":25,"end_character":70},"updated":"2020-04-03 09:00:14.000000000","message":"dictionary","commit_id":"b8f8690659c89c24e32c13c1d80570f1091d56e7"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"5f293cecef178b9a727c2f65b4c3f37d1ef957a9","unresolved":false,"context_lines":[{"line_number":22,"context_line":"label `auto_healing_enabled\u003dTrue` and"},{"line_number":23,"context_line":"`auto_healing_controller\u003dmagnum-auto-healer`"},{"line_number":24,"context_line":"must be set. The health_status attribute can only be value in `HEALTHY`,"},{"line_number":25,"context_line":"`UNHEALTHY` or `UNKNOWN`. And the health_status_reason is a dictionray which"},{"line_number":26,"context_line":"includes key-pairs to help explain the current health status."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"df33271e_3565d11e","line":26,"range":{"start_line":25,"start_character":71,"end_line":26,"end_character":18},"updated":"2020-04-03 09:00:14.000000000","message":"of hostnames and their current health statuses.","commit_id":"b8f8690659c89c24e32c13c1d80570f1091d56e7"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"e0005396d2134609b5e6c8f5a50b0a46c2a63897","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Magnum has a periodic job to poll the k8s cluster if it is a reachable cluster."},{"line_number":8,"context_line":"If the floating IP is enabled, or the master loadbalancer is enabled and the"},{"line_number":9,"context_line":"master loadbalancer has floating IP associated, then Magnum will take this"},{"line_number":10,"context_line":"cluster as reachable. Then Magnum will call the k8s API per 10 seconds to poll"},{"line_number":11,"context_line":"the health status of the cluster and then update the two attributes:"},{"line_number":12,"context_line":"`health_status` and `health_status_reason`."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"df33271e_5ecbe848","line":10,"range":{"start_line":10,"start_character":60,"end_line":10,"end_character":70},"updated":"2020-04-08 10:31:28.000000000","message":"FYI, this is very bad. For large deployments like ours with 100s of clusters. This is just the doc, I know.","commit_id":"adeffb57b68754343f56e376a3c00e4a80cf7eed"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"e19e132f20d6e18f84f89c5e8b028ce4614d9c81","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Magnum has a periodic job to poll the k8s cluster if it is a reachable cluster."},{"line_number":8,"context_line":"If the floating IP is enabled, or the master loadbalancer is enabled and the"},{"line_number":9,"context_line":"master loadbalancer has floating IP associated, then Magnum will take this"},{"line_number":10,"context_line":"cluster as reachable. Then Magnum will call the k8s API per 10 seconds to poll"},{"line_number":11,"context_line":"the health status of the cluster and then update the two attributes:"},{"line_number":12,"context_line":"`health_status` and `health_status_reason`."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"df33271e_a145b545","line":10,"range":{"start_line":10,"start_character":60,"end_line":10,"end_character":70},"in_reply_to":"df33271e_1ea2004c","updated":"2020-04-08 10:55:35.000000000","message":"What is the purpose of this clarification? I said \"This is just the doc, I know.\" Are you implying that I don\u0027t know which is the current bad behavour?\n\nAlso please comment on my other comments that need addressing, this was the only comment that didn\u0027t need to be addressed. \n\nWe have disabled his unusable thing since stein. I am very aware that this is the current behaviour.\n\nThis is why I said FYI, to let you know that it is unsuable. It is a race condition between all magnum conductors with heavy INFO log load, and high load in barbican if you use the recommended keypair store. Even caching of certs doesn\u0027t help.","commit_id":"adeffb57b68754343f56e376a3c00e4a80cf7eed"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a3f2216098f62f6e57ea8724080b7f3ae7bbe901","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Magnum has a periodic job to poll the k8s cluster if it is a reachable cluster."},{"line_number":8,"context_line":"If the floating IP is enabled, or the master loadbalancer is enabled and the"},{"line_number":9,"context_line":"master loadbalancer has floating IP associated, then Magnum will take this"},{"line_number":10,"context_line":"cluster as reachable. Then Magnum will call the k8s API per 10 seconds to poll"},{"line_number":11,"context_line":"the health status of the cluster and then update the two attributes:"},{"line_number":12,"context_line":"`health_status` and `health_status_reason`."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"df33271e_7ac33858","line":10,"range":{"start_line":10,"start_character":60,"end_line":10,"end_character":70},"in_reply_to":"df33271e_5ecbe848","updated":"2020-04-09 04:14:40.000000000","message":"I don\u0027t mind introducing a global flag (config option) to allow cloud admin totally disable the internal health polling. But as you said, this is a doc. I can propose a following patch to add the config and improve the doc.","commit_id":"adeffb57b68754343f56e376a3c00e4a80cf7eed"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"f184703ab92cc8dce3ae749189213b09b29ff35f","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Magnum has a periodic job to poll the k8s cluster if it is a reachable cluster."},{"line_number":8,"context_line":"If the floating IP is enabled, or the master loadbalancer is enabled and the"},{"line_number":9,"context_line":"master loadbalancer has floating IP associated, then Magnum will take this"},{"line_number":10,"context_line":"cluster as reachable. Then Magnum will call the k8s API per 10 seconds to poll"},{"line_number":11,"context_line":"the health status of the cluster and then update the two attributes:"},{"line_number":12,"context_line":"`health_status` and `health_status_reason`."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"df33271e_1ea2004c","line":10,"range":{"start_line":10,"start_character":60,"end_line":10,"end_character":70},"in_reply_to":"df33271e_5ecbe848","updated":"2020-04-08 10:37:36.000000000","message":"This is the current behaviour.","commit_id":"adeffb57b68754343f56e376a3c00e4a80cf7eed"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"b595c27958e4f2a421df5f6b807e85db12507b30","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Magnum has a periodic job to poll the k8s cluster if it is a reachable cluster."},{"line_number":8,"context_line":"If the floating IP is enabled, or the master loadbalancer is enabled and the"},{"line_number":9,"context_line":"master loadbalancer has floating IP associated, then Magnum will take this"},{"line_number":10,"context_line":"cluster as reachable. Then Magnum will call the k8s API per 10 seconds to poll"},{"line_number":11,"context_line":"the health status of the cluster and then update the two attributes:"},{"line_number":12,"context_line":"`health_status` and `health_status_reason`."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"df33271e_c247f24b","line":10,"range":{"start_line":10,"start_character":60,"end_line":10,"end_character":70},"in_reply_to":"df33271e_7ac33858","updated":"2020-04-09 12:35:36.000000000","message":"https://storyboard.openstack.org/#!/story/2007535","commit_id":"adeffb57b68754343f56e376a3c00e4a80cf7eed"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"3a786d4e16b180d79ae7e2fdee218c3bbb30f051","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Magnum has a periodic job to poll the k8s cluster if it is a reachable cluster."},{"line_number":8,"context_line":"If the floating IP is enabled, or the master loadbalancer is enabled and the"},{"line_number":9,"context_line":"master loadbalancer has floating IP associated, then Magnum will take this"},{"line_number":10,"context_line":"cluster as reachable. Then Magnum will call the k8s API per 10 seconds to poll"},{"line_number":11,"context_line":"the health status of the cluster and then update the two attributes:"},{"line_number":12,"context_line":"`health_status` and `health_status_reason`."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"df33271e_e1d5fd1c","line":10,"range":{"start_line":10,"start_character":60,"end_line":10,"end_character":70},"in_reply_to":"df33271e_a145b545","updated":"2020-04-08 11:06:07.000000000","message":"Sorry I should have elaborated further. What should be done about this? Does this mean that the best outcome be to make internal health monitoring opt-in via a label by default? So any external service can update the health status but internal health monitor only attempts to scrape health monitor endpoints if internal_health_monitoring_enabled\u003dtrue and if the cluster is accessible.","commit_id":"adeffb57b68754343f56e376a3c00e4a80cf7eed"}],"magnum/api/controllers/v1/cluster.py":[{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"e9ac143363170168a54d405f235d0e963b67f6d6","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        :param cluster_ident: UUID or logical name of a cluster."},{"line_number":525,"context_line":"        :param patch: a json PATCH document to apply to this cluster."},{"line_number":526,"context_line":"        \"\"\""},{"line_number":527,"context_line":"        cluster, node_count, hs, hsr \u003d self._patch(cluster_ident, patch)"},{"line_number":528,"context_line":"        pecan.request.rpcapi.cluster_update_async(cluster, node_count,"},{"line_number":529,"context_line":"                                                  hs, hsr)"},{"line_number":530,"context_line":"        return ClusterID(cluster.uuid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_9b243ac8","line":527,"range":{"start_line":527,"start_character":29,"end_line":527,"end_character":31},"updated":"2020-03-18 08:05:35.000000000","message":"I think we should be verbose here and call this health_status and health_status_reason for the purpose of easy grepping.","commit_id":"6b9349c8475367ee659ddc774b038de4dee3f43e"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"2d270e945e932fbdf1b6d470b64abb47a51705b8","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        :param cluster_ident: UUID or logical name of a cluster."},{"line_number":525,"context_line":"        :param patch: a json PATCH document to apply to this cluster."},{"line_number":526,"context_line":"        \"\"\""},{"line_number":527,"context_line":"        cluster, node_count, hs, hsr \u003d self._patch(cluster_ident, patch)"},{"line_number":528,"context_line":"        pecan.request.rpcapi.cluster_update_async(cluster, node_count,"},{"line_number":529,"context_line":"                                                  hs, hsr)"},{"line_number":530,"context_line":"        return ClusterID(cluster.uuid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_db594535","line":527,"range":{"start_line":527,"start_character":29,"end_line":527,"end_character":31},"in_reply_to":"1fa4df85_9b243ac8","updated":"2020-03-18 18:46:59.000000000","message":"I know, but it will make the line format extremely ugly.","commit_id":"6b9349c8475367ee659ddc774b038de4dee3f43e"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"57242e154d9958c3d25ae82e9302ac8bb1263aed","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        :param cluster_ident: UUID or logical name of a cluster."},{"line_number":525,"context_line":"        :param patch: a json PATCH document to apply to this cluster."},{"line_number":526,"context_line":"        \"\"\""},{"line_number":527,"context_line":"        cluster, node_count, hs, hsr \u003d self._patch(cluster_ident, patch)"},{"line_number":528,"context_line":"        pecan.request.rpcapi.cluster_update_async(cluster, node_count,"},{"line_number":529,"context_line":"                                                  hs, hsr)"},{"line_number":530,"context_line":"        return ClusterID(cluster.uuid)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1fa4df85_1b7cbde9","line":527,"range":{"start_line":527,"start_character":29,"end_line":527,"end_character":31},"in_reply_to":"1fa4df85_db594535","updated":"2020-03-18 19:24:47.000000000","message":"If I am a future developer who has never seen this code before, I want it to make sense more than look beautiful but put more work into digging up what hs and hsr mean, but that’s my humble opinion. There have been many times I have banged my head trying to find out what cryptic variable names means. Also grepping  for  hs and hsr will return lots of results because it’s a more common combination of letters than health_status and health_status_reason :)","commit_id":"6b9349c8475367ee659ddc774b038de4dee3f43e"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"38eadced5751489b299367126f50b17441edfd1b","unresolved":false,"context_lines":[{"line_number":542,"context_line":"        :param rollback: whether to rollback cluster on update failure."},{"line_number":543,"context_line":"        :param patch: a json PATCH document to apply to this cluster."},{"line_number":544,"context_line":"        \"\"\""},{"line_number":545,"context_line":"        cluster, node_count, health_status, health_status_reason \u003d \\"},{"line_number":546,"context_line":"            self._patch(cluster_ident, patch)"},{"line_number":547,"context_line":"        pecan.request.rpcapi.cluster_update_async(cluster, node_count,"},{"line_number":548,"context_line":"                                                  health_status,"}],"source_content_type":"text/x-python","patch_set":7,"id":"1fa4df85_d4758f99","line":545,"range":{"start_line":545,"start_character":8,"end_line":545,"end_character":64},"updated":"2020-03-19 08:00:17.000000000","message":"you might find this more beautiful:\n(cluster, node_count,\n health_status,\n health_status_reason) \u003d self._patch(cluster_ident, patch)","commit_id":"a5aa41d6ca387c043acc5a6b9e012c251543b899"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"9d805c015879970636b3637ba14ade584f122e0e","unresolved":false,"context_lines":[{"line_number":542,"context_line":"        :param rollback: whether to rollback cluster on update failure."},{"line_number":543,"context_line":"        :param patch: a json PATCH document to apply to this cluster."},{"line_number":544,"context_line":"        \"\"\""},{"line_number":545,"context_line":"        cluster, node_count, health_status, health_status_reason \u003d \\"},{"line_number":546,"context_line":"            self._patch(cluster_ident, patch)"},{"line_number":547,"context_line":"        pecan.request.rpcapi.cluster_update_async(cluster, node_count,"},{"line_number":548,"context_line":"                                                  health_status,"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_f246c821","line":545,"range":{"start_line":545,"start_character":8,"end_line":545,"end_character":64},"in_reply_to":"1fa4df85_d4758f99","updated":"2020-03-22 21:45:45.000000000","message":"Looks good, I will probably take yours if we need another patch set. Thanks.","commit_id":"a5aa41d6ca387c043acc5a6b9e012c251543b899"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"e19e132f20d6e18f84f89c5e8b028ce4614d9c81","unresolved":false,"context_lines":[{"line_number":529,"context_line":"         health_status_reason) \u003d self._patch(cluster_ident, patch)"},{"line_number":530,"context_line":"        pecan.request.rpcapi.cluster_update_async(cluster, node_count,"},{"line_number":531,"context_line":"                                                  health_status,"},{"line_number":532,"context_line":"                                                  health_status_reason)"},{"line_number":533,"context_line":"        return ClusterID(cluster.uuid)"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"    @base.Controller.api_version(\"1.3\")  # noqa"}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_def2586f","line":532,"updated":"2020-04-08 10:55:35.000000000","message":"is there a reason to change the old microversion?","commit_id":"adeffb57b68754343f56e376a3c00e4a80cf7eed"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"b595c27958e4f2a421df5f6b807e85db12507b30","unresolved":false,"context_lines":[{"line_number":529,"context_line":"         health_status_reason) \u003d self._patch(cluster_ident, patch)"},{"line_number":530,"context_line":"        pecan.request.rpcapi.cluster_update_async(cluster, node_count,"},{"line_number":531,"context_line":"                                                  health_status,"},{"line_number":532,"context_line":"                                                  health_status_reason)"},{"line_number":533,"context_line":"        return ClusterID(cluster.uuid)"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"    @base.Controller.api_version(\"1.3\")  # noqa"}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_426da2ca","line":532,"in_reply_to":"df33271e_9aed5cf2","updated":"2020-04-09 12:35:36.000000000","message":"ack","commit_id":"adeffb57b68754343f56e376a3c00e4a80cf7eed"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a3f2216098f62f6e57ea8724080b7f3ae7bbe901","unresolved":false,"context_lines":[{"line_number":529,"context_line":"         health_status_reason) \u003d self._patch(cluster_ident, patch)"},{"line_number":530,"context_line":"        pecan.request.rpcapi.cluster_update_async(cluster, node_count,"},{"line_number":531,"context_line":"                                                  health_status,"},{"line_number":532,"context_line":"                                                  health_status_reason)"},{"line_number":533,"context_line":"        return ClusterID(cluster.uuid)"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"    @base.Controller.api_version(\"1.3\")  # noqa"}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_9aed5cf2","line":532,"in_reply_to":"df33271e_def2586f","updated":"2020-04-09 04:14:40.000000000","message":"Otherwise, the unit test can not pass. I will check this again.","commit_id":"adeffb57b68754343f56e376a3c00e4a80cf7eed"}],"magnum/conductor/handlers/cluster_conductor.py":[{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"99b5c192ab8516edca3e124f6b3631e4bbc084c0","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        # nodegroup."},{"line_number":124,"context_line":"        worker_ng \u003d cluster.default_ng_worker"},{"line_number":125,"context_line":"        if worker_ng.node_count \u003d\u003d node_count:"},{"line_number":126,"context_line":"            return"},{"line_number":127,"context_line":"        # Backup the old node count so that we can restore it"},{"line_number":128,"context_line":"        # in case of an exception."},{"line_number":129,"context_line":"        old_node_count \u003d worker_ng.node_count"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_6aa42a09","side":"PARENT","line":126,"range":{"start_line":126,"start_character":12,"end_line":126,"end_character":18},"updated":"2020-03-16 14:42:16.000000000","message":"hmm?","commit_id":"a4190dc9d0bce4a4d7c7633aacf6e282ac5a5128"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"0fb0a3bdda61523c37ec92d4ef1f0824c31e9924","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        cluster.health_status \u003d health_status"},{"line_number":132,"context_line":"        cluster.health_status_reason \u003d health_status_reason"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        # It\u0027s not necessary to trigger driver\u0027s cluster update if it\u0027s"},{"line_number":135,"context_line":"        # only health status update"},{"line_number":136,"context_line":"        if worker_ng.node_count !\u003d node_count:"},{"line_number":137,"context_line":"            # Backup the old node count so that we can restore it"},{"line_number":138,"context_line":"            # in case of an exception."},{"line_number":139,"context_line":"            old_node_count \u003d worker_ng.node_count"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_da436912","line":136,"range":{"start_line":133,"start_character":0,"end_line":136,"end_character":46},"updated":"2020-03-29 15:50:42.000000000","message":"nice catch, although i am thinking about the side effect of this. if the cluster is in a _FAILED state and we\u0027d like to trigger a reupdate with node_count\u003d\u003dworker_ng.node_count, we want to allow for this behaviour dont we?","commit_id":"a550d1e2861f5664ca6327ab52250814a7971a3c"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"66823aa45d257bdee1429eb4442ed3caad29612e","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        cluster.health_status \u003d health_status"},{"line_number":132,"context_line":"        cluster.health_status_reason \u003d health_status_reason"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        # It\u0027s not necessary to trigger driver\u0027s cluster update if it\u0027s"},{"line_number":135,"context_line":"        # only health status update"},{"line_number":136,"context_line":"        if worker_ng.node_count !\u003d node_count:"},{"line_number":137,"context_line":"            # Backup the old node count so that we can restore it"},{"line_number":138,"context_line":"            # in case of an exception."},{"line_number":139,"context_line":"            old_node_count \u003d worker_ng.node_count"}],"source_content_type":"text/x-python","patch_set":10,"id":"df33271e_e5804e49","line":136,"range":{"start_line":133,"start_character":0,"end_line":136,"end_character":46},"in_reply_to":"df33271e_da436912","updated":"2020-03-29 18:51:32.000000000","message":"I don\u0027t think this is a supported behaviour by the cluster update API, please see line 105.","commit_id":"a550d1e2861f5664ca6327ab52250814a7971a3c"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"ef76d31451281f46904e829186041f7ce03d97b5","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                cluster.health_status_reason \u003d\u003d health_status_reason):"},{"line_number":129,"context_line":"            return"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        cluster.health_status \u003d health_status"},{"line_number":132,"context_line":"        cluster.health_status_reason \u003d health_status_reason"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        # It\u0027s not necessary to trigger driver\u0027s cluster update if it\u0027s"},{"line_number":135,"context_line":"        # only health status update"}],"source_content_type":"text/x-python","patch_set":11,"id":"df33271e_ba15614b","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":59},"updated":"2020-04-02 13:53:54.000000000","message":"I think we should allow/disallow this update\n- 1. check if these values have changed\n- 2. if they have changed, only if _is_magnum_auto_healer_running() is True.\n\notherwise, raise an exception to the client.\n\nNow I am wondering if we should decouple this from magnum-auto-healer entirely and introduce a new label, something like external_health_status_update_enabled because in your documentation, it claims \"any 3rd service\" can make this update but at the moment it is only reserved to the magnum auto healer. Thoughts?","commit_id":"6fff9b5b2a0531bf18268a6203b033ce495ff577"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"e30b8f2ec3e9be0484e7d5597bf5f71783d54595","unresolved":false,"context_lines":[{"line_number":128,"context_line":"                cluster.health_status_reason \u003d\u003d health_status_reason):"},{"line_number":129,"context_line":"            return"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        cluster.health_status \u003d health_status"},{"line_number":132,"context_line":"        cluster.health_status_reason \u003d health_status_reason"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        # It\u0027s not necessary to trigger driver\u0027s cluster update if it\u0027s"},{"line_number":135,"context_line":"        # only health status update"}],"source_content_type":"text/x-python","patch_set":11,"id":"df33271e_bc21d3b6","line":132,"range":{"start_line":131,"start_character":0,"end_line":132,"end_character":59},"in_reply_to":"df33271e_ba15614b","updated":"2020-04-02 23:02:16.000000000","message":"Thanks for the comments. It seems you\u0027re pushing me again, to a corner for this case :) As I said, my original design is any 3rd party service that can update the health_status and I can\u0027t see why it doesn\u0027t make sense. However, you asked me to add the _is_magnum_auto_healer_enabled() function to totally disable the internal polling, which is also fine. Because this doesn\u0027t block any 3rd party update.\n\nBut technically, current logic is good enough I think and I don\u0027t want to overengineer at this moment before getting enough production feedback. Catalyst Cloud is going to use this feature on our production and I will surely improve this if there is anything we need to polish.\n\nBack to this part code, we can check if the health_status and health_status_reason changed or not, but it only makes the code getting longer because the main complex part of this cluster_update function is the node_count change. In other words, as long as the program reaching line 131, we need to do the cluster.save() to save the new cluster information into database. So I can\u0027t see the benefit to add another check. \n\nAnd I\u0027m very reluctant to add another label for this unless you can a strong opinion can convince me. Thanks.","commit_id":"6fff9b5b2a0531bf18268a6203b033ce495ff577"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"e0005396d2134609b5e6c8f5a50b0a46c2a63897","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        # It\u0027s not necessary to trigger driver\u0027s cluster update if it\u0027s"},{"line_number":135,"context_line":"        # only health status update"},{"line_number":136,"context_line":"        if worker_ng.node_count !\u003d node_count:"},{"line_number":137,"context_line":"            # Backup the old node count so that we can restore it"},{"line_number":138,"context_line":"            # in case of an exception."},{"line_number":139,"context_line":"            old_node_count \u003d worker_ng.node_count"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_fe13dcb6","line":137,"updated":"2020-04-08 10:31:28.000000000","message":"Can we make this a private method instead of indenting the whole block?\n\nOr add before the indented block\n\n if worker_ng.node_count !\u003d node_count:\n     return cluster","commit_id":"adeffb57b68754343f56e376a3c00e4a80cf7eed"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a3f2216098f62f6e57ea8724080b7f3ae7bbe901","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        # It\u0027s not necessary to trigger driver\u0027s cluster update if it\u0027s"},{"line_number":135,"context_line":"        # only health status update"},{"line_number":136,"context_line":"        if worker_ng.node_count !\u003d node_count:"},{"line_number":137,"context_line":"            # Backup the old node count so that we can restore it"},{"line_number":138,"context_line":"            # in case of an exception."},{"line_number":139,"context_line":"            old_node_count \u003d worker_ng.node_count"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_1ab30c0c","line":137,"in_reply_to":"df33271e_41b669fc","updated":"2020-04-09 04:14:40.000000000","message":"Sure, I can do that.","commit_id":"adeffb57b68754343f56e376a3c00e4a80cf7eed"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"3a786d4e16b180d79ae7e2fdee218c3bbb30f051","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        # It\u0027s not necessary to trigger driver\u0027s cluster update if it\u0027s"},{"line_number":135,"context_line":"        # only health status update"},{"line_number":136,"context_line":"        if worker_ng.node_count !\u003d node_count:"},{"line_number":137,"context_line":"            # Backup the old node count so that we can restore it"},{"line_number":138,"context_line":"            # in case of an exception."},{"line_number":139,"context_line":"            old_node_count \u003d worker_ng.node_count"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"df33271e_41b669fc","line":137,"in_reply_to":"df33271e_fe13dcb6","updated":"2020-04-08 11:06:07.000000000","message":"+1","commit_id":"adeffb57b68754343f56e376a3c00e4a80cf7eed"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"b595c27958e4f2a421df5f6b807e85db12507b30","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        # It\u0027s not necessary to trigger driver\u0027s cluster update if it\u0027s"},{"line_number":135,"context_line":"        # only health status update"},{"line_number":136,"context_line":"        if worker_ng.node_count \u003d\u003d node_count:"},{"line_number":137,"context_line":"            cluster.save()"},{"line_number":138,"context_line":"            return cluster"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # Backup the old node count so that we can restore it"}],"source_content_type":"text/x-python","patch_set":17,"id":"df33271e_42f002fe","line":137,"updated":"2020-04-09 12:35:36.000000000","message":"Thanks for this!","commit_id":"63e80c31088206e75c2df8a2ffc9360d1a46acf2"}],"magnum/drivers/common/k8s_monitor.py":[{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"6074040171eacd9fbc7054387ca72fb8f5f8d917","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.data[\u0027health_status_reason\u0027] \u003d reason"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _is_magnum_auto_healer_running(self):"},{"line_number":67,"context_line":"        auto_healing \u003d self.cluster.labels.get(\"auto_healing_enabled\")"},{"line_number":68,"context_line":"        auto_healing_enabled \u003d strutils.bool_from_string(auto_healing)"},{"line_number":69,"context_line":"        controller \u003d self.cluster.labels.get(\"auto_healing_controller\")"},{"line_number":70,"context_line":"        return (auto_healing_enabled and controller \u003d\u003d \"magnum-auto-healer\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_29323111","line":67,"range":{"start_line":67,"start_character":23,"end_line":67,"end_character":70},"updated":"2020-03-27 00:58:05.000000000","message":"should have a default value of False?","commit_id":"3d59ea0172713ce96bd7077d62d38e3e60988bfe"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"c65a65c0b7ebe35d9e0a2bd0bf0da93b49822443","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self.data[\u0027health_status_reason\u0027] \u003d reason"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _is_magnum_auto_healer_running(self):"},{"line_number":67,"context_line":"        auto_healing \u003d self.cluster.labels.get(\"auto_healing_enabled\")"},{"line_number":68,"context_line":"        auto_healing_enabled \u003d strutils.bool_from_string(auto_healing)"},{"line_number":69,"context_line":"        controller \u003d self.cluster.labels.get(\"auto_healing_controller\")"},{"line_number":70,"context_line":"        return (auto_healing_enabled and controller \u003d\u003d \"magnum-auto-healer\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_a413085c","line":67,"range":{"start_line":67,"start_character":23,"end_line":67,"end_character":70},"in_reply_to":"df33271e_29323111","updated":"2020-03-27 01:03:30.000000000","message":"The default value is None, and the below boo_from_string can convert it to False.","commit_id":"3d59ea0172713ce96bd7077d62d38e3e60988bfe"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"6074040171eacd9fbc7054387ca72fb8f5f8d917","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def _is_magnum_auto_healer_running(self):"},{"line_number":67,"context_line":"        auto_healing \u003d self.cluster.labels.get(\"auto_healing_enabled\")"},{"line_number":68,"context_line":"        auto_healing_enabled \u003d strutils.bool_from_string(auto_healing)"},{"line_number":69,"context_line":"        controller \u003d self.cluster.labels.get(\"auto_healing_controller\")"},{"line_number":70,"context_line":"        return (auto_healing_enabled and controller \u003d\u003d \"magnum-auto-healer\")"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _is_cluster_accessible(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_0935adf7","line":69,"range":{"start_line":69,"start_character":21,"end_line":69,"end_character":71},"updated":"2020-03-27 00:58:05.000000000","message":"should have a default value of None?","commit_id":"3d59ea0172713ce96bd7077d62d38e3e60988bfe"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"c65a65c0b7ebe35d9e0a2bd0bf0da93b49822443","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    def _is_magnum_auto_healer_running(self):"},{"line_number":67,"context_line":"        auto_healing \u003d self.cluster.labels.get(\"auto_healing_enabled\")"},{"line_number":68,"context_line":"        auto_healing_enabled \u003d strutils.bool_from_string(auto_healing)"},{"line_number":69,"context_line":"        controller \u003d self.cluster.labels.get(\"auto_healing_controller\")"},{"line_number":70,"context_line":"        return (auto_healing_enabled and controller \u003d\u003d \"magnum-auto-healer\")"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def _is_cluster_accessible(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_2429b889","line":69,"range":{"start_line":69,"start_character":21,"end_line":69,"end_character":71},"in_reply_to":"df33271e_0935adf7","updated":"2020-03-27 01:03:30.000000000","message":"The default value return by get() is None.","commit_id":"3d59ea0172713ce96bd7077d62d38e3e60988bfe"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"da6391ee8d8c153bb6a12d393f8491a53ba644c7","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.data[\u0027pods\u0027] \u003d self._parse_pod_info(pods)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def poll_health_status(self):"},{"line_number":52,"context_line":"        if self._is_magnum_auto_healer_running():"},{"line_number":53,"context_line":"            return"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        k8s_api \u003d k8s.create_k8s_api(self.context, self.cluster)"}],"source_content_type":"text/x-python","patch_set":17,"id":"3f4c43b2_00466a24","line":52,"range":{"start_line":52,"start_character":39,"end_line":52,"end_character":46},"updated":"2020-04-14 08:34:59.000000000","message":"nit: just because the flag is enabled does not mean the auto healer is running :)","commit_id":"63e80c31088206e75c2df8a2ffc9360d1a46acf2"}],"magnum/tests/unit/conductor/test_monitors.py":[{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"6074040171eacd9fbc7054387ca72fb8f5f8d917","unresolved":false,"context_lines":[{"line_number":538,"context_line":"        self.k8s_monitor._is_magnum_auto_healer_running()"},{"line_number":539,"context_line":"        self.assertFalse(self.k8s_monitor._is_magnum_auto_healer_running())"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"        cluster.labels[\u0027auto_healing_enabled\u0027] \u003d True"},{"line_number":542,"context_line":"        cluster.labels[\u0027auto_healing_controller\u0027] \u003d \u0027draino\u0027"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"        self.k8s_monitor._is_magnum_auto_healer_running()"},{"line_number":545,"context_line":"        self.assertFalse(self.k8s_monitor._is_magnum_auto_healer_running())"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_89209db2","line":542,"range":{"start_line":541,"start_character":1,"end_line":542,"end_character":60},"updated":"2020-03-27 00:58:05.000000000","message":"what happens when these labels are undefined?","commit_id":"3d59ea0172713ce96bd7077d62d38e3e60988bfe"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"c65a65c0b7ebe35d9e0a2bd0bf0da93b49822443","unresolved":false,"context_lines":[{"line_number":538,"context_line":"        self.k8s_monitor._is_magnum_auto_healer_running()"},{"line_number":539,"context_line":"        self.assertFalse(self.k8s_monitor._is_magnum_auto_healer_running())"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"        cluster.labels[\u0027auto_healing_enabled\u0027] \u003d True"},{"line_number":542,"context_line":"        cluster.labels[\u0027auto_healing_controller\u0027] \u003d \u0027draino\u0027"},{"line_number":543,"context_line":""},{"line_number":544,"context_line":"        self.k8s_monitor._is_magnum_auto_healer_running()"},{"line_number":545,"context_line":"        self.assertFalse(self.k8s_monitor._is_magnum_auto_healer_running())"}],"source_content_type":"text/x-python","patch_set":8,"id":"df33271e_640aa021","line":542,"range":{"start_line":541,"start_character":1,"end_line":542,"end_character":60},"in_reply_to":"df33271e_89209db2","updated":"2020-03-27 01:03:30.000000000","message":"I can add a new case.","commit_id":"3d59ea0172713ce96bd7077d62d38e3e60988bfe"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"2cf4506582d83afc1247e7948a894cc9037b38a3","unresolved":false,"context_lines":[{"line_number":560,"context_line":"        self.k8s_monitor._is_magnum_auto_healer_running()"},{"line_number":561,"context_line":"        self.assertFalse(self.k8s_monitor._is_magnum_auto_healer_running())"},{"line_number":562,"context_line":""},{"line_number":563,"context_line":"        cluster.labels \u003d {}"},{"line_number":564,"context_line":"        self.k8s_monitor._is_magnum_auto_healer_running()"},{"line_number":565,"context_line":"        self.assertFalse(self.k8s_monitor._is_magnum_auto_healer_running())"}],"source_content_type":"text/x-python","patch_set":9,"id":"df33271e_647f4067","line":563,"range":{"start_line":563,"start_character":8,"end_line":563,"end_character":27},"updated":"2020-03-27 01:13:18.000000000","message":"You will surely get a KeyError","commit_id":"573ead1890148862d2055111f44af271f96ff21f"}],"releasenotes/notes/support-updating-k8s-cluster-health-via-api-b8a3cac3031c50a5.yaml":[{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"99b5c192ab8516edca3e124f6b3631e4bbc084c0","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    it doesn\u0027t work when the cluster is private. Now Magnum supports"},{"line_number":7,"context_line":"    updating the k8s cluster health status via the Magnum cluster"},{"line_number":8,"context_line":"    update API so that a controller (e.g. magnum-auto-healer) running"},{"line_number":9,"context_line":"    inside the k8s cluster can call the Mangum update API to update"},{"line_number":10,"context_line":"    the cluster health status."}],"source_content_type":"text/x-yaml","patch_set":4,"id":"1fa4df85_aa830256","line":9,"range":{"start_line":9,"start_character":40,"end_line":9,"end_character":46},"updated":"2020-03-16 14:42:16.000000000","message":"Magnum","commit_id":"449db127534fd9a10680200f2757f8c2c54c2410"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"6d2926125c2293627f58b222283b40ca25a6e139","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    it doesn\u0027t work when the cluster is private. Now Magnum supports"},{"line_number":7,"context_line":"    updating the k8s cluster health status via the Magnum cluster"},{"line_number":8,"context_line":"    update API so that a controller (e.g. magnum-auto-healer) running"},{"line_number":9,"context_line":"    inside the k8s cluster can call the Mangum update API to update"},{"line_number":10,"context_line":"    the cluster health status."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"df33271e_98ea49d5","line":9,"range":{"start_line":9,"start_character":40,"end_line":9,"end_character":46},"updated":"2020-04-01 11:31:34.000000000","message":"Magnum","commit_id":"a550d1e2861f5664ca6327ab52250814a7971a3c"}]}
