)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bbfcf6e0a8b324429729912b2d7371ae99b0dc66","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"3b2aafdb_bc4741e6","updated":"2021-12-14 00:20:57.000000000","message":"i still need to address the feed back gibi gave but i have run this through grammerly\nso most of the spelling and grammar issues shoudl be addressed.","commit_id":"53a435c851486d2b09314148e18cbf8fd14b4372"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"697ace2795da429123dc193701911ffc01681443","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"337cbc32_23655c4f","in_reply_to":"3b2aafdb_bc4741e6","updated":"2021-12-14 09:41:57.000000000","message":"Thanks. Feel free to ping me for re-review","commit_id":"53a435c851486d2b09314148e18cbf8fd14b4372"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e3f462746c37d56fb4074326487f9b5446748336","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a0bd8878_cd9c8faf","updated":"2022-01-11 13:18:36.000000000","message":"Couple of extra questions","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"51fd2fa7_6c349ae1","updated":"2022-01-10 17:34:21.000000000","message":"Please do spellcheck this on the next rev!","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b0e0bdad_af24d846","updated":"2021-12-20 15:24:46.000000000","message":"This looks a good direction but I think we shouldn\u0027t discuss now about \u0027warn\u0027 honestly.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73e698b5216d1a488ea6b36676568f6ce1deae85","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"099061fc_86e5cc08","updated":"2021-12-17 17:49:41.000000000","message":"just added some notes for myself to adress when im back form pto","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"34452973_d5815207","updated":"2022-01-13 11:12:39.000000000","message":"I honestly think this is an important use case I\u0027d like us to support by Yoga, so I prefer to tell +2 for this revision rather than nitpicking about some wrong phrasing. That said, I have two thoughts :\n- please add a FUP for the micronits I found, we can merge it after spec approval freeze\n- please remove the log grepping design from this spec and I\u0027be happy as we could discuss this in a separate spec without being afraid of seeing it as a first implementation stage :) \n\nThanks Sean.","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7a8b38cc29545c75e946c6eb636b9297639c1552","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"d8740a33_b07da1a0","updated":"2022-01-13 14:00:51.000000000","message":"Thanks Sean for having fixed my nits. Definitely +2 for me.","commit_id":"53d7a81be56be491b39d9146bc412354c58dffea"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"90dfa2adbf60e74dbb25029c5a8c861073ec39ab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"33aa6ccb_817f69ab","updated":"2022-01-13 15:19:34.000000000","message":"Simple fixes, go for it.","commit_id":"51c3a1560893a830f428b8e4b7aebe8536678b66"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"700be8123f71ab753ff2dd072e10751cec17ba10","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"bd88a94f_0a750101","updated":"2022-01-13 15:09:47.000000000","message":"Thank you","commit_id":"51c3a1560893a830f428b8e4b7aebe8536678b66"}],"specs/yoga/approved/per-process-healthchecks.rst":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d0347120_b9eb8e40","updated":"2021-12-10 17:32:39.000000000","message":"Run a spellcheck on the text please :)","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b2d148252d3eb60d05d5d93e61065b1189279d17","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"7b759898_c62b253c","in_reply_to":"a8a86e2b_e65ffe35","updated":"2021-12-13 11:10:21.000000000","message":"Thanks for fixing it up. No worries.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"abfcda234e3d05c09c50f7933d38c84808e77f99","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"a8a86e2b_e65ffe35","in_reply_to":"d0347120_b9eb8e40","updated":"2021-12-10 18:32:16.000000000","message":"ya ill pass it thought grammerly on monday i wanted to get this up before the weekend.\n\nthat siad i have alredy spellcheck some of it belive it or not i just ran out of steam to keep doing it in one go.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In many modern deployment frameworks there is an expectation that"},{"line_number":14,"context_line":"an application can expose a health-check endpoint so that the binary"},{"line_number":15,"context_line":"status can be monitored. Nova currently does not provide a way to"},{"line_number":16,"context_line":"inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. This blueprint seeks to expose a local health-check"},{"line_number":18,"context_line":"endpoint to address this feature gap."}],"source_content_type":"text/x-rst","patch_set":1,"id":"6cdcbe98_37bc0948","line":15,"range":{"start_line":15,"start_character":25,"end_line":15,"end_character":56},"updated":"2021-12-10 17:32:39.000000000","message":"nit: our wsgi services provide it via a middleware, but the rest of the services do not.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73e698b5216d1a488ea6b36676568f6ce1deae85","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"In many modern deployment frameworks there is an expectation that"},{"line_number":14,"context_line":"an application can expose a health-check endpoint so that the binary"},{"line_number":15,"context_line":"status can be monitored. Nova currently does not provide a way to"},{"line_number":16,"context_line":"inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. This blueprint seeks to expose a local health-check"},{"line_number":18,"context_line":"endpoint to address this feature gap."}],"source_content_type":"text/x-rst","patch_set":1,"id":"620a2eb6_16c0db57","line":15,"range":{"start_line":15,"start_character":25,"end_line":15,"end_character":56},"in_reply_to":"6cdcbe98_37bc0948","updated":"2021-12-17 17:49:41.000000000","message":"Done","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"To monitor the health of a nova service today requires experience to"},{"line_number":25,"context_line":"develop and implement a series of external heuristics to infer the state"},{"line_number":26,"context_line":"of the service binaries."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"This can be as simple as check the service status for those with heartbeats"},{"line_number":29,"context_line":"or can comprise monitoring log output via a watch dog and restarting"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0dd21fd1_dc67d7de","line":26,"updated":"2021-12-10 17:32:39.000000000","message":"+1","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73e698b5216d1a488ea6b36676568f6ce1deae85","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"To monitor the health of a nova service today requires experience to"},{"line_number":25,"context_line":"develop and implement a series of external heuristics to infer the state"},{"line_number":26,"context_line":"of the service binaries."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"This can be as simple as check the service status for those with heartbeats"},{"line_number":29,"context_line":"or can comprise monitoring log output via a watch dog and restarting"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dae83cd7_a218b07f","line":26,"in_reply_to":"0dd21fd1_dc67d7de","updated":"2021-12-17 17:49:41.000000000","message":"Ack","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":28,"context_line":"This can be as simple as check the service status for those with heartbeats"},{"line_number":29,"context_line":"or can comprise monitoring log output via a watch dog and restarting"},{"line_number":30,"context_line":"the service if no output is detected after a protracted period of time."},{"line_number":31,"context_line":"processing the logs of know error messages and executing a remediation script"},{"line_number":32,"context_line":"or other methods that are easy to do incorrectly are also common."},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"This is also quite unfriendly to new nova user who have not gained enough"}],"source_content_type":"text/x-rst","patch_set":1,"id":"4f30f246_1322812c","line":31,"range":{"start_line":31,"start_character":0,"end_line":31,"end_character":1},"updated":"2021-12-10 17:32:39.000000000","message":"nit: P","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":42,"context_line":"---------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"As a operator i want a simple health-check i can consume to know"},{"line_number":45,"context_line":"if a nova process is OK, Degraded or Faulty."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"As an operator i want this health-check to not impact performance of the"},{"line_number":48,"context_line":"service so it can be queried frequently at short intervals."}],"source_content_type":"text/x-rst","patch_set":1,"id":"b3475e26_0953da3d","line":45,"range":{"start_line":45,"start_character":25,"end_line":45,"end_character":33},"updated":"2021-12-10 17:32:39.000000000","message":"We probably need a good definition of what we mean by Degraded","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73e698b5216d1a488ea6b36676568f6ce1deae85","unresolved":false,"context_lines":[{"line_number":42,"context_line":"---------"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"As a operator i want a simple health-check i can consume to know"},{"line_number":45,"context_line":"if a nova process is OK, Degraded or Faulty."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"As an operator i want this health-check to not impact performance of the"},{"line_number":48,"context_line":"service so it can be queried frequently at short intervals."}],"source_content_type":"text/x-rst","patch_set":1,"id":"5078a9ed_aea2c677","line":45,"range":{"start_line":45,"start_character":25,"end_line":45,"end_character":33},"in_reply_to":"b3475e26_0953da3d","updated":"2021-12-17 17:49:41.000000000","message":"Done, i have added a section to proposed changes for this","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":45,"context_line":"if a nova process is OK, Degraded or Faulty."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"As an operator i want this health-check to not impact performance of the"},{"line_number":48,"context_line":"service so it can be queried frequently at short intervals."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"As a deployment tool implementer i want the health check to be local with no"},{"line_number":51,"context_line":"dependencies on other hosts or services to function so i can integrate it with"}],"source_content_type":"text/x-rst","patch_set":1,"id":"01fbbb3e_42401eb0","line":48,"updated":"2021-12-10 17:32:39.000000000","message":"+1","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"As a deployment tool implementer i want the health check to be local with no"},{"line_number":51,"context_line":"dependencies on other hosts or services to function so i can integrate it with"},{"line_number":52,"context_line":"service managers such as systemd or container runtime like docker"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"As a packager i would like health-check to not require special client or"},{"line_number":55,"context_line":"packages consume them. CURL, socat or netcat should be all that is required to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"fd2b3eb3_858a06b7","line":52,"updated":"2021-12-10 17:32:39.000000000","message":"+1","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":66,"context_line":"common code and data stucture required to implemente this feature."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"A new healthcheck manager class will be intoduced which will maintain the"},{"line_number":69,"context_line":"healt-check state and all fucntion related to retriving, updating and"},{"line_number":70,"context_line":"summerising that state."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The healtcheck manager will be reposible for creating the health-check endpoint"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f83bebc0_c8eea2c5","line":69,"range":{"start_line":69,"start_character":12,"end_line":69,"end_character":17},"updated":"2021-12-10 17:32:39.000000000","message":"I assume it will be only an in-memory state nothing more","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b2d148252d3eb60d05d5d93e61065b1189279d17","unresolved":false,"context_lines":[{"line_number":66,"context_line":"common code and data stucture required to implemente this feature."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"A new healthcheck manager class will be intoduced which will maintain the"},{"line_number":69,"context_line":"healt-check state and all fucntion related to retriving, updating and"},{"line_number":70,"context_line":"summerising that state."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The healtcheck manager will be reposible for creating the health-check endpoint"}],"source_content_type":"text/x-rst","patch_set":1,"id":"6247d043_a7da5103","line":69,"range":{"start_line":69,"start_character":12,"end_line":69,"end_character":17},"in_reply_to":"c89a520c_15f1a5f9","updated":"2021-12-13 11:10:21.000000000","message":"Cool.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"abfcda234e3d05c09c50f7933d38c84808e77f99","unresolved":true,"context_lines":[{"line_number":66,"context_line":"common code and data stucture required to implemente this feature."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"A new healthcheck manager class will be intoduced which will maintain the"},{"line_number":69,"context_line":"healt-check state and all fucntion related to retriving, updating and"},{"line_number":70,"context_line":"summerising that state."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The healtcheck manager will be reposible for creating the health-check endpoint"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c89a520c_15f1a5f9","line":69,"range":{"start_line":69,"start_character":12,"end_line":69,"end_character":17},"in_reply_to":"f83bebc0_c8eea2c5","updated":"2021-12-10 18:32:16.000000000","message":"yep it will likelyt be a dict fo string to healthcheck item.\n\nregardless of the data stucture it will be in memory only and lost/reset by restarting the interpreter instance.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":70,"context_line":"summerising that state."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The healtcheck manager will be reposible for creating the health-check endpoint"},{"line_number":73,"context_line":"when it is enabled in the nova.conf and exposing the healthcheck over http."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The initial implementation will support http over tcp with optional support for"},{"line_number":76,"context_line":"unix domain sockets as a more secure alternative to be added later."}],"source_content_type":"text/x-rst","patch_set":1,"id":"31124a80_06f7de9e","line":73,"range":{"start_line":73,"start_character":53,"end_line":73,"end_character":75},"updated":"2021-12-10 17:32:39.000000000","message":"Probably the downstream security team in my company would ask for https (yes, even for internal service - service communication). But at least it can be turned off in the conf. So I\u0027m OK with http for now, and we can add https later is somebody will be asking it","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"abfcda234e3d05c09c50f7933d38c84808e77f99","unresolved":true,"context_lines":[{"line_number":70,"context_line":"summerising that state."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The healtcheck manager will be reposible for creating the health-check endpoint"},{"line_number":73,"context_line":"when it is enabled in the nova.conf and exposing the healthcheck over http."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The initial implementation will support http over tcp with optional support for"},{"line_number":76,"context_line":"unix domain sockets as a more secure alternative to be added later."}],"source_content_type":"text/x-rst","patch_set":1,"id":"99540463_49aa2b34","line":73,"range":{"start_line":73,"start_character":53,"end_line":73,"end_character":75},"in_reply_to":"31124a80_06f7de9e","updated":"2021-12-10 18:32:16.000000000","message":"ya we have some infrastufutre to supprot caps and ssl certs in nova. i might be able to resue that ill have to take a look as i have alway just used a webserver to hanel ssl.\n\ni woudl prefer to keep that out of the MVP for this but i dont mind having it be a strech goal.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b2d148252d3eb60d05d5d93e61065b1189279d17","unresolved":false,"context_lines":[{"line_number":70,"context_line":"summerising that state."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"The healtcheck manager will be reposible for creating the health-check endpoint"},{"line_number":73,"context_line":"when it is enabled in the nova.conf and exposing the healthcheck over http."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The initial implementation will support http over tcp with optional support for"},{"line_number":76,"context_line":"unix domain sockets as a more secure alternative to be added later."}],"source_content_type":"text/x-rst","patch_set":1,"id":"36388aec_7abff2f6","line":73,"range":{"start_line":73,"start_character":53,"end_line":73,"end_character":75},"in_reply_to":"99540463_49aa2b34","updated":"2021-12-13 11:10:21.000000000","message":"I agree to keep https out from the MVP. Let\u0027s get moving then we can improve later.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"The initial implementation will support http over tcp with optional support for"},{"line_number":76,"context_line":"unix domain sockets as a more secure alternative to be added later."},{"line_number":77,"context_line":"The http endpoint in both cases will be unauthenticated and the response will"},{"line_number":78,"context_line":"be in json format."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The http web server will be provide by the eventlet using"},{"line_number":81,"context_line":"https://eventlet.net/doc/modules/wsgi.html#eventlet.wsgi.server"}],"source_content_type":"text/x-rst","patch_set":1,"id":"e9072a74_a5f281e8","line":78,"range":{"start_line":77,"start_character":40,"end_line":78,"end_character":18},"updated":"2021-12-10 17:32:39.000000000","message":"+1","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":78,"context_line":"be in json format."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The http web server will be provide by the eventlet using"},{"line_number":81,"context_line":"https://eventlet.net/doc/modules/wsgi.html#eventlet.wsgi.server"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"A new HealthcheckStausItem dataclass will be intoduced to store and"},{"line_number":84,"context_line":"indivugal healthcheck datapoint. The HealtcheckSTatusItem will contain"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ca66ca53_32763139","line":81,"updated":"2021-12-10 17:32:39.000000000","message":"In an ideal word I would ask not to use eventlet but yeah we already based on eventlet so mixing in native threads would be error prone","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2c25c712417957c981a04885185a97e44fa813d4","unresolved":true,"context_lines":[{"line_number":78,"context_line":"be in json format."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The http web server will be provide by the eventlet using"},{"line_number":81,"context_line":"https://eventlet.net/doc/modules/wsgi.html#eventlet.wsgi.server"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"A new HealthcheckStausItem dataclass will be intoduced to store and"},{"line_number":84,"context_line":"indivugal healthcheck datapoint. The HealtcheckSTatusItem will contain"}],"source_content_type":"text/x-rst","patch_set":1,"id":"f3578622_ee64eb14","line":81,"in_reply_to":"0dde3d6c_21fcd941","updated":"2021-12-14 00:34:07.000000000","message":"in this specific instance i atcully thinke we are ok with a data race.\nor to be a little more accurate we are ok with unsyconised reads of the datastcre from a different thread.\n\nso if i was to use asyncio all i realy would have to do intially is have the health check manager spanw a sperate trhread to run the asyncio event loop tha twould be used to handel http requests.\n\nthe rest of the code can be monkeypatched as normal and rely on eventlet to provide concurrancy.\n\ni could remove the refernce to how the http webserver is created and we could defer this to the implementaiton and see how hariy or not it is.\n\nwe coudl also just add a TODO in the code to explore using asyncio in the futrue.\ni have not personally used asyncio for anything that was not trivial yet so that is why im currenlty hesitent to mandate it as the way we will do this but i think its a vaild alternivite and this might be a nice way to start using it in nova.\n\nat the very least i can include this in the alternative section.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b2d148252d3eb60d05d5d93e61065b1189279d17","unresolved":true,"context_lines":[{"line_number":78,"context_line":"be in json format."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The http web server will be provide by the eventlet using"},{"line_number":81,"context_line":"https://eventlet.net/doc/modules/wsgi.html#eventlet.wsgi.server"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"A new HealthcheckStausItem dataclass will be intoduced to store and"},{"line_number":84,"context_line":"indivugal healthcheck datapoint. The HealtcheckSTatusItem will contain"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0dde3d6c_21fcd941","line":81,"in_reply_to":"671103e3_902147c7","updated":"2021-12-13 11:10:21.000000000","message":"If the healtcheck code can be fairly separate from the rest of nova then I\u0027m not against trying asyncio but I have a feeling that the async / normal nova code boundary will be hairy.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"abfcda234e3d05c09c50f7933d38c84808e77f99","unresolved":true,"context_lines":[{"line_number":78,"context_line":"be in json format."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The http web server will be provide by the eventlet using"},{"line_number":81,"context_line":"https://eventlet.net/doc/modules/wsgi.html#eventlet.wsgi.server"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"A new HealthcheckStausItem dataclass will be intoduced to store and"},{"line_number":84,"context_line":"indivugal healthcheck datapoint. The HealtcheckSTatusItem will contain"}],"source_content_type":"text/x-rst","patch_set":1,"id":"671103e3_902147c7","line":81,"in_reply_to":"ca66ca53_32763139","updated":"2021-12-10 18:32:16.000000000","message":"i was considerign using asyncio\nso i could explore that. i dont realy think raw trhead si the best path forward either so this was more sticking with the devil we know then advocating for eventlet.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"697ace2795da429123dc193701911ffc01681443","unresolved":true,"context_lines":[{"line_number":78,"context_line":"be in json format."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"The http web server will be provide by the eventlet using"},{"line_number":81,"context_line":"https://eventlet.net/doc/modules/wsgi.html#eventlet.wsgi.server"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"A new HealthcheckStausItem dataclass will be intoduced to store and"},{"line_number":84,"context_line":"indivugal healthcheck datapoint. The HealtcheckSTatusItem will contain"}],"source_content_type":"text/x-rst","patch_set":1,"id":"c0a80d89_74c1002d","line":81,"in_reply_to":"f3578622_ee64eb14","updated":"2021-12-14 09:41:57.000000000","message":"I agree to defer this to the implementation","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":99,"context_line":"impact if the health-check is queried frequently or in large deployment where"},{"line_number":100,"context_line":"infrequent queries may still degrade the DB and message bus performance due to"},{"line_number":101,"context_line":"the scale of the deployment."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Data model impact"},{"line_number":104,"context_line":"-----------------"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"6b164442_ae69bea7","line":102,"updated":"2021-12-10 17:32:39.000000000","message":"Would be nice to have a list of initial health check items in the doc. Or will that be in a separate spec?","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b2d148252d3eb60d05d5d93e61065b1189279d17","unresolved":true,"context_lines":[{"line_number":99,"context_line":"impact if the health-check is queried frequently or in large deployment where"},{"line_number":100,"context_line":"infrequent queries may still degrade the DB and message bus performance due to"},{"line_number":101,"context_line":"the scale of the deployment."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Data model impact"},{"line_number":104,"context_line":"-----------------"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"28e64247_3c8211e1","line":102,"in_reply_to":"62bf4b74_05f2c2b7","updated":"2021-12-13 11:10:21.000000000","message":"Let\u0027s add a list here. I had trials with the oslo.messaging part and that is not super simple. See comments in https://review.opendev.org/c/openstack/nova/+/731396/2#message-565a684dc59b7753f36816f1d782691a51c72ebb","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"abfcda234e3d05c09c50f7933d38c84808e77f99","unresolved":true,"context_lines":[{"line_number":99,"context_line":"impact if the health-check is queried frequently or in large deployment where"},{"line_number":100,"context_line":"infrequent queries may still degrade the DB and message bus performance due to"},{"line_number":101,"context_line":"the scale of the deployment."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Data model impact"},{"line_number":104,"context_line":"-----------------"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"62bf4b74_05f2c2b7","line":102,"in_reply_to":"6b164442_ae69bea7","updated":"2021-12-10 18:32:16.000000000","message":"I can add it here.\n\nright now I was thinking of the conductor heartbeat.\nOslo.messaging connection state\nDB query failures.\nnotrifactions sending failures\n\nin the ptg i had some other example likel\n\nlibvirt connection status im not sure if i can eaislly get that but i proably can.\n\nthis was eaiser to reason about when it was an active probe","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":113,"context_line":"None"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"While this change will expose a new rest api endpoint it will not be"},{"line_number":116,"context_line":"part of the existing nova api."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"The /healthcheck route will not initially be used to allow those that already"},{"line_number":119,"context_line":"enable the oslo middleware to continue to do so. In a future release nova"}],"source_content_type":"text/x-rst","patch_set":1,"id":"92c13520_4b1f247c","line":116,"updated":"2021-12-10 17:32:39.000000000","message":"Still we probably want to have a small document as a written contract of the format of the REST endpoint clients can code against. I\u0027m OK not to add a version to this API but state instead that we only change the structure of the API in Nova major version.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b2d148252d3eb60d05d5d93e61065b1189279d17","unresolved":false,"context_lines":[{"line_number":113,"context_line":"None"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"While this change will expose a new rest api endpoint it will not be"},{"line_number":116,"context_line":"part of the existing nova api."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"The /healthcheck route will not initially be used to allow those that already"},{"line_number":119,"context_line":"enable the oslo middleware to continue to do so. In a future release nova"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8fe44115_60a91cc9","line":116,"in_reply_to":"8b1a4aa3_3ad04eab","updated":"2021-12-13 11:10:21.000000000","message":"Ack","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"abfcda234e3d05c09c50f7933d38c84808e77f99","unresolved":true,"context_lines":[{"line_number":113,"context_line":"None"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"While this change will expose a new rest api endpoint it will not be"},{"line_number":116,"context_line":"part of the existing nova api."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"The /healthcheck route will not initially be used to allow those that already"},{"line_number":119,"context_line":"enable the oslo middleware to continue to do so. In a future release nova"}],"source_content_type":"text/x-rst","patch_set":1,"id":"8b1a4aa3_3ad04eab","line":116,"in_reply_to":"92c13520_4b1f247c","updated":"2021-12-10 18:32:16.000000000","message":"sure actully right now there is going to be only one supported route which is a GET to /healtcheck\n\nat some point i would like to support some of the following\n\nGET /config to rerive the active config\nPOST /Debug to enable/disable debug loging \nperhaps even put /confgi/section/key to set a mutable key in the config.\n\nbut i don\u0027t plan on supporting any of the above in the initial version.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":116,"context_line":"part of the existing nova api."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"The /healthcheck route will not initially be used to allow those that already"},{"line_number":119,"context_line":"enable the oslo middleware to continue to do so. In a future release nova"},{"line_number":120,"context_line":"reserves the right to add a /healtcheck endpoint that may or may not correspond"},{"line_number":121,"context_line":"to the responce format defined in oslo. A translation between the oslo response"},{"line_number":122,"context_line":"format and the healthcheck module may be provided in the future but it is out"},{"line_number":123,"context_line":"of scope of this spec."},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"a74779bd_eb49cd99","line":121,"range":{"start_line":119,"start_character":49,"end_line":121,"end_character":39},"updated":"2021-12-10 17:32:39.000000000","message":"It is a bit political, but I get your point.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"abfcda234e3d05c09c50f7933d38c84808e77f99","unresolved":false,"context_lines":[{"line_number":116,"context_line":"part of the existing nova api."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"The /healthcheck route will not initially be used to allow those that already"},{"line_number":119,"context_line":"enable the oslo middleware to continue to do so. In a future release nova"},{"line_number":120,"context_line":"reserves the right to add a /healtcheck endpoint that may or may not correspond"},{"line_number":121,"context_line":"to the responce format defined in oslo. A translation between the oslo response"},{"line_number":122,"context_line":"format and the healthcheck module may be provided in the future but it is out"},{"line_number":123,"context_line":"of scope of this spec."},{"line_number":124,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"78e33d2b_6b60b27e","line":121,"range":{"start_line":119,"start_character":49,"end_line":121,"end_character":39},"in_reply_to":"a74779bd_eb49cd99","updated":"2021-12-10 18:32:16.000000000","message":"Ack","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"1ebb5d192da729d14278bc88203f6617fe657982","unresolved":true,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"None"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"While the healtchecks may use the ability to send notrication as an input to"},{"line_number":147,"context_line":"the health of the system it will not impact the Notification subsystem in nova."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Other end user impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"ad694a8a_dec43571","line":146,"range":{"start_line":146,"start_character":0,"end_line":146,"end_character":61},"updated":"2021-12-10 17:32:39.000000000","message":"if this new code will send notifications with oslo.messaging.notifier then I think we should document those notifications","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b2d148252d3eb60d05d5d93e61065b1189279d17","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"None"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"While the healtchecks may use the ability to send notrication as an input to"},{"line_number":147,"context_line":"the health of the system it will not impact the Notification subsystem in nova."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Other end user impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"2bab05de_ed2b30b3","line":146,"range":{"start_line":146,"start_character":0,"end_line":146,"end_character":61},"in_reply_to":"35cd706e_c54dd6a9","updated":"2021-12-13 11:10:21.000000000","message":"OK. I see now. No issue then.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"abfcda234e3d05c09c50f7933d38c84808e77f99","unresolved":true,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"None"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"While the healtchecks may use the ability to send notrication as an input to"},{"line_number":147,"context_line":"the health of the system it will not impact the Notification subsystem in nova."},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"Other end user impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"35cd706e_c54dd6a9","line":146,"range":{"start_line":146,"start_character":0,"end_line":146,"end_character":61},"in_reply_to":"ad694a8a_dec43571","updated":"2021-12-10 18:32:16.000000000","message":"no i was trying to say we may use a failure of other code to send a notifcaion (becaue the connection to rabit failed) as an indication that the service is unhelaty\n\nnot that we would send any notfication in this code.\n\nwe could add notificaion but that might have a performance impact so unless we see a need for them i was going to not add any.","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7e365f5ef69f1de0e0006bd942f5c5a110edf66b","unresolved":true,"context_lines":[{"line_number":170,"context_line":"Other deployer impact"},{"line_number":171,"context_line":"---------------------"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"A single new config option uri will be added to a new healtcheck section"},{"line_number":174,"context_line":"in the nova.conf."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"The config option will be a sting opt that supports a comma separated list of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3cfbdcd4_16dff98b","line":173,"range":{"start_line":173,"start_character":2,"end_line":173,"end_character":8},"updated":"2021-12-09 19:33:39.000000000","message":"actully i proably should make the TTL configurable too\n\nill add that in the next revision","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"7e365f5ef69f1de0e0006bd942f5c5a110edf66b","unresolved":true,"context_lines":[{"line_number":176,"context_line":"The config option will be a sting opt that supports a comma separated list of"},{"line_number":177,"context_line":"URIs with the following format"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"uri\u003d\u003cprotocol\u003e://[host:port|path],\u003cprotocol\u003e://[host:port|path]"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"e.g."},{"line_number":182,"context_line":"[healthcheck]"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1bfc0b92_49419056","line":179,"range":{"start_line":179,"start_character":0,"end_line":179,"end_character":63},"updated":"2021-12-09 19:33:39.000000000","message":"alternitvily i could expose this as tcp_host tcp_port and socket_path\ni dont really mind either way","commit_id":"201fa69c2a49f9b84433d5b9da3de79bac4f5403"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":13,"context_line":"In many modern deployment frameworks, there is an expectation that"},{"line_number":14,"context_line":"an application can expose a health-check endpoint so that the binary"},{"line_number":15,"context_line":"status can be monitored. Nova currently does not provide a native way"},{"line_number":16,"context_line":"to inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. While limit support exist for health checks via"},{"line_number":18,"context_line":"oslo middleware for our wsgi based API binaries, this blueprint seeks"},{"line_number":19,"context_line":"to expose a local health-check endpoint to address this feature gap"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1af997f1_030170a3","line":16,"range":{"start_line":16,"start_character":29,"end_line":16,"end_character":35},"updated":"2021-12-20 15:24:46.000000000","message":"nit: binaries, plural (as we have multiple binaries)","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":13,"context_line":"In many modern deployment frameworks, there is an expectation that"},{"line_number":14,"context_line":"an application can expose a health-check endpoint so that the binary"},{"line_number":15,"context_line":"status can be monitored. Nova currently does not provide a native way"},{"line_number":16,"context_line":"to inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. While limit support exist for health checks via"},{"line_number":18,"context_line":"oslo middleware for our wsgi based API binaries, this blueprint seeks"},{"line_number":19,"context_line":"to expose a local health-check endpoint to address this feature gap"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6ebd99b7_066ef50f","line":16,"range":{"start_line":16,"start_character":42,"end_line":16,"end_character":53},"updated":"2021-12-20 15:24:46.000000000","message":"nit: not \"complicates\", maybe just \"doesn\u0027t help\"","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":13,"context_line":"In many modern deployment frameworks, there is an expectation that"},{"line_number":14,"context_line":"an application can expose a health-check endpoint so that the binary"},{"line_number":15,"context_line":"status can be monitored. Nova currently does not provide a native way"},{"line_number":16,"context_line":"to inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. While limit support exist for health checks via"},{"line_number":18,"context_line":"oslo middleware for our wsgi based API binaries, this blueprint seeks"},{"line_number":19,"context_line":"to expose a local health-check endpoint to address this feature gap"}],"source_content_type":"text/x-rst","patch_set":3,"id":"67871e9c_265b2669","line":16,"range":{"start_line":16,"start_character":29,"end_line":16,"end_character":35},"in_reply_to":"1af997f1_030170a3","updated":"2022-01-13 09:57:26.000000000","message":"Done","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":13,"context_line":"In many modern deployment frameworks, there is an expectation that"},{"line_number":14,"context_line":"an application can expose a health-check endpoint so that the binary"},{"line_number":15,"context_line":"status can be monitored. Nova currently does not provide a native way"},{"line_number":16,"context_line":"to inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. While limit support exist for health checks via"},{"line_number":18,"context_line":"oslo middleware for our wsgi based API binaries, this blueprint seeks"},{"line_number":19,"context_line":"to expose a local health-check endpoint to address this feature gap"}],"source_content_type":"text/x-rst","patch_set":3,"id":"e9367408_1a78b2ae","line":16,"range":{"start_line":16,"start_character":42,"end_line":16,"end_character":53},"in_reply_to":"6ebd99b7_066ef50f","updated":"2022-01-13 09:57:26.000000000","message":"Done","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":14,"context_line":"an application can expose a health-check endpoint so that the binary"},{"line_number":15,"context_line":"status can be monitored. Nova currently does not provide a native way"},{"line_number":16,"context_line":"to inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. While limit support exist for health checks via"},{"line_number":18,"context_line":"oslo middleware for our wsgi based API binaries, this blueprint seeks"},{"line_number":19,"context_line":"to expose a local health-check endpoint to address this feature gap"},{"line_number":20,"context_line":"consistently for all nova components."}],"source_content_type":"text/x-rst","patch_set":3,"id":"23abbf4c_2e7381ea","line":17,"range":{"start_line":17,"start_character":23,"end_line":17,"end_character":28},"updated":"2022-01-10 17:34:21.000000000","message":"limited?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":14,"context_line":"an application can expose a health-check endpoint so that the binary"},{"line_number":15,"context_line":"status can be monitored. Nova currently does not provide a native way"},{"line_number":16,"context_line":"to inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. While limit support exist for health checks via"},{"line_number":18,"context_line":"oslo middleware for our wsgi based API binaries, this blueprint seeks"},{"line_number":19,"context_line":"to expose a local health-check endpoint to address this feature gap"},{"line_number":20,"context_line":"consistently for all nova components."}],"source_content_type":"text/x-rst","patch_set":3,"id":"0a4b1a89_41dc231b","line":17,"range":{"start_line":17,"start_character":37,"end_line":17,"end_character":42},"updated":"2021-12-20 15:24:46.000000000","message":"nit: exists","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":14,"context_line":"an application can expose a health-check endpoint so that the binary"},{"line_number":15,"context_line":"status can be monitored. Nova currently does not provide a native way"},{"line_number":16,"context_line":"to inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. While limit support exist for health checks via"},{"line_number":18,"context_line":"oslo middleware for our wsgi based API binaries, this blueprint seeks"},{"line_number":19,"context_line":"to expose a local health-check endpoint to address this feature gap"},{"line_number":20,"context_line":"consistently for all nova components."}],"source_content_type":"text/x-rst","patch_set":3,"id":"f4fee7d6_8eb82cbe","line":17,"range":{"start_line":17,"start_character":37,"end_line":17,"end_character":42},"in_reply_to":"0a4b1a89_41dc231b","updated":"2022-01-13 09:57:26.000000000","message":"Done","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":14,"context_line":"an application can expose a health-check endpoint so that the binary"},{"line_number":15,"context_line":"status can be monitored. Nova currently does not provide a native way"},{"line_number":16,"context_line":"to inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. While limit support exist for health checks via"},{"line_number":18,"context_line":"oslo middleware for our wsgi based API binaries, this blueprint seeks"},{"line_number":19,"context_line":"to expose a local health-check endpoint to address this feature gap"},{"line_number":20,"context_line":"consistently for all nova components."}],"source_content_type":"text/x-rst","patch_set":3,"id":"ab966bc4_8c259973","line":17,"range":{"start_line":17,"start_character":23,"end_line":17,"end_character":28},"in_reply_to":"23abbf4c_2e7381ea","updated":"2022-01-13 09:57:26.000000000","message":"Done","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":16,"context_line":"to inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. While limit support exist for health checks via"},{"line_number":18,"context_line":"oslo middleware for our wsgi based API binaries, this blueprint seeks"},{"line_number":19,"context_line":"to expose a local health-check endpoint to address this feature gap"},{"line_number":20,"context_line":"consistently for all nova components."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"8be6be0e_b36fee7f","line":19,"range":{"start_line":19,"start_character":31,"end_line":19,"end_character":39},"updated":"2021-12-20 15:24:46.000000000","message":"HTTP endpoint, then ?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":16,"context_line":"to inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. While limit support exist for health checks via"},{"line_number":18,"context_line":"oslo middleware for our wsgi based API binaries, this blueprint seeks"},{"line_number":19,"context_line":"to expose a local health-check endpoint to address this feature gap"},{"line_number":20,"context_line":"consistently for all nova components."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"cdbc31bc_fc64ccff","line":19,"range":{"start_line":19,"start_character":31,"end_line":19,"end_character":39},"in_reply_to":"8be6be0e_b36fee7f","updated":"2022-01-10 17:34:21.000000000","message":"I think in the modern world when someone says \"health-check endpoint\" it\u0027s assumed to be HTTP.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":16,"context_line":"to inspect the health of its binary which complicates cloud monitoring"},{"line_number":17,"context_line":"and maintenance. While limit support exist for health checks via"},{"line_number":18,"context_line":"oslo middleware for our wsgi based API binaries, this blueprint seeks"},{"line_number":19,"context_line":"to expose a local health-check endpoint to address this feature gap"},{"line_number":20,"context_line":"consistently for all nova components."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"0d5512d5_af610326","line":19,"range":{"start_line":19,"start_character":31,"end_line":19,"end_character":39},"in_reply_to":"cdbc31bc_fc64ccff","updated":"2022-01-13 09:57:26.000000000","message":"Done","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"This is also quite unfriendly to new nova users who have not gained enough"},{"line_number":37,"context_line":"experience with operating nova to know what warning signs they should look"},{"line_number":38,"context_line":"for such as inability to connect to the message bus. Nova developer however"},{"line_number":39,"context_line":"do know what some of the important health indicators are and can expose"},{"line_number":40,"context_line":"those as a local healthcare endpoint that operators can use instead."},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"c12bce35_5634cd55","line":38,"range":{"start_line":38,"start_character":58,"end_line":38,"end_character":67},"updated":"2022-01-10 17:34:21.000000000","message":"developers","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"This is also quite unfriendly to new nova users who have not gained enough"},{"line_number":37,"context_line":"experience with operating nova to know what warning signs they should look"},{"line_number":38,"context_line":"for such as inability to connect to the message bus. Nova developer however"},{"line_number":39,"context_line":"do know what some of the important health indicators are and can expose"},{"line_number":40,"context_line":"those as a local healthcare endpoint that operators can use instead."},{"line_number":41,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"dcc32f7e_4ba89532","line":38,"range":{"start_line":38,"start_character":58,"end_line":38,"end_character":67},"in_reply_to":"c12bce35_5634cd55","updated":"2022-01-13 09:57:26.000000000","message":"Done","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":38,"context_line":"for such as inability to connect to the message bus. Nova developer however"},{"line_number":39,"context_line":"do know what some of the important health indicators are and can expose"},{"line_number":40,"context_line":"those as a local healthcare endpoint that operators can use instead."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Use Cases"},{"line_number":44,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ff1f3b6d_aed9f4f1","line":41,"updated":"2021-12-20 15:24:46.000000000","message":"you should also explain why the existed oslo.middleware healthcheck middleware is not good.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":38,"context_line":"for such as inability to connect to the message bus. Nova developer however"},{"line_number":39,"context_line":"do know what some of the important health indicators are and can expose"},{"line_number":40,"context_line":"those as a local healthcare endpoint that operators can use instead."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Use Cases"},{"line_number":44,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9d678ca3_30fac639","line":41,"in_reply_to":"ff1f3b6d_aed9f4f1","updated":"2022-01-10 17:34:21.000000000","message":"I guess it seems obvious to me that for non-API services, the api middleware doesn\u0027t apply. The big problem here is that a container tool that is starting nova-compute has no way to tell if it\u0027s healthy and thus no way to tell if it needs to be restarted.\n\nThe long-held misunderstanding was that we need to monitor \"the health of nova\" but we don\u0027t -- we need to know \"is this one compute worker that I spawned healthy?\"\n\nSo maybe a clarification of the above is what we need.. that we\u0027re talking about the individual services, and the health checked by the thing maintaining the lifecycle of them, and not the health of the cluster.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":44,"context_line":"---------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"As an operator, I want a simple health check I can consume to know"},{"line_number":47,"context_line":"if a nova process is ``pass``, ``warn``, or ``fail``."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As an operator I want this health check to not impact the performance of the"},{"line_number":50,"context_line":"service so it can be queried frequently at short intervals."}],"source_content_type":"text/x-rst","patch_set":3,"id":"4fa0b983_6a5a991c","line":47,"range":{"start_line":47,"start_character":21,"end_line":47,"end_character":53},"updated":"2021-12-20 15:24:46.000000000","message":"nit maybe you shouldn\u0027t be directly telling here what would be the returned values. Here, the case for the operator would be \"as an operator, I want to know whether this nova service works correctly or has some problems.\"","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":47,"context_line":"if a nova process is ``pass``, ``warn``, or ``fail``."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As an operator I want this health check to not impact the performance of the"},{"line_number":50,"context_line":"service so it can be queried frequently at short intervals."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As a deployment tool implementer, I want the health check to be local with no"},{"line_number":53,"context_line":"dependencies on other hosts or services to function so I can integrate it with"}],"source_content_type":"text/x-rst","patch_set":3,"id":"efb56736_f29f2ff5","line":50,"updated":"2021-12-20 15:24:46.000000000","message":"++","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":47,"context_line":"if a nova process is ``pass``, ``warn``, or ``fail``."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"As an operator I want this health check to not impact the performance of the"},{"line_number":50,"context_line":"service so it can be queried frequently at short intervals."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As a deployment tool implementer, I want the health check to be local with no"},{"line_number":53,"context_line":"dependencies on other hosts or services to function so I can integrate it with"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dae99415_37d81a4f","line":50,"in_reply_to":"efb56736_f29f2ff5","updated":"2022-01-13 09:57:26.000000000","message":"Ack","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As a deployment tool implementer, I want the health check to be local with no"},{"line_number":53,"context_line":"dependencies on other hosts or services to function so I can integrate it with"},{"line_number":54,"context_line":"service managers such as systemd or container runtime like docker"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"As a packager, I would like using the health check endpoint to not require"},{"line_number":57,"context_line":"special clients or packages to consume them. CURL, socat, or netcat should be"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dd898b56_dfdb9a3f","line":54,"updated":"2021-12-20 15:24:46.000000000","message":"++","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"As a deployment tool implementer, I want the health check to be local with no"},{"line_number":53,"context_line":"dependencies on other hosts or services to function so I can integrate it with"},{"line_number":54,"context_line":"service managers such as systemd or container runtime like docker"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"As a packager, I would like using the health check endpoint to not require"},{"line_number":57,"context_line":"special clients or packages to consume them. CURL, socat, or netcat should be"}],"source_content_type":"text/x-rst","patch_set":3,"id":"f8a122ad_3e4403cb","line":54,"in_reply_to":"dd898b56_dfdb9a3f","updated":"2022-01-13 09:57:26.000000000","message":"Ack","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":54,"context_line":"service managers such as systemd or container runtime like docker"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"As a packager, I would like using the health check endpoint to not require"},{"line_number":57,"context_line":"special clients or packages to consume them. CURL, socat, or netcat should be"},{"line_number":58,"context_line":"all that is required to connect to the health check and retrieve the service"},{"line_number":59,"context_line":"status."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1236cab1_a2dcdd40","line":57,"range":{"start_line":57,"start_character":45,"end_line":57,"end_character":49},"updated":"2021-12-20 15:24:46.000000000","message":"nit: cURL","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":54,"context_line":"service managers such as systemd or container runtime like docker"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"As a packager, I would like using the health check endpoint to not require"},{"line_number":57,"context_line":"special clients or packages to consume them. CURL, socat, or netcat should be"},{"line_number":58,"context_line":"all that is required to connect to the health check and retrieve the service"},{"line_number":59,"context_line":"status."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"078e2516_20f37003","line":57,"range":{"start_line":57,"start_character":45,"end_line":57,"end_character":49},"in_reply_to":"1236cab1_a2dcdd40","updated":"2022-01-13 09:57:26.000000000","message":"Done","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":56,"context_line":"As a packager, I would like using the health check endpoint to not require"},{"line_number":57,"context_line":"special clients or packages to consume them. CURL, socat, or netcat should be"},{"line_number":58,"context_line":"all that is required to connect to the health check and retrieve the service"},{"line_number":59,"context_line":"status."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"As an operator I would like to be able to use health-check of the nova API and"},{"line_number":62,"context_line":"metadata services to manage the membership of endpoints in my load-balancer"}],"source_content_type":"text/x-rst","patch_set":3,"id":"affee5e3_82a35bb9","line":59,"updated":"2021-12-20 15:24:46.000000000","message":"++","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":56,"context_line":"As a packager, I would like using the health check endpoint to not require"},{"line_number":57,"context_line":"special clients or packages to consume them. CURL, socat, or netcat should be"},{"line_number":58,"context_line":"all that is required to connect to the health check and retrieve the service"},{"line_number":59,"context_line":"status."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"As an operator I would like to be able to use health-check of the nova API and"},{"line_number":62,"context_line":"metadata services to manage the membership of endpoints in my load-balancer"}],"source_content_type":"text/x-rst","patch_set":3,"id":"92eb5227_e58fe0eb","line":59,"in_reply_to":"affee5e3_82a35bb9","updated":"2022-01-13 09:57:26.000000000","message":"Ack","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Definitions"},{"line_number":69,"context_line":"-----------"},{"line_number":70,"context_line":"``pass``: all health indicators are passing and there TTL has not expired"},{"line_number":71,"context_line":"``warn``: any health indicator has an expired TTL or where there is"},{"line_number":72,"context_line":"          a partial failure such as one cell is unreachable but otherwise"},{"line_number":73,"context_line":"          the API is functional then it degraded and should be reported as"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c057eb7e_eb08a7e8","line":70,"range":{"start_line":70,"start_character":54,"end_line":70,"end_character":57},"updated":"2022-01-10 17:34:21.000000000","message":"by TTL you mean \"time I expect to have heard from something over the bus\" or something like that right?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Definitions"},{"line_number":69,"context_line":"-----------"},{"line_number":70,"context_line":"``pass``: all health indicators are passing and there TTL has not expired"},{"line_number":71,"context_line":"``warn``: any health indicator has an expired TTL or where there is"},{"line_number":72,"context_line":"          a partial failure such as one cell is unreachable but otherwise"},{"line_number":73,"context_line":"          the API is functional then it degraded and should be reported as"}],"source_content_type":"text/x-rst","patch_set":3,"id":"87ed348e_c7393872","line":70,"range":{"start_line":70,"start_character":48,"end_line":70,"end_character":53},"updated":"2022-01-10 17:34:21.000000000","message":"the?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":true,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Definitions"},{"line_number":69,"context_line":"-----------"},{"line_number":70,"context_line":"``pass``: all health indicators are passing and there TTL has not expired"},{"line_number":71,"context_line":"``warn``: any health indicator has an expired TTL or where there is"},{"line_number":72,"context_line":"          a partial failure such as one cell is unreachable but otherwise"},{"line_number":73,"context_line":"          the API is functional then it degraded and should be reported as"}],"source_content_type":"text/x-rst","patch_set":3,"id":"94463f5f_65447a41","line":70,"range":{"start_line":70,"start_character":54,"end_line":70,"end_character":57},"in_reply_to":"c057eb7e_eb08a7e8","updated":"2022-01-13 09:57:26.000000000","message":"i added a definitin.\n\nbut its basically how long a health check result is valid for in seconds.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":68,"context_line":"Definitions"},{"line_number":69,"context_line":"-----------"},{"line_number":70,"context_line":"``pass``: all health indicators are passing and there TTL has not expired"},{"line_number":71,"context_line":"``warn``: any health indicator has an expired TTL or where there is"},{"line_number":72,"context_line":"          a partial failure such as one cell is unreachable but otherwise"},{"line_number":73,"context_line":"          the API is functional then it degraded and should be reported as"},{"line_number":74,"context_line":"          ``warn``."}],"source_content_type":"text/x-rst","patch_set":3,"id":"50d10eaf_68d0d0dc","line":71,"range":{"start_line":71,"start_character":53,"end_line":71,"end_character":58},"updated":"2021-12-20 15:24:46.000000000","message":"nit: remove \u0027where\u0027","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":69,"context_line":"-----------"},{"line_number":70,"context_line":"``pass``: all health indicators are passing and there TTL has not expired"},{"line_number":71,"context_line":"``warn``: any health indicator has an expired TTL or where there is"},{"line_number":72,"context_line":"          a partial failure such as one cell is unreachable but otherwise"},{"line_number":73,"context_line":"          the API is functional then it degraded and should be reported as"},{"line_number":74,"context_line":"          ``warn``."},{"line_number":75,"context_line":"``fail``: any health indicator is reporting an error or all TTLs are"}],"source_content_type":"text/x-rst","patch_set":3,"id":"a87c427d_b3c2a654","line":72,"range":{"start_line":72,"start_character":36,"end_line":72,"end_character":59},"updated":"2021-12-20 15:24:46.000000000","message":"should this be a \"warn\" or a \"fail\" for this example ?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":70,"context_line":"``pass``: all health indicators are passing and there TTL has not expired"},{"line_number":71,"context_line":"``warn``: any health indicator has an expired TTL or where there is"},{"line_number":72,"context_line":"          a partial failure such as one cell is unreachable but otherwise"},{"line_number":73,"context_line":"          the API is functional then it degraded and should be reported as"},{"line_number":74,"context_line":"          ``warn``."},{"line_number":75,"context_line":"``fail``: any health indicator is reporting an error or all TTLs are"},{"line_number":76,"context_line":"          expired and the degraded state is not suitable."}],"source_content_type":"text/x-rst","patch_set":3,"id":"235e015d_e76f1787","line":73,"range":{"start_line":73,"start_character":10,"end_line":73,"end_character":49},"updated":"2021-12-20 15:24:46.000000000","message":"well, this doesn\u0027t mean anything for a non-API service, like nova-conductor binary healthcheck, right?\n\nTBC, for me :\n- pass : LGTM.\n- warn : degraded binary state, some issues could appear that aren\u0027t blocking\n- fail : binary is running but there is at least one blocking issue","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":70,"context_line":"``pass``: all health indicators are passing and there TTL has not expired"},{"line_number":71,"context_line":"``warn``: any health indicator has an expired TTL or where there is"},{"line_number":72,"context_line":"          a partial failure such as one cell is unreachable but otherwise"},{"line_number":73,"context_line":"          the API is functional then it degraded and should be reported as"},{"line_number":74,"context_line":"          ``warn``."},{"line_number":75,"context_line":"``fail``: any health indicator is reporting an error or all TTLs are"},{"line_number":76,"context_line":"          expired and the degraded state is not suitable."}],"source_content_type":"text/x-rst","patch_set":3,"id":"2b611b04_f5d34294","line":73,"range":{"start_line":73,"start_character":10,"end_line":73,"end_character":49},"in_reply_to":"235e015d_e76f1787","updated":"2022-01-10 17:34:21.000000000","message":"\u003e well, this doesn\u0027t mean anything for a non-API service, like nova-conductor binary healthcheck, right?\n\nI don\u0027t know what this means. Can you re-phrase?\n\nI think that pass/fail mean something for every binary. If nova-compute is fail, I restart N times and if it never goes healthy, then I stop trying (probably). TBH, I\u0027m not sure about the warn state, as not being able to contact one cell for a conductor would mean I\u0027m just going to attract requests that I can\u0027t fulfill and I should instead be stopped.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":73,"context_line":"          the API is functional then it degraded and should be reported as"},{"line_number":74,"context_line":"          ``warn``."},{"line_number":75,"context_line":"``fail``: any health indicator is reporting an error or all TTLs are"},{"line_number":76,"context_line":"          expired and the degraded state is not suitable."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":".. Note:"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1488d332_a5dcf452","line":76,"range":{"start_line":76,"start_character":22,"end_line":76,"end_character":57},"updated":"2021-12-20 15:24:46.000000000","message":"fwiw, we should make it clear what is \u0027not suitable\u0027 and document it accordingly for all binaries.\nLATER : oh, you did this below.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":".. Note:"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   In line with the recommendation in the ietf RFC api health check draft,"},{"line_number":81,"context_line":"   ``pass`` will respond with a 200 OK"},{"line_number":82,"context_line":"   ``warn`` will respond with a 201 Created to differentiated from ``pass``"},{"line_number":83,"context_line":"   ``fail`` will respond with a 503 Service Unavailable"}],"source_content_type":"text/x-rst","patch_set":3,"id":"2e5267e2_b5bc60b5","line":80,"updated":"2021-12-20 15:24:46.000000000","message":"I guess you mention https://datatracker.ietf.org/doc/html/draft-inadarei-api-health-check-06\n\nWell, I\u0027m not super happy to rely on a draft RPC.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":".. Note:"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   In line with the recommendation in the ietf RFC api health check draft,"},{"line_number":81,"context_line":"   ``pass`` will respond with a 200 OK"},{"line_number":82,"context_line":"   ``warn`` will respond with a 201 Created to differentiated from ``pass``"},{"line_number":83,"context_line":"   ``fail`` will respond with a 503 Service Unavailable"}],"source_content_type":"text/x-rst","patch_set":3,"id":"2aa5a32d_893fd8b1","line":80,"range":{"start_line":80,"start_character":42,"end_line":80,"end_character":46},"updated":"2022-01-10 17:34:21.000000000","message":"IETF","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":".. Note:"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   In line with the recommendation in the ietf RFC api health check draft,"},{"line_number":81,"context_line":"   ``pass`` will respond with a 200 OK"},{"line_number":82,"context_line":"   ``warn`` will respond with a 201 Created to differentiated from ``pass``"},{"line_number":83,"context_line":"   ``fail`` will respond with a 503 Service Unavailable"}],"source_content_type":"text/x-rst","patch_set":3,"id":"63d17971_d00017bc","line":80,"in_reply_to":"2e5267e2_b5bc60b5","updated":"2022-01-10 17:34:21.000000000","message":"\u003e Well, I\u0027m not super happy to rely on a draft RPC.\n\nLOL, everything on the internet was originally implemented as pre-draft :)","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   In line with the recommendation in the ietf RFC api health check draft,"},{"line_number":81,"context_line":"   ``pass`` will respond with a 200 OK"},{"line_number":82,"context_line":"   ``warn`` will respond with a 201 Created to differentiated from ``pass``"},{"line_number":83,"context_line":"   ``fail`` will respond with a 503 Service Unavailable"},{"line_number":84,"context_line":"   Content-Type: application/health+json will be used in all cases."},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"afc3bf15_685f6467","line":82,"range":{"start_line":82,"start_character":3,"end_line":82,"end_character":75},"updated":"2021-12-20 15:24:46.000000000","message":"hmmm, no. \nIf you rely on the draft RPC, you can use any 2xx-3xx return code :\n In case of the \"warn\" status, endpoints MUST return\n   HTTP status in the 2xx-3xx range, and additional information SHOULD\n   be provided, utilizing optional fields of the response.\n\nI don\u0027t wanna bikeshed on the return code itself but HTTP203 Non-Authoritative Information seems conceptually closer to what \"warn\" means (some payload got changed by a middleware) or we could better use Warning headers :\n\nhttps://datatracker.ietf.org/doc/html/rfc7231#section-6.3.4\nhttps://datatracker.ietf.org/doc/html/rfc7234#section-5.5\n\n\nOn the other hand, HTTP201 seems wrong to me as we haven\u0027t created anything that we would return in the payload.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bbcc784cb4f0a9da725f785764af761073140d17","unresolved":true,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   In line with the recommendation in the ietf RFC api health check draft,"},{"line_number":81,"context_line":"   ``pass`` will respond with a 200 OK"},{"line_number":82,"context_line":"   ``warn`` will respond with a 201 Created to differentiated from ``pass``"},{"line_number":83,"context_line":"   ``fail`` will respond with a 503 Service Unavailable"},{"line_number":84,"context_line":"   Content-Type: application/health+json will be used in all cases."},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"f950c961_04e790c4","line":82,"range":{"start_line":82,"start_character":3,"end_line":82,"end_character":75},"in_reply_to":"048bb087_1b93a191","updated":"2022-01-11 16:37:18.000000000","message":"yes honest\ni was think more like \n\ncurl -s -o /dev/null -w \"%{http_code}\" http://www.example.org/\n\nwhich will print the responce code.\n\ni tought here was actully a flag in curl to set the expect repsonce code and translate that to a bash exit code.\n\nsomeithgn liek \n\ncurl --expected 200,201 -s -o /dev/null http://www.example.org/ \u0026\u0026 echo $?\n\nit looks like that i not actully a thing.\n\nyou can specify to retry on specific code but not to exit 0 or non zeor based on if it is in our not in the set.\n\nso i think ill remvoe this and just use 200OK for both and you can parse the json","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"   In line with the recommendation in the ietf RFC api health check draft,"},{"line_number":81,"context_line":"   ``pass`` will respond with a 200 OK"},{"line_number":82,"context_line":"   ``warn`` will respond with a 201 Created to differentiated from ``pass``"},{"line_number":83,"context_line":"   ``fail`` will respond with a 503 Service Unavailable"},{"line_number":84,"context_line":"   Content-Type: application/health+json will be used in all cases."},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"048bb087_1b93a191","line":82,"range":{"start_line":82,"start_character":3,"end_line":82,"end_character":75},"in_reply_to":"afc3bf15_685f6467","updated":"2022-01-10 17:34:21.000000000","message":"Agree. Is the point of using something other than 200 to make it easy to curl | grep \u0027HTTP.*201\u0027 to determine if it was warn vs pass?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":80,"context_line":"   In line with the recommendation in the ietf RFC api health check draft,"},{"line_number":81,"context_line":"   ``pass`` will respond with a 200 OK"},{"line_number":82,"context_line":"   ``warn`` will respond with a 201 Created to differentiated from ``pass``"},{"line_number":83,"context_line":"   ``fail`` will respond with a 503 Service Unavailable"},{"line_number":84,"context_line":"   Content-Type: application/health+json will be used in all cases."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"63c5f825_706df1d3","line":83,"range":{"start_line":83,"start_character":25,"end_line":83,"end_character":55},"updated":"2021-12-20 15:24:46.000000000","message":"I\u0027m fully OK with it","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":91,"context_line":"In general if any of the health check indicators are failing then the service"},{"line_number":92,"context_line":"should be reported as ``fail`` however if the specific error condition is"},{"line_number":93,"context_line":"recoverable or only a partial failure the ``warn`` state can and should be"},{"line_number":94,"context_line":"used."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"An example of this is a service that losses a connection to the message bus,"},{"line_number":97,"context_line":"when the connection is lost it should go to the ``warn`` state, if the first"}],"source_content_type":"text/x-rst","patch_set":3,"id":"44cf1408_fe0a7887","line":94,"updated":"2021-12-20 15:24:46.000000000","message":"looks to me a good definition.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":91,"context_line":"In general if any of the health check indicators are failing then the service"},{"line_number":92,"context_line":"should be reported as ``fail`` however if the specific error condition is"},{"line_number":93,"context_line":"recoverable or only a partial failure the ``warn`` state can and should be"},{"line_number":94,"context_line":"used."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"An example of this is a service that losses a connection to the message bus,"},{"line_number":97,"context_line":"when the connection is lost it should go to the ``warn`` state, if the first"}],"source_content_type":"text/x-rst","patch_set":3,"id":"28d16932_f4878d60","line":94,"in_reply_to":"44cf1408_fe0a7887","updated":"2022-01-13 09:57:26.000000000","message":"Ack","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":93,"context_line":"recoverable or only a partial failure the ``warn`` state can and should be"},{"line_number":94,"context_line":"used."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"An example of this is a service that losses a connection to the message bus,"},{"line_number":97,"context_line":"when the connection is lost it should go to the ``warn`` state, if the first"},{"line_number":98,"context_line":"attempt to reconnect fails it should go to the ``fail`` status. Another example"},{"line_number":99,"context_line":"would be for the super conductor or API, if either service is unable"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9e109ffd_0e45da0b","line":96,"range":{"start_line":96,"start_character":37,"end_line":96,"end_character":43},"updated":"2022-01-10 17:34:21.000000000","message":"loses or probably better yet: \"has lost\"","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":93,"context_line":"recoverable or only a partial failure the ``warn`` state can and should be"},{"line_number":94,"context_line":"used."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"An example of this is a service that losses a connection to the message bus,"},{"line_number":97,"context_line":"when the connection is lost it should go to the ``warn`` state, if the first"},{"line_number":98,"context_line":"attempt to reconnect fails it should go to the ``fail`` status. Another example"},{"line_number":99,"context_line":"would be for the super conductor or API, if either service is unable"}],"source_content_type":"text/x-rst","patch_set":3,"id":"aef267f4_9bcac416","line":96,"range":{"start_line":96,"start_character":37,"end_line":96,"end_character":43},"in_reply_to":"9e109ffd_0e45da0b","updated":"2022-01-13 09:57:26.000000000","message":"Done","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"An example of this is a service that losses a connection to the message bus,"},{"line_number":97,"context_line":"when the connection is lost it should go to the ``warn`` state, if the first"},{"line_number":98,"context_line":"attempt to reconnect fails it should go to the ``fail`` status. Another example"},{"line_number":99,"context_line":"would be for the super conductor or API, if either service is unable"},{"line_number":100,"context_line":"to connect to a specific cell DB but has connected to other"},{"line_number":101,"context_line":"cells(excluding cell 0) within the TTL period then it should report a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"8bfbde7d_a9ef5a1e","line":98,"updated":"2021-12-20 15:24:46.000000000","message":"agreed on the first example. Transient states seem WARN to me.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":99,"context_line":"would be for the super conductor or API, if either service is unable"},{"line_number":100,"context_line":"to connect to a specific cell DB but has connected to other"},{"line_number":101,"context_line":"cells(excluding cell 0) within the TTL period then it should report a"},{"line_number":102,"context_line":"``warn`` State, if connections to all cells fails it should report ``fail``."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In may cases external management systems will treat degraded and faulty as"},{"line_number":105,"context_line":"equivalent and raise an alarm or restart the service. While this spec does"}],"source_content_type":"text/x-rst","patch_set":3,"id":"0016dd10_ff875bc6","line":102,"updated":"2021-12-20 15:24:46.000000000","message":"this depends on whether we had to persist some object, right? I mean, if we want to save an instance when the cell DB was offline, then it will return an exception for the API binary, right?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":99,"context_line":"would be for the super conductor or API, if either service is unable"},{"line_number":100,"context_line":"to connect to a specific cell DB but has connected to other"},{"line_number":101,"context_line":"cells(excluding cell 0) within the TTL period then it should report a"},{"line_number":102,"context_line":"``warn`` State, if connections to all cells fails it should report ``fail``."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In may cases external management systems will treat degraded and faulty as"},{"line_number":105,"context_line":"equivalent and raise an alarm or restart the service. While this spec does"}],"source_content_type":"text/x-rst","patch_set":3,"id":"4d522e02_7718888c","line":102,"in_reply_to":"0016dd10_ff875bc6","updated":"2022-01-10 17:34:21.000000000","message":"Okay I see why you were saying this above. This is a hard case because being something responsible for talking to any cell (i.e. scheduler, conductor, api), really any inability to connect to one is going to be a fail magnet. But, in the case where a cell is actually down, then everything will be in that state.\n\nSo I dunno, I\u0027m not sure how to do this really. If \"warn\" isn\u0027t supposed to be an actionable state, I\u0027m not sure if it\u0027s really important to report an individual cell outage in this way.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":true,"context_lines":[{"line_number":99,"context_line":"would be for the super conductor or API, if either service is unable"},{"line_number":100,"context_line":"to connect to a specific cell DB but has connected to other"},{"line_number":101,"context_line":"cells(excluding cell 0) within the TTL period then it should report a"},{"line_number":102,"context_line":"``warn`` State, if connections to all cells fails it should report ``fail``."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In may cases external management systems will treat degraded and faulty as"},{"line_number":105,"context_line":"equivalent and raise an alarm or restart the service. While this spec does"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6892961c_eb76fb79","line":102,"in_reply_to":"4d522e02_7718888c","updated":"2022-01-13 09:57:26.000000000","message":"ill just remove the second example for now.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":99,"context_line":"would be for the super conductor or API, if either service is unable"},{"line_number":100,"context_line":"to connect to a specific cell DB but has connected to other"},{"line_number":101,"context_line":"cells(excluding cell 0) within the TTL period then it should report a"},{"line_number":102,"context_line":"``warn`` State, if connections to all cells fails it should report ``fail``."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In may cases external management systems will treat degraded and faulty as"},{"line_number":105,"context_line":"equivalent and raise an alarm or restart the service. While this spec does"}],"source_content_type":"text/x-rst","patch_set":3,"id":"d84104f6_1ac524fc","line":102,"in_reply_to":"6892961c_eb76fb79","updated":"2022-01-13 11:12:39.000000000","message":"agreed, it would be an implementation detail when we will review the change adding WARN for a cells v2 issue :)","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73e698b5216d1a488ea6b36676568f6ce1deae85","unresolved":true,"context_lines":[{"line_number":101,"context_line":"cells(excluding cell 0) within the TTL period then it should report a"},{"line_number":102,"context_line":"``warn`` State, if connections to all cells fails it should report ``fail``."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In may cases external management systems will treat degraded and faulty as"},{"line_number":105,"context_line":"equivalent and raise an alarm or restart the service. While this spec does"},{"line_number":106,"context_line":"not specify how you should recover form a Degraded or Faulty state it is"},{"line_number":107,"context_line":"important to include a human readable description of why the Degraded/Faulty"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6cb1067a_ac6d5901","line":104,"range":{"start_line":104,"start_character":52,"end_line":104,"end_character":71},"updated":"2021-12-17 17:49:41.000000000","message":"``warn`` and ``fail``","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73e698b5216d1a488ea6b36676568f6ce1deae85","unresolved":true,"context_lines":[{"line_number":101,"context_line":"cells(excluding cell 0) within the TTL period then it should report a"},{"line_number":102,"context_line":"``warn`` State, if connections to all cells fails it should report ``fail``."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In may cases external management systems will treat degraded and faulty as"},{"line_number":105,"context_line":"equivalent and raise an alarm or restart the service. While this spec does"},{"line_number":106,"context_line":"not specify how you should recover form a Degraded or Faulty state it is"},{"line_number":107,"context_line":"important to include a human readable description of why the Degraded/Faulty"}],"source_content_type":"text/x-rst","patch_set":3,"id":"ca16b832_d081758c","line":104,"range":{"start_line":104,"start_character":3,"end_line":104,"end_character":6},"updated":"2021-12-17 17:49:41.000000000","message":"many","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":102,"context_line":"``warn`` State, if connections to all cells fails it should report ``fail``."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In may cases external management systems will treat degraded and faulty as"},{"line_number":105,"context_line":"equivalent and raise an alarm or restart the service. While this spec does"},{"line_number":106,"context_line":"not specify how you should recover form a Degraded or Faulty state it is"},{"line_number":107,"context_line":"important to include a human readable description of why the Degraded/Faulty"},{"line_number":108,"context_line":"state was entered."}],"source_content_type":"text/x-rst","patch_set":3,"id":"67f62351_3f3a7886","line":105,"range":{"start_line":105,"start_character":0,"end_line":105,"end_character":10},"updated":"2022-01-10 17:34:21.000000000","message":"Right, so isn\u0027t this a good reason not to report one cell outage as warn?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73e698b5216d1a488ea6b36676568f6ce1deae85","unresolved":true,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"In may cases external management systems will treat degraded and faulty as"},{"line_number":105,"context_line":"equivalent and raise an alarm or restart the service. While this spec does"},{"line_number":106,"context_line":"not specify how you should recover form a Degraded or Faulty state it is"},{"line_number":107,"context_line":"important to include a human readable description of why the Degraded/Faulty"},{"line_number":108,"context_line":"state was entered."},{"line_number":109,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"b359a412_34782eb1","line":106,"range":{"start_line":106,"start_character":42,"end_line":106,"end_character":60},"updated":"2021-12-17 17:49:41.000000000","message":"``warn`` and ``fail``","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73e698b5216d1a488ea6b36676568f6ce1deae85","unresolved":true,"context_lines":[{"line_number":104,"context_line":"In may cases external management systems will treat degraded and faulty as"},{"line_number":105,"context_line":"equivalent and raise an alarm or restart the service. While this spec does"},{"line_number":106,"context_line":"not specify how you should recover form a Degraded or Faulty state it is"},{"line_number":107,"context_line":"important to include a human readable description of why the Degraded/Faulty"},{"line_number":108,"context_line":"state was entered."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Services in the ``warn`` state are still considered healthy in most case but"}],"source_content_type":"text/x-rst","patch_set":3,"id":"cbba8e4b_51a244c1","line":107,"range":{"start_line":107,"start_character":61,"end_line":107,"end_character":76},"updated":"2021-12-17 17:49:41.000000000","message":"delete","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":105,"context_line":"equivalent and raise an alarm or restart the service. While this spec does"},{"line_number":106,"context_line":"not specify how you should recover form a Degraded or Faulty state it is"},{"line_number":107,"context_line":"important to include a human readable description of why the Degraded/Faulty"},{"line_number":108,"context_line":"state was entered."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"Services in the ``warn`` state are still considered healthy in most case but"},{"line_number":111,"context_line":"they may be about to fail soon or be partially degraded."}],"source_content_type":"text/x-rst","patch_set":3,"id":"e9b9ed48_99a6847d","line":108,"updated":"2021-12-20 15:24:46.000000000","message":"The more I think about the difference between Fail and Warn, the less I think we should bikeshed on what we should tell \"degraded\".\n\nMaybe by default we should say \"faulty\" for all of the issues except maybe only a very few problems, like a RPC connection timeout.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":115,"context_line":"  where no health check items are currently registered such as during start up"},{"line_number":116,"context_line":"  the health check status will be considered ``pass`` not ``warn``"},{"line_number":117,"context_line":"  or ``fail``. This will prevent restart loops for and service managers that"},{"line_number":118,"context_line":"  Treat any value other then ``pass`` as an error state."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"code changes"},{"line_number":121,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"00ca02c8_8cf833dc","line":118,"updated":"2021-12-20 15:24:46.000000000","message":"+1000","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"  All health check state will be stored in memory and reset/lost on restart"},{"line_number":132,"context_line":"  of the binary. For service that support dynamic reconfiugation via SIG_HUP"},{"line_number":133,"context_line":"  the health check data will be reset as part of this process."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"The health check manager will be responsible for creating the health check"},{"line_number":136,"context_line":"endpoint when it is enabled in the nova.conf and exposing the health check"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9234e890_c9d4aa64","line":133,"updated":"2021-12-20 15:24:46.000000000","message":"++","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"  All health check state will be stored in memory and reset/lost on restart"},{"line_number":132,"context_line":"  of the binary. For service that support dynamic reconfiugation via SIG_HUP"},{"line_number":133,"context_line":"  the health check data will be reset as part of this process."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"The health check manager will be responsible for creating the health check"},{"line_number":136,"context_line":"endpoint when it is enabled in the nova.conf and exposing the health check"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3070fb6b_4c0aa7ae","line":133,"in_reply_to":"9234e890_c9d4aa64","updated":"2022-01-13 09:57:26.000000000","message":"Ack","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":139,"context_line":"The initial implementation will support HTTP over TCP with optional support for"},{"line_number":140,"context_line":"UNIX domain sockets as a more secure alternative to be added later."},{"line_number":141,"context_line":"The HTTP endpoint in both cases will be unauthenticated and the response will"},{"line_number":142,"context_line":"be in JSON format."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"The HTTP endpoint will be provided by the eventlets or asyncio the method"},{"line_number":145,"context_line":"to be chosen as part of the implementation review."}],"source_content_type":"text/x-rst","patch_set":3,"id":"f07214d8_59a34146","line":142,"updated":"2021-12-20 15:24:46.000000000","message":"++ as a first try, this looks OK.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":139,"context_line":"The initial implementation will support HTTP over TCP with optional support for"},{"line_number":140,"context_line":"UNIX domain sockets as a more secure alternative to be added later."},{"line_number":141,"context_line":"The HTTP endpoint in both cases will be unauthenticated and the response will"},{"line_number":142,"context_line":"be in JSON format."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"The HTTP endpoint will be provided by the eventlets or asyncio the method"},{"line_number":145,"context_line":"to be chosen as part of the implementation review."}],"source_content_type":"text/x-rst","patch_set":3,"id":"911e7708_85b01e2b","line":142,"in_reply_to":"f07214d8_59a34146","updated":"2022-01-13 09:57:26.000000000","message":"Ack","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"73e698b5216d1a488ea6b36676568f6ce1deae85","unresolved":true,"context_lines":[{"line_number":141,"context_line":"The HTTP endpoint in both cases will be unauthenticated and the response will"},{"line_number":142,"context_line":"be in JSON format."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"The HTTP endpoint will be provided by the eventlets or asyncio the method"},{"line_number":145,"context_line":"to be chosen as part of the implementation review."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"A new HealthcheckStausItem data class will be introduced to store and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"98197495_1dae546b","line":144,"range":{"start_line":144,"start_character":38,"end_line":144,"end_character":41},"updated":"2021-12-17 17:49:41.000000000","message":"delete","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":141,"context_line":"The HTTP endpoint in both cases will be unauthenticated and the response will"},{"line_number":142,"context_line":"be in JSON format."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"The HTTP endpoint will be provided by the eventlets or asyncio the method"},{"line_number":145,"context_line":"to be chosen as part of the implementation review."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"A new HealthcheckStausItem data class will be introduced to store and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a83cfcc_47d2154b","line":144,"range":{"start_line":144,"start_character":42,"end_line":144,"end_character":51},"updated":"2022-01-10 17:34:21.000000000","message":"eventlet","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":141,"context_line":"The HTTP endpoint in both cases will be unauthenticated and the response will"},{"line_number":142,"context_line":"be in JSON format."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"The HTTP endpoint will be provided by the eventlets or asyncio the method"},{"line_number":145,"context_line":"to be chosen as part of the implementation review."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"A new HealthcheckStausItem data class will be introduced to store and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"d8dfc716_8baf90e8","line":144,"range":{"start_line":144,"start_character":55,"end_line":144,"end_character":62},"updated":"2022-01-10 17:34:21.000000000","message":"is mixing asyncio and eventlet a good idea? I\u0027d expect not. I see no reason to complicate matters by using something other than eventlet unless it\u0027s part of a larger eventlet-ectomy.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bbcc784cb4f0a9da725f785764af761073140d17","unresolved":true,"context_lines":[{"line_number":141,"context_line":"The HTTP endpoint in both cases will be unauthenticated and the response will"},{"line_number":142,"context_line":"be in JSON format."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"The HTTP endpoint will be provided by the eventlets or asyncio the method"},{"line_number":145,"context_line":"to be chosen as part of the implementation review."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"A new HealthcheckStausItem data class will be introduced to store and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"b701bb9a_45d383ff","line":144,"range":{"start_line":144,"start_character":55,"end_line":144,"end_character":62},"in_reply_to":"d8dfc716_8baf90e8","updated":"2022-01-11 16:37:18.000000000","message":"honestly from what litlte i have done to look into mixing, while i think it can be done it wont work out of the box so im going to to jsut say eventlet here and if we awant to remove the eventlet dep we can do it as part of a larger effort.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":142,"context_line":"be in JSON format."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"The HTTP endpoint will be provided by the eventlets or asyncio the method"},{"line_number":145,"context_line":"to be chosen as part of the implementation review."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"A new HealthcheckStausItem data class will be introduced to store and"},{"line_number":148,"context_line":"individual health check datapoint. The HealtcheckSTatusItem will contain"}],"source_content_type":"text/x-rst","patch_set":3,"id":"81f1f664_939d09d5","line":145,"updated":"2021-12-20 15:24:46.000000000","message":"yeah, but we should also provide a config option for a default value of the port and the local address it runs (like localhost:8080)","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":true,"context_lines":[{"line_number":142,"context_line":"be in JSON format."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"The HTTP endpoint will be provided by the eventlets or asyncio the method"},{"line_number":145,"context_line":"to be chosen as part of the implementation review."},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"A new HealthcheckStausItem data class will be introduced to store and"},{"line_number":148,"context_line":"individual health check datapoint. The HealtcheckSTatusItem will contain"}],"source_content_type":"text/x-rst","patch_set":3,"id":"73f424d4_3c5b9892","line":145,"in_reply_to":"81f1f664_939d09d5","updated":"2022-01-13 09:57:26.000000000","message":"ack this is covered below.\n\nwe wont expose any endpoint by defualt but you can and shoudl bind to localhost typically and can use any port you want.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":150,"context_line":"a time to live and an optional output string that should be populated if the"},{"line_number":151,"context_line":"status is ``warn`` or ``fail``."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"A new decorator will be intoduced that will automatically retrieve the"},{"line_number":154,"context_line":"reference to the helthcheck manager form the nova context object and update"},{"line_number":155,"context_line":"the result based on if the function decorated raises an exception or not."},{"line_number":156,"context_line":"The decorator will accpet the name of the health check as a positional argument"}],"source_content_type":"text/x-rst","patch_set":3,"id":"0c68db0e_beb9070d","line":153,"range":{"start_line":153,"start_character":24,"end_line":153,"end_character":33},"updated":"2022-01-10 17:34:21.000000000","message":"introduced\n\n...I thought you spellchecked this?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":151,"context_line":"status is ``warn`` or ``fail``."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"A new decorator will be intoduced that will automatically retrieve the"},{"line_number":154,"context_line":"reference to the helthcheck manager form the nova context object and update"},{"line_number":155,"context_line":"the result based on if the function decorated raises an exception or not."},{"line_number":156,"context_line":"The decorator will accpet the name of the health check as a positional argument"},{"line_number":157,"context_line":"and include the excpetion message as the output of the health check on failure."}],"source_content_type":"text/x-rst","patch_set":3,"id":"e7190256_518aaf1a","line":154,"range":{"start_line":154,"start_character":36,"end_line":154,"end_character":40},"updated":"2022-01-10 17:34:21.000000000","message":"from","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":151,"context_line":"status is ``warn`` or ``fail``."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"A new decorator will be intoduced that will automatically retrieve the"},{"line_number":154,"context_line":"reference to the helthcheck manager form the nova context object and update"},{"line_number":155,"context_line":"the result based on if the function decorated raises an exception or not."},{"line_number":156,"context_line":"The decorator will accpet the name of the health check as a positional argument"},{"line_number":157,"context_line":"and include the excpetion message as the output of the health check on failure."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9750041f_52aa1797","line":154,"range":{"start_line":154,"start_character":17,"end_line":154,"end_character":27},"updated":"2022-01-10 17:34:21.000000000","message":"healthcheck","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"A new decorator will be intoduced that will automatically retrieve the"},{"line_number":154,"context_line":"reference to the helthcheck manager form the nova context object and update"},{"line_number":155,"context_line":"the result based on if the function decorated raises an exception or not."},{"line_number":156,"context_line":"The decorator will accpet the name of the health check as a positional argument"},{"line_number":157,"context_line":"and include the excpetion message as the output of the health check on failure."},{"line_number":158,"context_line":"Note that the decorator will only support the pass or fail status for"}],"source_content_type":"text/x-rst","patch_set":3,"id":"2d3f670a_6a338e23","line":155,"updated":"2021-12-20 15:24:46.000000000","message":"agreed, but maybe we should also be able to tell *which* exceptions should provide a \"fail\" value.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":153,"context_line":"A new decorator will be intoduced that will automatically retrieve the"},{"line_number":154,"context_line":"reference to the helthcheck manager form the nova context object and update"},{"line_number":155,"context_line":"the result based on if the function decorated raises an exception or not."},{"line_number":156,"context_line":"The decorator will accpet the name of the health check as a positional argument"},{"line_number":157,"context_line":"and include the excpetion message as the output of the health check on failure."},{"line_number":158,"context_line":"Note that the decorator will only support the pass or fail status for"},{"line_number":159,"context_line":"simplicity, where warn is approate a manual check should be written."}],"source_content_type":"text/x-rst","patch_set":3,"id":"cd890971_82b38454","line":156,"range":{"start_line":156,"start_character":19,"end_line":156,"end_character":25},"updated":"2022-01-10 17:34:21.000000000","message":"accept","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":154,"context_line":"reference to the helthcheck manager form the nova context object and update"},{"line_number":155,"context_line":"the result based on if the function decorated raises an exception or not."},{"line_number":156,"context_line":"The decorator will accpet the name of the health check as a positional argument"},{"line_number":157,"context_line":"and include the excpetion message as the output of the health check on failure."},{"line_number":158,"context_line":"Note that the decorator will only support the pass or fail status for"},{"line_number":159,"context_line":"simplicity, where warn is approate a manual check should be written."},{"line_number":160,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"0a32bad5_7b56245b","line":157,"range":{"start_line":157,"start_character":16,"end_line":157,"end_character":25},"updated":"2022-01-10 17:34:21.000000000","message":"exception","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":156,"context_line":"The decorator will accpet the name of the health check as a positional argument"},{"line_number":157,"context_line":"and include the excpetion message as the output of the health check on failure."},{"line_number":158,"context_line":"Note that the decorator will only support the pass or fail status for"},{"line_number":159,"context_line":"simplicity, where warn is approate a manual check should be written."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"A second general approach to providing health checks will be the installation"},{"line_number":162,"context_line":"of logs filters. By using log filter that match on specific messages and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9baf42f8_020b404a","line":159,"range":{"start_line":159,"start_character":26,"end_line":159,"end_character":34},"updated":"2022-01-10 17:34:21.000000000","message":"appropriate","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":156,"context_line":"The decorator will accpet the name of the health check as a positional argument"},{"line_number":157,"context_line":"and include the excpetion message as the output of the health check on failure."},{"line_number":158,"context_line":"Note that the decorator will only support the pass or fail status for"},{"line_number":159,"context_line":"simplicity, where warn is approate a manual check should be written."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"A second general approach to providing health checks will be the installation"},{"line_number":162,"context_line":"of logs filters. By using log filter that match on specific messages and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"771e5280_fc407c3c","line":159,"updated":"2021-12-20 15:24:46.000000000","message":"yet another reason for splitting this spec to first not supporting \u0027warn\u0027 for this cycle and maybe discuss about it later in Z.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":159,"context_line":"simplicity, where warn is approate a manual check should be written."},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"A second general approach to providing health checks will be the installation"},{"line_number":162,"context_line":"of logs filters. By using log filter that match on specific messages and"},{"line_number":163,"context_line":"modules e.g. \"reconnecting to ...\" failures in non nova code like oslo"},{"line_number":164,"context_line":"messaging can be recorded without modifying the library."},{"line_number":165,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"32498a6c_276d69fe","line":162,"range":{"start_line":162,"start_character":3,"end_line":162,"end_character":7},"updated":"2022-01-10 17:34:21.000000000","message":"log","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":161,"context_line":"A second general approach to providing health checks will be the installation"},{"line_number":162,"context_line":"of logs filters. By using log filter that match on specific messages and"},{"line_number":163,"context_line":"modules e.g. \"reconnecting to ...\" failures in non nova code like oslo"},{"line_number":164,"context_line":"messaging can be recorded without modifying the library."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"periodically the HealthCheckManager will purge stale healthcheck items. This"},{"line_number":167,"context_line":"will be a configurable multiple of the TTL which shall default to 3 times the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"c89ac7bb_65992d8e","line":164,"updated":"2021-12-20 15:24:46.000000000","message":"huh, this looks maybe good, but not as a first support, no ? maybe for a new feature, no ?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"09be1da574471ecfce17c290cf662d8ac0918aac","unresolved":false,"context_lines":[{"line_number":161,"context_line":"A second general approach to providing health checks will be the installation"},{"line_number":162,"context_line":"of logs filters. By using log filter that match on specific messages and"},{"line_number":163,"context_line":"modules e.g. \"reconnecting to ...\" failures in non nova code like oslo"},{"line_number":164,"context_line":"messaging can be recorded without modifying the library."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"periodically the HealthCheckManager will purge stale healthcheck items. This"},{"line_number":167,"context_line":"will be a configurable multiple of the TTL which shall default to 3 times the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"11c199fa_bba10ff3","line":164,"in_reply_to":"055b488b_0428286f","updated":"2022-02-01 16:00:58.000000000","message":"Ack","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bbcc784cb4f0a9da725f785764af761073140d17","unresolved":true,"context_lines":[{"line_number":161,"context_line":"A second general approach to providing health checks will be the installation"},{"line_number":162,"context_line":"of logs filters. By using log filter that match on specific messages and"},{"line_number":163,"context_line":"modules e.g. \"reconnecting to ...\" failures in non nova code like oslo"},{"line_number":164,"context_line":"messaging can be recorded without modifying the library."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"periodically the HealthCheckManager will purge stale healthcheck items. This"},{"line_number":167,"context_line":"will be a configurable multiple of the TTL which shall default to 3 times the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"a9e1c3ff_17f68303","line":164,"in_reply_to":"5e15b2bb_29a1d380","updated":"2022-01-11 16:37:18.000000000","message":"well some of the main things we want to monitor are rpc and db connections that mainly happen in oslo\nso this was my attempt to be able to monitor them and supprot the warn state.\n\ni can avoid doing this via logs initally  but im not really shure how to implemanet many useful check otherwise.\n\nfor the db if i decorate everything in\n\nhttps://github.com/openstack/nova/blob/master/nova/db/main/api.py#L354\nhttps://github.com/openstack/nova/blob/master/nova/db/api/api.py\n\nto catch exeptions then perhaps that might work but im not sure that is correct.\n\nfor rpc i woudl have to simialrly decorated most functions in \n\nhttps://github.com/openstack/nova/blob/master/nova/compute/rpcapi.py\nhttps://github.com/openstack/nova/blob/master/nova/conductor/rpcapi.py\nhttps://github.com/openstack/nova/blob/master/nova/scheduler/rpcapi.py\n\nfor the rpc laywer it sreally the .cast and .call function that we would want to annoate in oslo.\n\n\ni guess that is doable but its a bit more wackmole then i was orginally hoping for.\n\ni was hoping that filterign on \"connection closed\" or similar would have the same effect but with less code change.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e3f462746c37d56fb4074326487f9b5446748336","unresolved":true,"context_lines":[{"line_number":161,"context_line":"A second general approach to providing health checks will be the installation"},{"line_number":162,"context_line":"of logs filters. By using log filter that match on specific messages and"},{"line_number":163,"context_line":"modules e.g. \"reconnecting to ...\" failures in non nova code like oslo"},{"line_number":164,"context_line":"messaging can be recorded without modifying the library."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"periodically the HealthCheckManager will purge stale healthcheck items. This"},{"line_number":167,"context_line":"will be a configurable multiple of the TTL which shall default to 3 times the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5e15b2bb_29a1d380","line":164,"in_reply_to":"847624e0_4073829a","updated":"2022-01-11 13:18:36.000000000","message":"I agree with Dan to look at a specific example. In case of oslo libs we can improve them to allow better healthchecking. Relaying on log lines is a really unstable interface.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"5c9c8048b6130f06e1e734d06c4a6b61eaf742e7","unresolved":true,"context_lines":[{"line_number":161,"context_line":"A second general approach to providing health checks will be the installation"},{"line_number":162,"context_line":"of logs filters. By using log filter that match on specific messages and"},{"line_number":163,"context_line":"modules e.g. \"reconnecting to ...\" failures in non nova code like oslo"},{"line_number":164,"context_line":"messaging can be recorded without modifying the library."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"periodically the HealthCheckManager will purge stale healthcheck items. This"},{"line_number":167,"context_line":"will be a configurable multiple of the TTL which shall default to 3 times the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"055b488b_0428286f","line":164,"in_reply_to":"a9e1c3ff_17f68303","updated":"2022-01-17 14:58:27.000000000","message":"\u003e for rpc i woudl have to simialrly decorated most functions in \n\u003e \n\u003e https://github.com/openstack/nova/blob/master/nova/compute/rpcapi.py\n\u003e https://github.com/openstack/nova/blob/master/nova/conductor/rpcapi.py\n\u003e https://github.com/openstack/nova/blob/master/nova/scheduler/rpcapi.py\n\nI think you can use the common get_client() method to wrap something in a very general way without having to decorate all the calls. That could provide you access to cast and call as well, but I\u0027m not sure it really matters - you want to grab any oslo-related exception there.\n\nObviously a long-term ideal would be to augment o.msg with its own accounting, as we won\u0027t know until after $retries that a connection has died at the moment. However, I think this spec should be focused on exposing the functionality as best we can, and then we can work on making that more responsive later.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":161,"context_line":"A second general approach to providing health checks will be the installation"},{"line_number":162,"context_line":"of logs filters. By using log filter that match on specific messages and"},{"line_number":163,"context_line":"modules e.g. \"reconnecting to ...\" failures in non nova code like oslo"},{"line_number":164,"context_line":"messaging can be recorded without modifying the library."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"periodically the HealthCheckManager will purge stale healthcheck items. This"},{"line_number":167,"context_line":"will be a configurable multiple of the TTL which shall default to 3 times the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"847624e0_4073829a","line":164,"in_reply_to":"c89ac7bb_65992d8e","updated":"2022-01-10 17:34:21.000000000","message":"I dunno, this seems hacky to me. I\u0027d want to see specific use examples and explanations of why we need to do this.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":163,"context_line":"modules e.g. \"reconnecting to ...\" failures in non nova code like oslo"},{"line_number":164,"context_line":"messaging can be recorded without modifying the library."},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"periodically the HealthCheckManager will purge stale healthcheck items. This"},{"line_number":167,"context_line":"will be a configurable multiple of the TTL which shall default to 3 times the"},{"line_number":168,"context_line":"TTL. This can be disabled by setting the config option to 0."},{"line_number":169,"context_line":"The TTL will also be configurable and default to 300 seconds."}],"source_content_type":"text/x-rst","patch_set":3,"id":"06784e75_8fda6043","line":166,"range":{"start_line":166,"start_character":0,"end_line":166,"end_character":12},"updated":"2022-01-10 17:34:21.000000000","message":"Periodically","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":166,"context_line":"periodically the HealthCheckManager will purge stale healthcheck items. This"},{"line_number":167,"context_line":"will be a configurable multiple of the TTL which shall default to 3 times the"},{"line_number":168,"context_line":"TTL. This can be disabled by setting the config option to 0."},{"line_number":169,"context_line":"The TTL will also be configurable and default to 300 seconds."},{"line_number":170,"context_line":"As a result the default behaviour will be to treat health checks as stale"},{"line_number":171,"context_line":"after 5 minutes and purge them after 15 minutes."},{"line_number":172,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"6952f5fa_1ab26ed6","line":169,"range":{"start_line":169,"start_character":4,"end_line":169,"end_character":7},"updated":"2022-01-10 17:34:21.000000000","message":"Unless I missed something, you haven\u0027t really explained TTL here. Is this \"time between first failure and reporting the failure?\"","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":true,"context_lines":[{"line_number":166,"context_line":"periodically the HealthCheckManager will purge stale healthcheck items. This"},{"line_number":167,"context_line":"will be a configurable multiple of the TTL which shall default to 3 times the"},{"line_number":168,"context_line":"TTL. This can be disabled by setting the config option to 0."},{"line_number":169,"context_line":"The TTL will also be configurable and default to 300 seconds."},{"line_number":170,"context_line":"As a result the default behaviour will be to treat health checks as stale"},{"line_number":171,"context_line":"after 5 minutes and purge them after 15 minutes."},{"line_number":172,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"cfea9502_fd3b3a61","line":169,"range":{"start_line":169,"start_character":4,"end_line":169,"end_character":7},"in_reply_to":"27749752_693d77bc","updated":"2022-01-13 09:57:26.000000000","message":"im just going to remove this section based on the disucssion with gibi below.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bbcc784cb4f0a9da725f785764af761073140d17","unresolved":true,"context_lines":[{"line_number":166,"context_line":"periodically the HealthCheckManager will purge stale healthcheck items. This"},{"line_number":167,"context_line":"will be a configurable multiple of the TTL which shall default to 3 times the"},{"line_number":168,"context_line":"TTL. This can be disabled by setting the config option to 0."},{"line_number":169,"context_line":"The TTL will also be configurable and default to 300 seconds."},{"line_number":170,"context_line":"As a result the default behaviour will be to treat health checks as stale"},{"line_number":171,"context_line":"after 5 minutes and purge them after 15 minutes."},{"line_number":172,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"27749752_693d77bc","line":169,"range":{"start_line":169,"start_character":4,"end_line":169,"end_character":7},"in_reply_to":"6952f5fa_1ab26ed6","updated":"2022-01-11 16:37:18.000000000","message":"no it how long a healthcheck recored is vaild for. after which we shoudl not assume its correct any more.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":183,"context_line":"While this approach has some advantages it will have a negative performance"},{"line_number":184,"context_line":"impact if the health-check is queried frequently or in a large deployment where"},{"line_number":185,"context_line":"infrequent queries may still degrade the DB and message bus performance due to"},{"line_number":186,"context_line":"the scale of the deployment."},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"This spec initially suggested using ``OK``, ``Degraded`` and ``Faulty`` as the"},{"line_number":189,"context_line":"values for the status field. these were updated to ``pass``, ``warn`` and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1d1a3d3c_3dd9a8ad","line":186,"updated":"2021-12-20 15:24:46.000000000","message":"++","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":false,"context_lines":[{"line_number":183,"context_line":"While this approach has some advantages it will have a negative performance"},{"line_number":184,"context_line":"impact if the health-check is queried frequently or in a large deployment where"},{"line_number":185,"context_line":"infrequent queries may still degrade the DB and message bus performance due to"},{"line_number":186,"context_line":"the scale of the deployment."},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"This spec initially suggested using ``OK``, ``Degraded`` and ``Faulty`` as the"},{"line_number":189,"context_line":"values for the status field. these were updated to ``pass``, ``warn`` and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"e05f8d96_2a3f89da","line":186,"in_reply_to":"1d1a3d3c_3dd9a8ad","updated":"2022-01-13 09:57:26.000000000","message":"Ack","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":189,"context_line":"values for the status field. these were updated to ``pass``, ``warn`` and"},{"line_number":190,"context_line":"``fail`` to align with the draft IETF RFC for health check response format for"},{"line_number":191,"context_line":"http APIs. https://tools.ietf.org/id/draft-inadarei-api-health-check-06.html"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Data model impact"},{"line_number":195,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"aa6fee57_4d43afcf","line":192,"updated":"2021-12-20 15:24:46.000000000","message":"oh you documented it.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":true,"context_lines":[{"line_number":189,"context_line":"values for the status field. these were updated to ``pass``, ``warn`` and"},{"line_number":190,"context_line":"``fail`` to align with the draft IETF RFC for health check response format for"},{"line_number":191,"context_line":"http APIs. https://tools.ietf.org/id/draft-inadarei-api-health-check-06.html"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Data model impact"},{"line_number":195,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6869c4ce_c63c47e8","line":192,"in_reply_to":"aa6fee57_4d43afcf","updated":"2022-01-13 09:57:26.000000000","message":"yes i have moved it to the reference section in the next one and referenced it as [1]_ where relevent.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"None"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"While this change will expose a new rest API endpoint it will not be"},{"line_number":207,"context_line":"part of the existing nova API."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"In the nova api the /health check route will not initially be used to allow"}],"source_content_type":"text/x-rst","patch_set":3,"id":"fea28ecd_b3b26d2e","line":206,"range":{"start_line":206,"start_character":36,"end_line":206,"end_character":40},"updated":"2021-12-20 15:24:46.000000000","message":"hmmm, I don\u0027t think we need this endpoint to be RESTful","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":true,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"None"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"While this change will expose a new rest API endpoint it will not be"},{"line_number":207,"context_line":"part of the existing nova API."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"In the nova api the /health check route will not initially be used to allow"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3949f761_7d5e5f40","line":206,"range":{"start_line":206,"start_character":36,"end_line":206,"end_character":40},"in_reply_to":"d0762371_9adff8e2","updated":"2022-01-13 09:57:26.000000000","message":"we dont need too but orginally i was going to make it command based over a unix socket and dan ask to make http based over tcp at the ptg.\n\nif we are going to use http over tcp or any other transprot it should be RESTFUL rather then soap unless we adopt another standard like grpc,\n\ngrpc is overkill for this so im going to keep it simple and make it a rest api where the only verb intilaly supported i GET and the only endpoint is /health","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":203,"context_line":""},{"line_number":204,"context_line":"None"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"While this change will expose a new rest API endpoint it will not be"},{"line_number":207,"context_line":"part of the existing nova API."},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"In the nova api the /health check route will not initially be used to allow"}],"source_content_type":"text/x-rst","patch_set":3,"id":"d0762371_9adff8e2","line":206,"range":{"start_line":206,"start_character":36,"end_line":206,"end_character":40},"in_reply_to":"fea28ecd_b3b26d2e","updated":"2022-01-10 17:34:21.000000000","message":"Agree. But if we did, we should CAPITALIZE it.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":209,"context_line":"In the nova api the /health check route will not initially be used to allow"},{"line_number":210,"context_line":"those that already enable the oslo middleware to continue to do so."},{"line_number":211,"context_line":"In a future release nova reserves the right to add a /health check endpoint"},{"line_number":212,"context_line":"that may or may not correspond to the response format defined in oslo."},{"line_number":213,"context_line":"A translation between the oslo response format and the health check module"},{"line_number":214,"context_line":"may be provided in the future but it is out of the scope of this spec."},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"df0b92f3_4527b038","line":212,"updated":"2021-12-20 15:24:46.000000000","message":"you shall name your new HTTP endpoint you gonna propose.\nLater: oh you told it too.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":true,"context_lines":[{"line_number":209,"context_line":"In the nova api the /health check route will not initially be used to allow"},{"line_number":210,"context_line":"those that already enable the oslo middleware to continue to do so."},{"line_number":211,"context_line":"In a future release nova reserves the right to add a /health check endpoint"},{"line_number":212,"context_line":"that may or may not correspond to the response format defined in oslo."},{"line_number":213,"context_line":"A translation between the oslo response format and the health check module"},{"line_number":214,"context_line":"may be provided in the future but it is out of the scope of this spec."},{"line_number":215,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"6d69fcf1_8398cd01","line":212,"in_reply_to":"df0b92f3_4527b038","updated":"2022-01-13 09:57:26.000000000","message":"ya based on dans feedback below i move most of this to proposed changes.\n\nthe rest impact section will just cover the nova-api and basicaly say for the nova-api this will not alter the main nova api that it already exposes.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":211,"context_line":"In a future release nova reserves the right to add a /health check endpoint"},{"line_number":212,"context_line":"that may or may not correspond to the response format defined in oslo."},{"line_number":213,"context_line":"A translation between the oslo response format and the health check module"},{"line_number":214,"context_line":"may be provided in the future but it is out of the scope of this spec."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"The new health check endpoint exposed by this spec will initially only support"},{"line_number":217,"context_line":"one url path ``/health``. The ``/health`` will include a"}],"source_content_type":"text/x-rst","patch_set":3,"id":"af7c9e57_e142b377","line":214,"updated":"2021-12-20 15:24:46.000000000","message":"agreed","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":216,"context_line":"The new health check endpoint exposed by this spec will initially only support"},{"line_number":217,"context_line":"one url path ``/health``. The ``/health`` will include a"},{"line_number":218,"context_line":"`Cache-Control: max-age\u003d\u003cttl\u003e` header as part of its response which can"},{"line_number":219,"context_line":"optionally be consumed by the client."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"The endpoint may also implement a simple incrementing etag at a later date"},{"line_number":222,"context_line":"once the initial implementation is complete if required."}],"source_content_type":"text/x-rst","patch_set":3,"id":"42a2bbb2_4cf112bb","line":219,"updated":"2021-12-20 15:24:46.000000000","message":"++","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":222,"context_line":"once the initial implementation is complete if required."},{"line_number":223,"context_line":"Initially adding an ``etag`` is not done as the response is expected to be"},{"line_number":224,"context_line":"small and cheap to query so etags do not actually provide much benefit form"},{"line_number":225,"context_line":"a performance perspective."},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"If implemented the ``etag`` will be incremented whenever the service state"},{"line_number":228,"context_line":"changes and will reset to 0 when the service is restarted."}],"source_content_type":"text/x-rst","patch_set":3,"id":"990d10f4_c6eb0449","line":225,"updated":"2021-12-20 15:24:46.000000000","message":"++","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":".. NOTE:"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"   ``version`` will initally be 1.0 and can be incremented following ``SemVer``"},{"line_number":262,"context_line":"   conventions if we extend the response format. This is not the nova version."},{"line_number":263,"context_line":"   ``serviceId`` should be set to the nova service id for this binary"},{"line_number":264,"context_line":"   ``description`` will contain the binary name for the service."}],"source_content_type":"text/x-rst","patch_set":3,"id":"75ddd602_eb2619bf","line":261,"updated":"2021-12-20 15:24:46.000000000","message":"++","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e3f462746c37d56fb4074326487f9b5446748336","unresolved":true,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":".. NOTE:"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"   ``version`` will initally be 1.0 and can be incremented following ``SemVer``"},{"line_number":262,"context_line":"   conventions if we extend the response format. This is not the nova version."},{"line_number":263,"context_line":"   ``serviceId`` should be set to the nova service id for this binary"},{"line_number":264,"context_line":"   ``description`` will contain the binary name for the service."},{"line_number":265,"context_line":"   ``notes`` the notes will contain the CONF.host value in the host field and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"46845c33_18ef48e1","line":262,"range":{"start_line":261,"start_character":4,"end_line":262,"end_character":49},"updated":"2022-01-11 13:18:36.000000000","message":"Does the whole payload will be versioned including the content of checks subdict? I guess different service types will have different checks so such versioning will be divergent.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":true,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":".. NOTE:"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"   ``version`` will initally be 1.0 and can be incremented following ``SemVer``"},{"line_number":262,"context_line":"   conventions if we extend the response format. This is not the nova version."},{"line_number":263,"context_line":"   ``serviceId`` should be set to the nova service id for this binary"},{"line_number":264,"context_line":"   ``description`` will contain the binary name for the service."},{"line_number":265,"context_line":"   ``notes`` the notes will contain the CONF.host value in the host field and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"392d84af_b6f25ebe","line":262,"range":{"start_line":261,"start_character":4,"end_line":262,"end_character":49},"in_reply_to":"46845c33_18ef48e1","updated":"2022-01-13 09:57:26.000000000","message":"the content of the check will not be versioned but the layout will.\n\ncurrrently as propsoed all checks have a status and time filed and if status is warn or fail then they also have an output field.\n\nif that stucture is change then the version would be incremented.\nif we  just add a new check then the version will not change.\n\ni.e. if we initally only have \"database\" and \"message_bus\" as checks and add \"notification_bus\" then that wont increment the version\n\nif we decided we want to also include the request_id of the request that failed as a standard part of the check responce that woudl increment the number.\n\nif we really want to start versioning the check names we could i guess but we can signal that by bumping to 2.0 since that would be a \"breaking\" change.\n\nfor now i would like to avoid that until we know what common check names we might have.\n\ncurrently im thinking \"api_db\" \"cell_db\" \"message_bus\" \"notifications\" \"hypervisor\"\n\nim not sure if \"api_db\" and \"cell_db\" shoudl jsut be \"database\" or\nf\"database_{db_name}\"\n\nand if \"hypervisor\" should be \"virt_driver\" i was going to defer that to the code review. i will likely define most or all healthcheck names as constants in the code.\n\nwe might also want to have others but until we start adding them in the code i dont know what they should be.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":269,"context_line":"   The keys of the ``checks`` dictionary will be the name of the health check"},{"line_number":270,"context_line":"   the value will contain the ``status`` and ``time`` in ISO datetime format"},{"line_number":271,"context_line":"   that the status was recorded at. If the ``status`` is ``warn`` or ``error``"},{"line_number":272,"context_line":"   an ``output`` key will be present with a message explaining the status."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"d346edd2_4fa44d4f","line":272,"updated":"2022-01-10 17:34:21.000000000","message":"To be clear, the above structure is what you expect all the healthchecks to return, not just the one in the nova-api service right? I\u0027m confused because this is under the \"REST API\" section, yet both applies to the non-REST-API services, and isn\u0027t RESTful. Maybe this should be elsewhere and just the changes to the actual nova-api behavior should be discussed here?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bbcc784cb4f0a9da725f785764af761073140d17","unresolved":true,"context_lines":[{"line_number":269,"context_line":"   The keys of the ``checks`` dictionary will be the name of the health check"},{"line_number":270,"context_line":"   the value will contain the ``status`` and ``time`` in ISO datetime format"},{"line_number":271,"context_line":"   that the status was recorded at. If the ``status`` is ``warn`` or ``error``"},{"line_number":272,"context_line":"   an ``output`` key will be present with a message explaining the status."},{"line_number":273,"context_line":""},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"0c7b9c7c_755593a6","line":272,"in_reply_to":"d346edd2_4fa44d4f","updated":"2022-01-11 16:37:18.000000000","message":"yes the strucre shoudl be the same for all.\n\nnova_compute would not have the api_db check but it would have virt_driver or somehting more relevent\nso the keys of the checks would be service speciric but the rest of the stucture would be the same.\n\ni will move this earlier in the spec. \n\ncurrntly i dont plan to modify the version nova api at all.\n the nova-api binary will supprot this  healthcheck but you are corerct that im kind of overloadign the meaning of this section","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":276,"context_line":"---------------"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"The new health check endpoint will be disabled by default."},{"line_number":279,"context_line":"when enabled it will not provide any authentication or explicit access control."},{"line_number":280,"context_line":"The documentation will detail that when enabled the TCP endpoint should be"},{"line_number":281,"context_line":"bound to ``localhost`` and that file system permission should be used to secure"},{"line_number":282,"context_line":"the UNIX socket."}],"source_content_type":"text/x-rst","patch_set":3,"id":"76fc5b9f_3a851841","line":279,"range":{"start_line":279,"start_character":0,"end_line":279,"end_character":1},"updated":"2021-12-20 15:24:46.000000000","message":"nit: W with capital letter.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":295,"context_line":"While the health checks will use the ability to send notification as an input"},{"line_number":296,"context_line":"to determine the health of the system, this spec will not introduce any new"},{"line_number":297,"context_line":"notifications as such it will not impact the Notification subsystem in nova."},{"line_number":298,"context_line":"New notifications are not added as this would incur a performance overhead."},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"Other end user impact"},{"line_number":301,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"22a375e5_e9fa3a77","line":298,"updated":"2021-12-20 15:24:46.000000000","message":"++","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"677fd0a45bc455054926089b090eaaf8de889e59","unresolved":true,"context_lines":[{"line_number":326,"context_line":"functionality. The config option will be a sting opt that supports a"},{"line_number":327,"context_line":"comma-separated list of URIs with the following format"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"uri\u003d\u003cprotocol\u003e://[host:port|path],\u003cprotocol\u003e://[host:port|path]"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"e.g."},{"line_number":332,"context_line":"[healthcheck]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"f51d7e6a_8fe96f6b","line":329,"updated":"2021-12-20 15:24:46.000000000","message":"OK, thanks.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":326,"context_line":"functionality. The config option will be a sting opt that supports a"},{"line_number":327,"context_line":"comma-separated list of URIs with the following format"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"uri\u003d\u003cprotocol\u003e://[host:port|path],\u003cprotocol\u003e://[host:port|path]"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"e.g."},{"line_number":332,"context_line":"[healthcheck]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"88fecd87_5f90c245","line":329,"range":{"start_line":329,"start_character":5,"end_line":329,"end_character":13},"updated":"2022-01-10 17:34:21.000000000","message":"scheme?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"2269a5bd856b5ffdb19ef3c1787439e44e0095a9","unresolved":true,"context_lines":[{"line_number":326,"context_line":"functionality. The config option will be a sting opt that supports a"},{"line_number":327,"context_line":"comma-separated list of URIs with the following format"},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"uri\u003d\u003cprotocol\u003e://[host:port|path],\u003cprotocol\u003e://[host:port|path]"},{"line_number":330,"context_line":""},{"line_number":331,"context_line":"e.g."},{"line_number":332,"context_line":"[healthcheck]"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5f262081_6ff7a640","line":329,"range":{"start_line":329,"start_character":5,"end_line":329,"end_character":13},"in_reply_to":"88fecd87_5f90c245","updated":"2022-01-13 09:57:26.000000000","message":"yes scheme is also correct and is what the rfc officially calls it so ill update it\n\nhttps://datatracker.ietf.org/doc/html/rfc3986\n\nI will be using https://pypi.org/project/rfc3986/\nwhich is in the global requirements and maintained by OpenStack to do the parsing by the way so most of the work will be done by the lib.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e3f462746c37d56fb4074326487f9b5446748336","unresolved":true,"context_lines":[{"line_number":350,"context_line":""},{"line_number":351,"context_line":"A ``stale_multiplier`` intOpt with default value of 3 and min value of 0"},{"line_number":352,"context_line":"will be intoduced. setting ``stale-multiplier\u003d0`` will disable purging of"},{"line_number":353,"context_line":"stale health checks."},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"A cache_contol intOpt will be provide to set the max-age value in the"},{"line_number":356,"context_line":"cache_contol header. By default it will have the same max-age as the ttl"}],"source_content_type":"text/x-rst","patch_set":3,"id":"52b537d4_9233950b","line":353,"updated":"2022-01-11 13:18:36.000000000","message":"What would stale-multiplier\u003d3 mean? Does it mean that if the last measurement of a certain check is older than 3*ttl then that measurement is ignored? \n\nIf yes, then if that last measurement indicated a failure then after 3*ttl the check\u0027s result will reset from \u0027fail\u0027 to \u0027pass\u0027. Then some upper level service will send traffic towards this service and therefore the healtcheck will have new measurements. I\u0027m OK with this intention but we need to document this meaning.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"bbcc784cb4f0a9da725f785764af761073140d17","unresolved":true,"context_lines":[{"line_number":350,"context_line":""},{"line_number":351,"context_line":"A ``stale_multiplier`` intOpt with default value of 3 and min value of 0"},{"line_number":352,"context_line":"will be intoduced. setting ``stale-multiplier\u003d0`` will disable purging of"},{"line_number":353,"context_line":"stale health checks."},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"A cache_contol intOpt will be provide to set the max-age value in the"},{"line_number":356,"context_line":"cache_contol header. By default it will have the same max-age as the ttl"}],"source_content_type":"text/x-rst","patch_set":3,"id":"62c0de6c_64d304c9","line":353,"in_reply_to":"52b537d4_9233950b","updated":"2022-01-11 16:37:18.000000000","message":"ok what I\u0027m trying to address with this and I may be overthinking it is how to ensure the cache does not become invalid or out of sync with the state of nova.\n\nim concerned that our last healthcheck for something is pass and that thing breaks in such a way that it is stuck in that state so after a period of time i wanted to remove that cached result.\n\ni did not want to  do that right away as that woudl be equivlent of letting it be stuck in pass.\n\nso after the TTL i wanted to consider the healthcheck as stale and report a waring state overall.\nthen after the stale_multiple*ttl we remove the value restorign to pass.\n\nperhaps that is not the best way to adress this.\n\nto answer your specific question\n\nstale-multiplier\u003d3 means if a check failed and it is not observed for 3*ttl seconds then we will remove it form the cache and the next time you check the endpoint  it wil reprot pass.\n\nthe logic behind that was if the failture was bad enough  to fullly lock up the agent it likely will lock up the binary or make it exit it will take the healthcheck endpoint with it.\nbut that likely is not what we want.\n\nperhaps we only want to time out pass requslt or maybe i shoudl jsut remove this and the ttl entirly.\n\nthe ttl and exirey of ttl are really for the warn state.\n\nill admit with the radical pivot this spec has taken form what i plan to do at the ptg i am finidn it hard\nto reconsile how we express warn without active probing. and in this case how to think about the staleness of data.\n\nwhat do people think shoudl i remove the ttl and stale concept?","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4ada14aa4028802076a719f15eb768f755b8fd4d","unresolved":true,"context_lines":[{"line_number":350,"context_line":""},{"line_number":351,"context_line":"A ``stale_multiplier`` intOpt with default value of 3 and min value of 0"},{"line_number":352,"context_line":"will be intoduced. setting ``stale-multiplier\u003d0`` will disable purging of"},{"line_number":353,"context_line":"stale health checks."},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"A cache_contol intOpt will be provide to set the max-age value in the"},{"line_number":356,"context_line":"cache_contol header. By default it will have the same max-age as the ttl"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6276ddcb_3fa0526f","line":353,"in_reply_to":"62c0de6c_64d304c9","updated":"2022-01-12 09:59:57.000000000","message":"I agree that we need to distinguish between a clear fail (a request failed within a reasonable time) and unknown state ( there was no request in the near past so we don\u0027t know about the connectivity to the external services). So having a ttl defining the time a measurement is considered relevant, make sense to me. I\u0027m not sure about having two levels though ( 1) ttl expired -\u003e warn 2)n*ttl expired -\u003e pass). I think it might be enough to simply reset to pass after ttl expired mapping the unknown state to pass and let the higher level service move to fail state if it cannot send traffic towards us.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"65edfe9f33f7ccb091848e48ce8cb4fc10d5173b","unresolved":true,"context_lines":[{"line_number":421,"context_line":""},{"line_number":422,"context_line":"This can be tested entirely with unit and functional tests"},{"line_number":423,"context_line":"however, devstack can be extended to expose the endpoint and a simple"},{"line_number":424,"context_line":"post action could be added to a job if desired."},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"Documentation Impact"},{"line_number":427,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"023344d3_8bc831a7","line":424,"updated":"2022-01-10 17:34:21.000000000","message":"I think it\u0027d be good to make sure this actually works and it should be trivial to poke it from either curl in devstack or tempest. In fact, why wouldn\u0027t we make devstack use this to determine if the services are started? We already do some of that with ps and curl, IIRC.","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e3f462746c37d56fb4074326487f9b5446748336","unresolved":true,"context_lines":[{"line_number":421,"context_line":""},{"line_number":422,"context_line":"This can be tested entirely with unit and functional tests"},{"line_number":423,"context_line":"however, devstack can be extended to expose the endpoint and a simple"},{"line_number":424,"context_line":"post action could be added to a job if desired."},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"Documentation Impact"},{"line_number":427,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"18f569e4_e91ffc9e","line":424,"in_reply_to":"023344d3_8bc831a7","updated":"2022-01-11 13:18:36.000000000","message":"+1","commit_id":"8682a4b4d9a966b7e2757c1ac0482602ff366d04"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":39,"context_line":"do know what some of the important health indicators are and can expose"},{"line_number":40,"context_line":"those as a local health-check endpoint that operators can use instead."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"The existing oslo middelware does not adress this problem statment because:"},{"line_number":43,"context_line":"1.) it can only be used by the api and metadata binaries"},{"line_number":44,"context_line":"2.) the middelware does not tell you the serivce is alive if its hosted by a"},{"line_number":45,"context_line":"wsgi server like apache since the middleware is executed independently from"}],"source_content_type":"text/x-rst","patch_set":4,"id":"c2e58984_d0d318b9","line":42,"range":{"start_line":42,"start_character":18,"end_line":42,"end_character":28},"updated":"2022-01-13 11:12:39.000000000","message":"micronit: middleware","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":39,"context_line":"do know what some of the important health indicators are and can expose"},{"line_number":40,"context_line":"those as a local health-check endpoint that operators can use instead."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"The existing oslo middelware does not adress this problem statment because:"},{"line_number":43,"context_line":"1.) it can only be used by the api and metadata binaries"},{"line_number":44,"context_line":"2.) the middelware does not tell you the serivce is alive if its hosted by a"},{"line_number":45,"context_line":"wsgi server like apache since the middleware is executed independently from"}],"source_content_type":"text/x-rst","patch_set":4,"id":"848c5e4c_f6e9a6af","line":42,"range":{"start_line":42,"start_character":58,"end_line":42,"end_character":66},"updated":"2022-01-13 11:12:39.000000000","message":"micronit: statement","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"do know what some of the important health indicators are and can expose"},{"line_number":40,"context_line":"those as a local health-check endpoint that operators can use instead."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"The existing oslo middelware does not adress this problem statment because:"},{"line_number":43,"context_line":"1.) it can only be used by the api and metadata binaries"},{"line_number":44,"context_line":"2.) the middelware does not tell you the serivce is alive if its hosted by a"},{"line_number":45,"context_line":"wsgi server like apache since the middleware is executed independently from"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6f93d544_8989a15e","line":42,"range":{"start_line":42,"start_character":58,"end_line":42,"end_character":66},"in_reply_to":"848c5e4c_f6e9a6af","updated":"2022-01-13 12:28:24.000000000","message":"Done","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"do know what some of the important health indicators are and can expose"},{"line_number":40,"context_line":"those as a local health-check endpoint that operators can use instead."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"The existing oslo middelware does not adress this problem statment because:"},{"line_number":43,"context_line":"1.) it can only be used by the api and metadata binaries"},{"line_number":44,"context_line":"2.) the middelware does not tell you the serivce is alive if its hosted by a"},{"line_number":45,"context_line":"wsgi server like apache since the middleware is executed independently from"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6fec8f78_754290bf","line":42,"range":{"start_line":42,"start_character":18,"end_line":42,"end_character":28},"in_reply_to":"c2e58984_d0d318b9","updated":"2022-01-13 12:28:24.000000000","message":"Done","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"The existing oslo middelware does not adress this problem statment because:"},{"line_number":43,"context_line":"1.) it can only be used by the api and metadata binaries"},{"line_number":44,"context_line":"2.) the middelware does not tell you the serivce is alive if its hosted by a"},{"line_number":45,"context_line":"wsgi server like apache since the middleware is executed independently from"},{"line_number":46,"context_line":"the wsgi application. i.e. the middleware can pass while the nova-api cant"},{"line_number":47,"context_line":"connect to the db and is otherwise broken."}],"source_content_type":"text/x-rst","patch_set":4,"id":"1a9a201d_4636a8eb","line":44,"range":{"start_line":44,"start_character":41,"end_line":44,"end_character":48},"updated":"2022-01-13 11:12:39.000000000","message":"micronit: service","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"The existing oslo middelware does not adress this problem statment because:"},{"line_number":43,"context_line":"1.) it can only be used by the api and metadata binaries"},{"line_number":44,"context_line":"2.) the middelware does not tell you the serivce is alive if its hosted by a"},{"line_number":45,"context_line":"wsgi server like apache since the middleware is executed independently from"},{"line_number":46,"context_line":"the wsgi application. i.e. the middleware can pass while the nova-api cant"},{"line_number":47,"context_line":"connect to the db and is otherwise broken."}],"source_content_type":"text/x-rst","patch_set":4,"id":"191a0e71_95a7f2d2","line":44,"range":{"start_line":44,"start_character":41,"end_line":44,"end_character":48},"in_reply_to":"1a9a201d_4636a8eb","updated":"2022-01-13 12:28:24.000000000","message":"Done","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":43,"context_line":"1.) it can only be used by the api and metadata binaries"},{"line_number":44,"context_line":"2.) the middelware does not tell you the serivce is alive if its hosted by a"},{"line_number":45,"context_line":"wsgi server like apache since the middleware is executed independently from"},{"line_number":46,"context_line":"the wsgi application. i.e. the middleware can pass while the nova-api cant"},{"line_number":47,"context_line":"connect to the db and is otherwise broken."},{"line_number":48,"context_line":"3.) the oslo middelware in detailed mode leaks info about the host python"},{"line_number":49,"context_line":"kernel, python version and hostname which can be used to determin in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"32120871_b5b82985","line":46,"range":{"start_line":46,"start_character":70,"end_line":46,"end_character":74},"updated":"2022-01-13 11:12:39.000000000","message":"micronit: can\u0027t","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":false,"context_lines":[{"line_number":43,"context_line":"1.) it can only be used by the api and metadata binaries"},{"line_number":44,"context_line":"2.) the middelware does not tell you the serivce is alive if its hosted by a"},{"line_number":45,"context_line":"wsgi server like apache since the middleware is executed independently from"},{"line_number":46,"context_line":"the wsgi application. i.e. the middleware can pass while the nova-api cant"},{"line_number":47,"context_line":"connect to the db and is otherwise broken."},{"line_number":48,"context_line":"3.) the oslo middelware in detailed mode leaks info about the host python"},{"line_number":49,"context_line":"kernel, python version and hostname which can be used to determin in the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"8c8d05e5_8467822e","line":46,"range":{"start_line":46,"start_character":70,"end_line":46,"end_character":74},"in_reply_to":"32120871_b5b82985","updated":"2022-01-13 12:28:24.000000000","message":"Done","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":46,"context_line":"the wsgi application. i.e. the middleware can pass while the nova-api cant"},{"line_number":47,"context_line":"connect to the db and is otherwise broken."},{"line_number":48,"context_line":"3.) the oslo middelware in detailed mode leaks info about the host python"},{"line_number":49,"context_line":"kernel, python version and hostname which can be used to determin in the"},{"line_number":50,"context_line":"host is vulnerable to CVEs which means it shoudl never be exposed to the"},{"line_number":51,"context_line":"internet."},{"line_number":52,"context_line":"e.g. plathform :\u0027Linux-5.15.2-xanmod1-tt-x86_64-with-glibc2.2.5\u0027,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"a3e9eff8_fba2861d","line":49,"range":{"start_line":49,"start_character":57,"end_line":49,"end_character":65},"updated":"2022-01-13 11:12:39.000000000","message":"micronit: determine","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":false,"context_lines":[{"line_number":46,"context_line":"the wsgi application. i.e. the middleware can pass while the nova-api cant"},{"line_number":47,"context_line":"connect to the db and is otherwise broken."},{"line_number":48,"context_line":"3.) the oslo middelware in detailed mode leaks info about the host python"},{"line_number":49,"context_line":"kernel, python version and hostname which can be used to determin in the"},{"line_number":50,"context_line":"host is vulnerable to CVEs which means it shoudl never be exposed to the"},{"line_number":51,"context_line":"internet."},{"line_number":52,"context_line":"e.g. plathform :\u0027Linux-5.15.2-xanmod1-tt-x86_64-with-glibc2.2.5\u0027,"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e600d3e0_d6f36023","line":49,"range":{"start_line":49,"start_character":57,"end_line":49,"end_character":65},"in_reply_to":"a3e9eff8_fba2861d","updated":"2022-01-13 12:28:24.000000000","message":"Done","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":47,"context_line":"connect to the db and is otherwise broken."},{"line_number":48,"context_line":"3.) the oslo middelware in detailed mode leaks info about the host python"},{"line_number":49,"context_line":"kernel, python version and hostname which can be used to determin in the"},{"line_number":50,"context_line":"host is vulnerable to CVEs which means it shoudl never be exposed to the"},{"line_number":51,"context_line":"internet."},{"line_number":52,"context_line":"e.g. plathform :\u0027Linux-5.15.2-xanmod1-tt-x86_64-with-glibc2.2.5\u0027,"},{"line_number":53,"context_line":"python_version: \u00273.8.12 (default, Aug 30 2021, 16:42:10) \\n[GCC 10.3.0]\u0027"}],"source_content_type":"text/x-rst","patch_set":4,"id":"88db5666_12082e91","line":50,"range":{"start_line":50,"start_character":42,"end_line":50,"end_character":48},"updated":"2022-01-13 11:12:39.000000000","message":"micronit: should","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":false,"context_lines":[{"line_number":47,"context_line":"connect to the db and is otherwise broken."},{"line_number":48,"context_line":"3.) the oslo middelware in detailed mode leaks info about the host python"},{"line_number":49,"context_line":"kernel, python version and hostname which can be used to determin in the"},{"line_number":50,"context_line":"host is vulnerable to CVEs which means it shoudl never be exposed to the"},{"line_number":51,"context_line":"internet."},{"line_number":52,"context_line":"e.g. plathform :\u0027Linux-5.15.2-xanmod1-tt-x86_64-with-glibc2.2.5\u0027,"},{"line_number":53,"context_line":"python_version: \u00273.8.12 (default, Aug 30 2021, 16:42:10) \\n[GCC 10.3.0]\u0027"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9474107b_1c61477c","line":50,"range":{"start_line":50,"start_character":42,"end_line":50,"end_character":48},"in_reply_to":"88db5666_12082e91","updated":"2022-01-13 12:28:24.000000000","message":"Done","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":51,"context_line":"internet."},{"line_number":52,"context_line":"e.g. plathform :\u0027Linux-5.15.2-xanmod1-tt-x86_64-with-glibc2.2.5\u0027,"},{"line_number":53,"context_line":"python_version: \u00273.8.12 (default, Aug 30 2021, 16:42:10) \\n[GCC 10.3.0]\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":4,"id":"e295c192_03e8e690","line":54,"updated":"2022-01-13 11:12:39.000000000","message":"we can nitpick about a few phrases but OK.","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":false,"context_lines":[{"line_number":51,"context_line":"internet."},{"line_number":52,"context_line":"e.g. plathform :\u0027Linux-5.15.2-xanmod1-tt-x86_64-with-glibc2.2.5\u0027,"},{"line_number":53,"context_line":"python_version: \u00273.8.12 (default, Aug 30 2021, 16:42:10) \\n[GCC 10.3.0]\u0027"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Use Cases"}],"source_content_type":"text/x-rst","patch_set":4,"id":"cf4567b1_0f9cf384","line":54,"in_reply_to":"e295c192_03e8e690","updated":"2022-01-13 12:28:24.000000000","message":"Ack","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":58,"context_line":"---------"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"As an operator, I want a simple REST endpoint I can consume to know"},{"line_number":61,"context_line":"if a nova process is healthy."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"As an operator I want this health check to not impact the performance of the"},{"line_number":64,"context_line":"service so it can be queried frequently at short intervals."}],"source_content_type":"text/x-rst","patch_set":4,"id":"24be6a34_8ab8897d","line":61,"updated":"2022-01-13 11:12:39.000000000","message":"++","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":85,"context_line":"``pass``: all health indicators are passing and there TTLs have not expired."},{"line_number":86,"context_line":"``warn``: any health indicator has an expired TTL or where there is"},{"line_number":87,"context_line":"a partial transient failure."},{"line_number":88,"context_line":"``fail``: any health indicator is reporting an error or all TTLs are expired."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":".. Note:"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"bb3be3cd_be23b0e2","line":88,"updated":"2022-01-13 11:12:39.000000000","message":"OK I prefer those definitions","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":false,"context_lines":[{"line_number":85,"context_line":"``pass``: all health indicators are passing and there TTLs have not expired."},{"line_number":86,"context_line":"``warn``: any health indicator has an expired TTL or where there is"},{"line_number":87,"context_line":"a partial transient failure."},{"line_number":88,"context_line":"``fail``: any health indicator is reporting an error or all TTLs are expired."},{"line_number":89,"context_line":""},{"line_number":90,"context_line":".. Note:"},{"line_number":91,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"4d0e1329_04618481","line":88,"in_reply_to":"bb3be3cd_be23b0e2","updated":"2022-01-13 12:28:24.000000000","message":"Ack","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":90,"context_line":".. Note:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"   In line with the recommendation in the IETF RFC api health check draft [1]_"},{"line_number":93,"context_line":"   ``pass`` and ``warn`` will respond with a 200 OK"},{"line_number":94,"context_line":"   ``fail`` will respond with a 503 Service Unavailable"},{"line_number":95,"context_line":"   Content-Type: application/health+json will be used in all cases."},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"1616575b_efde9a31","line":93,"updated":"2022-01-13 11:12:39.000000000","message":"Yeah, better to return HTTP200 for warn and just look at the response.","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":false,"context_lines":[{"line_number":90,"context_line":".. Note:"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"   In line with the recommendation in the IETF RFC api health check draft [1]_"},{"line_number":93,"context_line":"   ``pass`` and ``warn`` will respond with a 200 OK"},{"line_number":94,"context_line":"   ``fail`` will respond with a 503 Service Unavailable"},{"line_number":95,"context_line":"   Content-Type: application/health+json will be used in all cases."},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"3be6a9da_1f630d0a","line":93,"in_reply_to":"1616575b_efde9a31","updated":"2022-01-13 12:28:24.000000000","message":"Ack","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":107,"context_line":"An example of this is a service that has lost a connection to the message bus,"},{"line_number":108,"context_line":"when the connection is lost it should go to the ``warn`` state, if the first"},{"line_number":109,"context_line":"attempt to reconnect fails it should go to the ``fail`` status. Transient"},{"line_number":110,"context_line":"failure should be considered warning but persitent errors should be escalated"},{"line_number":111,"context_line":"to failures."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"In many cases external management systems will treat ``warn`` and ``fail`` as"}],"source_content_type":"text/x-rst","patch_set":4,"id":"aa482eb8_b9020abb","line":110,"range":{"start_line":110,"start_character":41,"end_line":110,"end_character":50},"updated":"2022-01-13 11:12:39.000000000","message":"micronit : persistent","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7a8b38cc29545c75e946c6eb636b9297639c1552","unresolved":true,"context_lines":[{"line_number":107,"context_line":"An example of this is a service that has lost a connection to the message bus,"},{"line_number":108,"context_line":"when the connection is lost it should go to the ``warn`` state, if the first"},{"line_number":109,"context_line":"attempt to reconnect fails it should go to the ``fail`` status. Transient"},{"line_number":110,"context_line":"failure should be considered warning but persitent errors should be escalated"},{"line_number":111,"context_line":"to failures."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"In many cases external management systems will treat ``warn`` and ``fail`` as"}],"source_content_type":"text/x-rst","patch_set":4,"id":"def45e33_cc847b99","line":110,"range":{"start_line":110,"start_character":41,"end_line":110,"end_character":50},"in_reply_to":"50a553e0_ec3f2845","updated":"2022-01-13 14:00:51.000000000","message":"Thanks and no worries, as a non-English native speaker, I understand how this can be difficult.","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":true,"context_lines":[{"line_number":107,"context_line":"An example of this is a service that has lost a connection to the message bus,"},{"line_number":108,"context_line":"when the connection is lost it should go to the ``warn`` state, if the first"},{"line_number":109,"context_line":"attempt to reconnect fails it should go to the ``fail`` status. Transient"},{"line_number":110,"context_line":"failure should be considered warning but persitent errors should be escalated"},{"line_number":111,"context_line":"to failures."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"In many cases external management systems will treat ``warn`` and ``fail`` as"}],"source_content_type":"text/x-rst","patch_set":4,"id":"50a553e0_ec3f2845","line":110,"range":{"start_line":110,"start_character":41,"end_line":110,"end_character":50},"in_reply_to":"aa482eb8_b9020abb","updated":"2022-01-13 12:28:24.000000000","message":"ack.\ni reinstalled a spell checker on my laptop too so im doding a full pass with it to correct any issues it detects.","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":114,"context_line":"equivalent and raise an alarm or restart the service. While this spec does"},{"line_number":115,"context_line":"not specify how you should recover from a degraded state it is"},{"line_number":116,"context_line":"important to include a human readable description of why the ``warn`` or"},{"line_number":117,"context_line":"``fail`` state was entered."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Services in the ``warn`` state are still considered healthy in most case but"},{"line_number":120,"context_line":"they may be about to fail soon or be partially degraded."}],"source_content_type":"text/x-rst","patch_set":4,"id":"a05947fc_9871cb81","line":117,"updated":"2022-01-13 11:12:39.000000000","message":"OK, I prefer this.","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":false,"context_lines":[{"line_number":114,"context_line":"equivalent and raise an alarm or restart the service. While this spec does"},{"line_number":115,"context_line":"not specify how you should recover from a degraded state it is"},{"line_number":116,"context_line":"important to include a human readable description of why the ``warn`` or"},{"line_number":117,"context_line":"``fail`` state was entered."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Services in the ``warn`` state are still considered healthy in most case but"},{"line_number":120,"context_line":"they may be about to fail soon or be partially degraded."}],"source_content_type":"text/x-rst","patch_set":4,"id":"fcd8f374_af1033d1","line":117,"in_reply_to":"a05947fc_9871cb81","updated":"2022-01-13 12:28:24.000000000","message":"Ack","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":186,"context_line":"of log filters. By using log filters that match on specific messages and"},{"line_number":187,"context_line":"modules e.g. \"reconnecting to ...\" failures in non nova code like oslo"},{"line_number":188,"context_line":"messaging can be recorded without modifying the library."},{"line_number":189,"context_line":"This method should generally only be used if there is no other alternitive."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"The new REST health check endpoint exposed by this spec will initially only"},{"line_number":192,"context_line":"support one url path ``/health``. The ``/health`` endpoint will include a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"74ba73b2_22aac339","line":189,"range":{"start_line":189,"start_character":63,"end_line":189,"end_character":74},"updated":"2022-01-13 11:12:39.000000000","message":"micronit: alternative","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":false,"context_lines":[{"line_number":186,"context_line":"of log filters. By using log filters that match on specific messages and"},{"line_number":187,"context_line":"modules e.g. \"reconnecting to ...\" failures in non nova code like oslo"},{"line_number":188,"context_line":"messaging can be recorded without modifying the library."},{"line_number":189,"context_line":"This method should generally only be used if there is no other alternitive."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"The new REST health check endpoint exposed by this spec will initially only"},{"line_number":192,"context_line":"support one url path ``/health``. The ``/health`` endpoint will include a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"6bbd7a55_3e665846","line":189,"range":{"start_line":189,"start_character":63,"end_line":189,"end_character":74},"in_reply_to":"74ba73b2_22aac339","updated":"2022-01-13 12:28:24.000000000","message":"Done","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"8b700c0108c393a6d8ccba7f893854634877a236","unresolved":true,"context_lines":[{"line_number":187,"context_line":"modules e.g. \"reconnecting to ...\" failures in non nova code like oslo"},{"line_number":188,"context_line":"messaging can be recorded without modifying the library."},{"line_number":189,"context_line":"This method should generally only be used if there is no other alternitive."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"The new REST health check endpoint exposed by this spec will initially only"},{"line_number":192,"context_line":"support one url path ``/health``. The ``/health`` endpoint will include a"},{"line_number":193,"context_line":"`Cache-Control: max-age\u003d\u003cttl\u003e` header as part of its response which can"}],"source_content_type":"text/x-rst","patch_set":4,"id":"fa312975_9ae5166d","line":190,"updated":"2022-01-13 11:12:39.000000000","message":"I\u0027m still not convinced this is really usable here, as any other external tool could already grep the logs without touching code (and I suspect lots of ops are doing those already, Ops hat here)\n\nI don\u0027t wanna hardstop this spec so close to the Spec approval Freeze but I tend to say I\u0027d be more than happy if we would skip this at first time and revisit the needs in a separate spec that could be implemented in a second phase.","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"d6be5125701b9ac26f8ecdcc3a96f41d1007c4a9","unresolved":false,"context_lines":[{"line_number":187,"context_line":"modules e.g. \"reconnecting to ...\" failures in non nova code like oslo"},{"line_number":188,"context_line":"messaging can be recorded without modifying the library."},{"line_number":189,"context_line":"This method should generally only be used if there is no other alternitive."},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"The new REST health check endpoint exposed by this spec will initially only"},{"line_number":192,"context_line":"support one url path ``/health``. The ``/health`` endpoint will include a"},{"line_number":193,"context_line":"`Cache-Control: max-age\u003d\u003cttl\u003e` header as part of its response which can"}],"source_content_type":"text/x-rst","patch_set":4,"id":"52fcc4d2_6e634e99","line":190,"in_reply_to":"fa312975_9ae5166d","updated":"2022-01-13 12:28:24.000000000","message":"we can agree to disagree on the usablitiy but we certenly can drop it form the inital implemenation and revisit this later so ill remove this section for now.","commit_id":"bfd019cc059f578a2632869d2f180ec078d6f109"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7a8b38cc29545c75e946c6eb636b9297639c1552","unresolved":true,"context_lines":[{"line_number":191,"context_line":"       pass"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"By default all exceptions will be caught and re-raised by the decorator."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"The new REST health check endpoint exposed by this spec will initially only"},{"line_number":196,"context_line":"support one url path ``/health``. The ``/health`` endpoint will include a"},{"line_number":197,"context_line":"`Cache-Control: max-age\u003d\u003cttl\u003e` header as part of its response which can"}],"source_content_type":"text/x-rst","patch_set":5,"id":"2f269f69_f01476b3","line":194,"updated":"2022-01-13 14:00:51.000000000","message":"thanks for having removed the non-consensus lines.","commit_id":"53d7a81be56be491b39d9146bc412354c58dffea"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"038c515393454f83cd17efa97e284607c2569653","unresolved":true,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"By default all exceptions will be caught and re-raised by the decorator."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"The new REST health check endpoint exposed by this spec will initially only"},{"line_number":196,"context_line":"support one url path ``/health``. The ``/health`` endpoint will include a"},{"line_number":197,"context_line":"`Cache-Control: max-age\u003d\u003cttl\u003e` header as part of its response which can"},{"line_number":198,"context_line":"optionally be consumed by the client."},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9ad5646f_d6949168","line":196,"range":{"start_line":195,"start_character":0,"end_line":196,"end_character":33},"updated":"2022-01-13 14:51:04.000000000","message":"This is now contradict with L320-325","commit_id":"53d7a81be56be491b39d9146bc412354c58dffea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dfa933494dcfeb1538607b555bdbda5af7394831","unresolved":true,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"By default all exceptions will be caught and re-raised by the decorator."},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"The new REST health check endpoint exposed by this spec will initially only"},{"line_number":196,"context_line":"support one url path ``/health``. The ``/health`` endpoint will include a"},{"line_number":197,"context_line":"`Cache-Control: max-age\u003d\u003cttl\u003e` header as part of its response which can"},{"line_number":198,"context_line":"optionally be consumed by the client."},{"line_number":199,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"173ed825_2941740e","line":196,"range":{"start_line":195,"start_character":0,"end_line":196,"end_character":33},"in_reply_to":"9ad5646f_d6949168","updated":"2022-01-13 15:06:52.000000000","message":"responded below.\n\ntl;dr this is referign the hte path that will be used on the dedicated tcp port create by the healthcheck manager and the other section is refering to the main nova api.","commit_id":"53d7a81be56be491b39d9146bc412354c58dffea"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"038c515393454f83cd17efa97e284607c2569653","unresolved":true,"context_lines":[{"line_number":268,"context_line":"   ``version`` will initially be 1.0 and can be incremented following"},{"line_number":269,"context_line":"   ``SemVer`` conventions if we extend the response format."},{"line_number":270,"context_line":"   This is not the nova version."},{"line_number":271,"context_line":"   Adding new checks to the nova code base will not increment the version of"},{"line_number":272,"context_line":"   the response but adding or removing any new field to the response will."},{"line_number":273,"context_line":"   ``serviceId`` should be set to the nova service id for this binary."},{"line_number":274,"context_line":"   ``description`` will contain the binary name for the service."},{"line_number":275,"context_line":"   ``notes`` the notes will contain the CONF.host value in the host field and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"e282522f_8b969fab","line":272,"range":{"start_line":271,"start_character":3,"end_line":272,"end_character":74},"updated":"2022-01-13 14:51:04.000000000","message":"Do you mean adding / removing a top level key to / from the response will be signaled with a version bump. While adding removing any nested key will not be signaled. I.e. no bump for adding/removing fields in the notes and checks subdict.","commit_id":"53d7a81be56be491b39d9146bc412354c58dffea"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"700be8123f71ab753ff2dd072e10751cec17ba10","unresolved":false,"context_lines":[{"line_number":268,"context_line":"   ``version`` will initially be 1.0 and can be incremented following"},{"line_number":269,"context_line":"   ``SemVer`` conventions if we extend the response format."},{"line_number":270,"context_line":"   This is not the nova version."},{"line_number":271,"context_line":"   Adding new checks to the nova code base will not increment the version of"},{"line_number":272,"context_line":"   the response but adding or removing any new field to the response will."},{"line_number":273,"context_line":"   ``serviceId`` should be set to the nova service id for this binary."},{"line_number":274,"context_line":"   ``description`` will contain the binary name for the service."},{"line_number":275,"context_line":"   ``notes`` the notes will contain the CONF.host value in the host field and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"357826d5_bd945004","line":272,"range":{"start_line":271,"start_character":3,"end_line":272,"end_character":74},"in_reply_to":"09964895_96957c5c","updated":"2022-01-13 15:09:47.000000000","message":"Ack","commit_id":"53d7a81be56be491b39d9146bc412354c58dffea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dfa933494dcfeb1538607b555bdbda5af7394831","unresolved":true,"context_lines":[{"line_number":268,"context_line":"   ``version`` will initially be 1.0 and can be incremented following"},{"line_number":269,"context_line":"   ``SemVer`` conventions if we extend the response format."},{"line_number":270,"context_line":"   This is not the nova version."},{"line_number":271,"context_line":"   Adding new checks to the nova code base will not increment the version of"},{"line_number":272,"context_line":"   the response but adding or removing any new field to the response will."},{"line_number":273,"context_line":"   ``serviceId`` should be set to the nova service id for this binary."},{"line_number":274,"context_line":"   ``description`` will contain the binary name for the service."},{"line_number":275,"context_line":"   ``notes`` the notes will contain the CONF.host value in the host field and"}],"source_content_type":"text/x-rst","patch_set":5,"id":"09964895_96957c5c","line":272,"range":{"start_line":271,"start_character":3,"end_line":272,"end_character":74},"in_reply_to":"e282522f_8b969fab","updated":"2022-01-13 15:06:52.000000000","message":"we spoke about this on irc and i decided to version everything i will refect that in the next version.","commit_id":"53d7a81be56be491b39d9146bc412354c58dffea"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"038c515393454f83cd17efa97e284607c2569653","unresolved":true,"context_lines":[{"line_number":317,"context_line":"While this change will expose a new REST API endpoint it will not be"},{"line_number":318,"context_line":"part of the existing nova API."},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"In the nova API the /health check route will not initially be used to allow"},{"line_number":321,"context_line":"those that already enable the oslo middleware to continue to do so."},{"line_number":322,"context_line":"In a future release nova reserves the right to add a /health check endpoint"},{"line_number":323,"context_line":"that may or may not correspond to the response format defined in oslo."},{"line_number":324,"context_line":"A translation between the oslo response format and the health check module"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3f6c4ddd_4cf66aa0","line":321,"range":{"start_line":320,"start_character":0,"end_line":321,"end_character":67},"updated":"2022-01-13 14:51:04.000000000","message":"which route this feature use then? OR do you mean that we use /health but by default the feature is disabled?","commit_id":"53d7a81be56be491b39d9146bc412354c58dffea"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"700be8123f71ab753ff2dd072e10751cec17ba10","unresolved":false,"context_lines":[{"line_number":317,"context_line":"While this change will expose a new REST API endpoint it will not be"},{"line_number":318,"context_line":"part of the existing nova API."},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"In the nova API the /health check route will not initially be used to allow"},{"line_number":321,"context_line":"those that already enable the oslo middleware to continue to do so."},{"line_number":322,"context_line":"In a future release nova reserves the right to add a /health check endpoint"},{"line_number":323,"context_line":"that may or may not correspond to the response format defined in oslo."},{"line_number":324,"context_line":"A translation between the oslo response format and the health check module"}],"source_content_type":"text/x-rst","patch_set":5,"id":"c5110217_c085d821","line":321,"range":{"start_line":320,"start_character":0,"end_line":321,"end_character":67},"in_reply_to":"3f6c4ddd_4cf66aa0","updated":"2022-01-13 15:09:47.000000000","message":"OK Sean explained. The new tcp endpoint will have /health resource the existing nova-api REST endpoint will not have. It is clear now.","commit_id":"53d7a81be56be491b39d9146bc412354c58dffea"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dfa933494dcfeb1538607b555bdbda5af7394831","unresolved":true,"context_lines":[{"line_number":317,"context_line":"While this change will expose a new REST API endpoint it will not be"},{"line_number":318,"context_line":"part of the existing nova API."},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"In the nova API the /health check route will not initially be used to allow"},{"line_number":321,"context_line":"those that already enable the oslo middleware to continue to do so."},{"line_number":322,"context_line":"In a future release nova reserves the right to add a /health check endpoint"},{"line_number":323,"context_line":"that may or may not correspond to the response format defined in oslo."},{"line_number":324,"context_line":"A translation between the oslo response format and the health check module"}],"source_content_type":"text/x-rst","patch_set":5,"id":"d391500a_f8854b22","line":321,"range":{"start_line":320,"start_character":0,"end_line":321,"end_character":67},"in_reply_to":"3f6c4ddd_4cf66aa0","updated":"2022-01-13 15:06:52.000000000","message":"this section is referring to the main nova api endpoint.\n\nthe healthcheck feature when used with the nova-api will run on a spereate tcp port and on that tcp port it will /health. so the api at least in this initial spec is not treated any differently then any other process where the health-check feature will listen ona dedicated tcp port.","commit_id":"53d7a81be56be491b39d9146bc412354c58dffea"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"038c515393454f83cd17efa97e284607c2569653","unresolved":true,"context_lines":[{"line_number":377,"context_line":"A  new config section ``healthcheck``  will be added in the nova.conf"},{"line_number":378,"context_line":""},{"line_number":379,"context_line":"A ``uri`` config option will be introduced to enable the health check"},{"line_number":380,"context_line":"functionality. The config option will be a sting opt that supports a"},{"line_number":381,"context_line":"comma-separated list of URIs with the following format"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"uri\u003d\u003cscheme\u003e://[host:port|path],\u003cscheme\u003e://[host:port|path]"}],"source_content_type":"text/x-rst","patch_set":5,"id":"4e17d2fd_be8ac9f8","line":380,"range":{"start_line":380,"start_character":43,"end_line":380,"end_character":48},"updated":"2022-01-13 14:51:04.000000000","message":"nit: string","commit_id":"53d7a81be56be491b39d9146bc412354c58dffea"}]}
