)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"9b04a3af_99eacc22","updated":"2024-07-17 03:19:06.000000000","message":"I think we have a bit more work to do on this one.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"}],"specs/version15.0/multiaz_amphora_distribution.rst":[{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Currently only compute server group is used to distribute amphora instances on"},{"line_number":20,"context_line":"different hypervisors while there is no guarantee that they will be placed in"},{"line_number":21,"context_line":"different availability zones."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Lets say we need to have highly available deployment distributed across"},{"line_number":24,"context_line":"multiple locations represented as availability zones. Having shared network"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0f707923_5820eb10","line":21,"updated":"2024-07-08 10:22:21.000000000","message":"```suggestion\ndifferent availability zones. In the meanwhile it is not supported to supply AZ-aware affinity\npolicies for Nova server groups.\n```","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Currently only compute server group is used to distribute amphora instances on"},{"line_number":20,"context_line":"different hypervisors while there is no guarantee that they will be placed in"},{"line_number":21,"context_line":"different availability zones."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Lets say we need to have highly available deployment distributed across"},{"line_number":24,"context_line":"multiple locations represented as availability zones. Having shared network"}],"source_content_type":"text/x-rst","patch_set":2,"id":"052278d7_614bd5e1","line":21,"in_reply_to":"0f707923_5820eb10","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":21,"context_line":"different availability zones."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Lets say we need to have highly available deployment distributed across"},{"line_number":24,"context_line":"multiple locations represented as availability zones. Having shared network"},{"line_number":25,"context_line":"allows us to just run different amphoras in different zones and have such"},{"line_number":26,"context_line":"redundancy."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"68b2a2ee_b617dbb4","line":24,"range":{"start_line":24,"start_character":61,"end_line":24,"end_character":75},"updated":"2024-07-08 10:22:21.000000000","message":"```suggestion\nmultiple locations represented as availability zones. Having shared L2 network\n```","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":21,"context_line":"different availability zones."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Lets say we need to have highly available deployment distributed across"},{"line_number":24,"context_line":"multiple locations represented as availability zones. Having shared network"},{"line_number":25,"context_line":"allows us to just run different amphoras in different zones and have such"},{"line_number":26,"context_line":"redundancy."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"8d008df1_4acb0f59","line":24,"range":{"start_line":24,"start_character":61,"end_line":24,"end_character":75},"in_reply_to":"68b2a2ee_b617dbb4","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":33,"context_line":"for particular loadbalancer. This can be either default set define in the"},{"line_number":34,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":35,"context_line":"availability zones counting that they have at least one compute AZ defined."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"4e39a69d_24eb2fb3","line":33,"range":{"start_line":33,"start_character":70,"end_line":33,"end_character":73},"updated":"2024-07-08 10:22:21.000000000","message":"a","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":33,"context_line":"for particular loadbalancer. This can be either default set define in the"},{"line_number":34,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":35,"context_line":"availability zones counting that they have at least one compute AZ defined."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"0eade719_0f2167ed","line":33,"range":{"start_line":33,"start_character":48,"end_line":33,"end_character":55},"updated":"2024-07-08 10:22:21.000000000","message":"a default","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":33,"context_line":"for particular loadbalancer. This can be either default set define in the"},{"line_number":34,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":35,"context_line":"availability zones counting that they have at least one compute AZ defined."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"6436d6f0_9bfc8861","line":33,"updated":"2024-07-08 10:22:21.000000000","message":"defined","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":33,"context_line":"for particular loadbalancer. This can be either default set define in the"},{"line_number":34,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":35,"context_line":"availability zones counting that they have at least one compute AZ defined."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"f53d0b6d_d7a72725","line":33,"range":{"start_line":33,"start_character":48,"end_line":33,"end_character":55},"in_reply_to":"0eade719_0f2167ed","updated":"2024-09-11 09:47:24.000000000","message":"added a","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":33,"context_line":"for particular loadbalancer. This can be either default set define in the"},{"line_number":34,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":35,"context_line":"availability zones counting that they have at least one compute AZ defined."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"c393fb09_e387a01e","line":33,"range":{"start_line":33,"start_character":70,"end_line":33,"end_character":73},"in_reply_to":"4e39a69d_24eb2fb3","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":30,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":33,"context_line":"for particular loadbalancer. This can be either default set define in the"},{"line_number":34,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":35,"context_line":"availability zones counting that they have at least one compute AZ defined."},{"line_number":36,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"b982ac03_64047f1f","line":33,"in_reply_to":"6436d6f0_9bfc8861","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":33,"context_line":"for particular loadbalancer. This can be either default set define in the"},{"line_number":34,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":35,"context_line":"availability zones counting that they have at least one compute AZ defined."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"The options are:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0980099a_810eac44","line":34,"updated":"2024-07-08 10:22:21.000000000","message":"a","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":33,"context_line":"for particular loadbalancer. This can be either default set define in the"},{"line_number":34,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":35,"context_line":"availability zones counting that they have at least one compute AZ defined."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"The options are:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"21db2dae_c25731fb","line":34,"in_reply_to":"0980099a_810eac44","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":32,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":33,"context_line":"for particular loadbalancer. This can be either default set define in the"},{"line_number":34,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":35,"context_line":"availability zones counting that they have at least one compute AZ defined."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"The options are:"},{"line_number":38,"context_line":"* in the nova section of the octavia configuration file"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e46fc59e_d9ef6570","line":35,"range":{"start_line":35,"start_character":19,"end_line":35,"end_character":27},"updated":"2024-07-08 10:22:21.000000000","message":"`given`?","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":true,"context_lines":[{"line_number":32,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":33,"context_line":"for particular loadbalancer. This can be either default set define in the"},{"line_number":34,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":35,"context_line":"availability zones counting that they have at least one compute AZ defined."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"The options are:"},{"line_number":38,"context_line":"* in the nova section of the octavia configuration file"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dc2a2b58_fc62e4f7","line":35,"range":{"start_line":35,"start_character":19,"end_line":35,"end_character":27},"in_reply_to":"e46fc59e_d9ef6570","updated":"2024-07-08 15:17:22.000000000","message":"rephrased","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":44,"context_line":"* lb AZ supplied to a compute task"},{"line_number":45,"context_line":"* flavor lb AZs list"},{"line_number":46,"context_line":"* flavor compute AZs list"},{"line_number":47,"context_line":"* lb AZs list in the controller_worker section of the config"},{"line_number":48,"context_line":"* compute AZs list in the nova section of the config"},{"line_number":49,"context_line":"* compute AZ in the nova section of the config"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"**compute_zones in the flavor**"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"57e3ca52_69881ad7","line":49,"range":{"start_line":47,"start_character":0,"end_line":49,"end_character":46},"updated":"2024-07-08 10:22:21.000000000","message":"Frankly, I\u0027d leave just 1 option out of these 3 and won\u0027t add AZs in 2 places in config.\nPotentially, having always a list in `[nova]` makes most sense","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":true,"context_lines":[{"line_number":44,"context_line":"* lb AZ supplied to a compute task"},{"line_number":45,"context_line":"* flavor lb AZs list"},{"line_number":46,"context_line":"* flavor compute AZs list"},{"line_number":47,"context_line":"* lb AZs list in the controller_worker section of the config"},{"line_number":48,"context_line":"* compute AZs list in the nova section of the config"},{"line_number":49,"context_line":"* compute AZ in the nova section of the config"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"**compute_zones in the flavor**"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"a929fccf_54145c38","line":49,"range":{"start_line":47,"start_character":0,"end_line":49,"end_character":46},"in_reply_to":"57e3ca52_69881ad7","updated":"2024-07-08 15:17:22.000000000","message":"It depends how we define multi-az. By using multiple nova AZs or by using multiple octavia AZs. But yes, we may need only few options.","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":53,"context_line":"Extend flavor schema with COMPUTE_ZONES array option. As from its name: it will"},{"line_number":54,"context_line":"hold a list of compute availability zones."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"**availability_zones in the flavor**"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Extend flavor schema with AVAILABILITY_ZONES array option. It should have a"},{"line_number":59,"context_line":"list of octavia availability zones."}],"source_content_type":"text/x-rst","patch_set":2,"id":"df1ff7a9_25c4e6f7","line":56,"range":{"start_line":56,"start_character":0,"end_line":56,"end_character":36},"updated":"2024-07-08 10:22:21.000000000","message":"```suggestion\navailability_zones in the flavor\n--------------------------------\n```","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":true,"context_lines":[{"line_number":53,"context_line":"Extend flavor schema with COMPUTE_ZONES array option. As from its name: it will"},{"line_number":54,"context_line":"hold a list of compute availability zones."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"**availability_zones in the flavor**"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Extend flavor schema with AVAILABILITY_ZONES array option. It should have a"},{"line_number":59,"context_line":"list of octavia availability zones."}],"source_content_type":"text/x-rst","patch_set":2,"id":"caae6ef8_b9536cec","line":56,"range":{"start_line":56,"start_character":0,"end_line":56,"end_character":36},"in_reply_to":"df1ff7a9_25c4e6f7","updated":"2024-07-08 15:17:22.000000000","message":"tried ^^^^^^^^, but it was looking bad. Will apply it again","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":58,"context_line":"Extend flavor schema with AVAILABILITY_ZONES array option. It should have a"},{"line_number":59,"context_line":"list of octavia availability zones."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"**controller_worker section in the config**"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Extend controller_worker_opts with additional list options: \"controle_worker\""},{"line_number":64,"context_line":"This option should hold a list of octavia availability zones. List of compute"}],"source_content_type":"text/x-rst","patch_set":2,"id":"0de75643_7c225486","line":61,"range":{"start_line":61,"start_character":0,"end_line":61,"end_character":43},"updated":"2024-07-08 10:22:21.000000000","message":"ditto","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":58,"context_line":"Extend flavor schema with AVAILABILITY_ZONES array option. It should have a"},{"line_number":59,"context_line":"list of octavia availability zones."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"**controller_worker section in the config**"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Extend controller_worker_opts with additional list options: \"controle_worker\""},{"line_number":64,"context_line":"This option should hold a list of octavia availability zones. List of compute"}],"source_content_type":"text/x-rst","patch_set":2,"id":"369908d0_ce9f2436","line":61,"range":{"start_line":61,"start_character":0,"end_line":61,"end_character":43},"in_reply_to":"0de75643_7c225486","updated":"2024-09-11 09:47:24.000000000","message":"changed markup","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":65,"context_line":"AZs can be extracted from the octavia availability zone metadata."},{"line_number":66,"context_line":"Octavia AZs can be accessed via CONF.controller_worker.availability_zones"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"**nova section in the config**"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Extend nova_opts with additional List option \"availability_zones\""},{"line_number":71,"context_line":"This option should hold a list of compute availability zones. And can be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"527e61d7_7f33aa65","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":30},"updated":"2024-07-08 10:22:21.000000000","message":"ditto","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":65,"context_line":"AZs can be extracted from the octavia availability zone metadata."},{"line_number":66,"context_line":"Octavia AZs can be accessed via CONF.controller_worker.availability_zones"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"**nova section in the config**"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Extend nova_opts with additional List option \"availability_zones\""},{"line_number":71,"context_line":"This option should hold a list of compute availability zones. And can be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"d82c4e6a_d7d7f1b3","line":68,"range":{"start_line":68,"start_character":0,"end_line":68,"end_character":30},"in_reply_to":"527e61d7_7f33aa65","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":79,"context_line":"Extend nova_opts with additional string option \"availability_zone\" which will"},{"line_number":80,"context_line":"be used to create all amphora instances in that AZ by-default."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"**Create**"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Initially when we create a new set of amphoras we should define which AZ each"},{"line_number":85,"context_line":"amphora should be placed in. There were two ways to do this:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"c46f2a4e_1dd44f2e","line":82,"range":{"start_line":82,"start_character":0,"end_line":82,"end_character":10},"updated":"2024-07-08 10:22:21.000000000","message":"ditto","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Extend nova_opts with additional string option \"availability_zone\" which will"},{"line_number":80,"context_line":"be used to create all amphora instances in that AZ by-default."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"**Create**"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"Initially when we create a new set of amphoras we should define which AZ each"},{"line_number":85,"context_line":"amphora should be placed in. There were two ways to do this:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"37b0736b_5bfba785","line":82,"range":{"start_line":82,"start_character":0,"end_line":82,"end_character":10},"in_reply_to":"c46f2a4e_1dd44f2e","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":84,"context_line":"Initially when we create a new set of amphoras we should define which AZ each"},{"line_number":85,"context_line":"amphora should be placed in. There were two ways to do this:"},{"line_number":86,"context_line":"1. By checking a list of currently available amphoras for the load balancer and"},{"line_number":87,"context_line":"then creating a new one in AZ where we don\u0027t have the other amphoras."},{"line_number":88,"context_line":"2. By calculating a master AZ based on the amphora role and loadbalancer ID"},{"line_number":89,"context_line":"string."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"33a1afcc_cd976b0d","line":87,"range":{"start_line":87,"start_character":50,"end_line":87,"end_character":53},"updated":"2024-07-08 10:22:21.000000000","message":"not needed","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":84,"context_line":"Initially when we create a new set of amphoras we should define which AZ each"},{"line_number":85,"context_line":"amphora should be placed in. There were two ways to do this:"},{"line_number":86,"context_line":"1. By checking a list of currently available amphoras for the load balancer and"},{"line_number":87,"context_line":"then creating a new one in AZ where we don\u0027t have the other amphoras."},{"line_number":88,"context_line":"2. By calculating a master AZ based on the amphora role and loadbalancer ID"},{"line_number":89,"context_line":"string."},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"a060b4da_a41afa45","line":87,"range":{"start_line":87,"start_character":50,"end_line":87,"end_character":53},"in_reply_to":"33a1afcc_cd976b0d","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":88,"context_line":"2. By calculating a master AZ based on the amphora role and loadbalancer ID"},{"line_number":89,"context_line":"string."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"I think that the 2nd option is better as it provides a way to create both"},{"line_number":92,"context_line":"amphoras at the same time during creation (maybe) and does not require querying"},{"line_number":93,"context_line":"a database to get a list of existing instances."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Master instance can be identified by checking the task name. It should have a"},{"line_number":96,"context_line":"role name text in it. So we can just look for a \"MASTER\" text presence."}],"source_content_type":"text/x-rst","patch_set":2,"id":"21085e11_5f85d7a3","line":93,"range":{"start_line":91,"start_character":0,"end_line":93,"end_character":47},"updated":"2024-07-08 10:22:21.000000000","message":"```suggestion\nThe 2nd option provides a way to create both amphoras in parallel during\nload balancer creation and does not require querying a database for a list of\nexisting instances. Thus it is considered as preferred course at the moment.\n```","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":88,"context_line":"2. By calculating a master AZ based on the amphora role and loadbalancer ID"},{"line_number":89,"context_line":"string."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"I think that the 2nd option is better as it provides a way to create both"},{"line_number":92,"context_line":"amphoras at the same time during creation (maybe) and does not require querying"},{"line_number":93,"context_line":"a database to get a list of existing instances."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Master instance can be identified by checking the task name. It should have a"},{"line_number":96,"context_line":"role name text in it. So we can just look for a \"MASTER\" text presence."}],"source_content_type":"text/x-rst","patch_set":2,"id":"e3a9dbad_ced62df1","line":93,"range":{"start_line":91,"start_character":0,"end_line":93,"end_character":47},"in_reply_to":"21085e11_5f85d7a3","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":100,"context_line":"master. Variable loadbalancer_id is already random enough as it is uuid. So its"},{"line_number":101,"context_line":"hash could be used to choose a master zone. For this purpose it should be added"},{"line_number":102,"context_line":"as an argument to a ComputeCreate function. An example of the calculation:"},{"line_number":103,"context_line":".. code-block::python"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    master_zone \u003d conf_zones[hash(loadbalancer_id) % len(conf_zones)]"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"167fc173_281e548a","line":103,"range":{"start_line":103,"start_character":0,"end_line":103,"end_character":21},"updated":"2024-07-08 10:22:21.000000000","message":"I\u0027d suggest having a new line before `code-block` for better readability","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":100,"context_line":"master. Variable loadbalancer_id is already random enough as it is uuid. So its"},{"line_number":101,"context_line":"hash could be used to choose a master zone. For this purpose it should be added"},{"line_number":102,"context_line":"as an argument to a ComputeCreate function. An example of the calculation:"},{"line_number":103,"context_line":".. code-block::python"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    master_zone \u003d conf_zones[hash(loadbalancer_id) % len(conf_zones)]"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"27ad7557_8e016820","line":103,"range":{"start_line":103,"start_character":0,"end_line":103,"end_character":21},"in_reply_to":"167fc173_281e548a","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Then we can choose AZ for a backup amphora. It can be randomly picked from the"},{"line_number":110,"context_line":"rest available AZs:"},{"line_number":111,"context_line":".. code-block::python"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    available_zones \u003d list(set(conf_zones) - set([master_zone]))"},{"line_number":114,"context_line":"    backup_zone \u003d random.choice(available_zones)``"}],"source_content_type":"text/x-rst","patch_set":2,"id":"2154c2b8_5f651195","line":111,"range":{"start_line":111,"start_character":0,"end_line":111,"end_character":21},"updated":"2024-07-08 10:22:21.000000000","message":"ditto","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Then we can choose AZ for a backup amphora. It can be randomly picked from the"},{"line_number":110,"context_line":"rest available AZs:"},{"line_number":111,"context_line":".. code-block::python"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    available_zones \u003d list(set(conf_zones) - set([master_zone]))"},{"line_number":114,"context_line":"    backup_zone \u003d random.choice(available_zones)``"}],"source_content_type":"text/x-rst","patch_set":2,"id":"6d4c0c2c_e7cf04ea","line":111,"range":{"start_line":111,"start_character":0,"end_line":111,"end_character":21},"in_reply_to":"2154c2b8_5f651195","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":116,"context_line":"Such logic ensures that master and backup amphoras are located in different AZs"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"**Failover**"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Failover is a bit more complicated task. Old amphora is not removed before a"},{"line_number":122,"context_line":"new one spawns. So we can\u0027t just pick AZ where there is no amphora for the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"032a6e82_b41d5c9f","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":12},"updated":"2024-07-08 10:22:21.000000000","message":"ditto","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":116,"context_line":"Such logic ensures that master and backup amphoras are located in different AZs"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"**Failover**"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"Failover is a bit more complicated task. Old amphora is not removed before a"},{"line_number":122,"context_line":"new one spawns. So we can\u0027t just pick AZ where there is no amphora for the"}],"source_content_type":"text/x-rst","patch_set":2,"id":"1ae4af04_eaf2fd38","line":119,"range":{"start_line":119,"start_character":0,"end_line":119,"end_character":12},"in_reply_to":"032a6e82_b41d5c9f","updated":"2024-09-11 09:47:24.000000000","message":"changed to markup","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Failover task has octavia-failover-amphora-flow text in its name. So this is"},{"line_number":131,"context_line":"the way it can be identified:"},{"line_number":132,"context_line":".. code-block::python"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    constants.FAILOVER_AMPHORA_FLOW in self.name``"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"6e9651aa_bff3d6a6","line":132,"range":{"start_line":132,"start_character":0,"end_line":132,"end_character":21},"updated":"2024-07-08 10:22:21.000000000","message":"ditto","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Failover task has octavia-failover-amphora-flow text in its name. So this is"},{"line_number":131,"context_line":"the way it can be identified:"},{"line_number":132,"context_line":".. code-block::python"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    constants.FAILOVER_AMPHORA_FLOW in self.name``"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"8654e1c7_3e6edc89","line":132,"range":{"start_line":132,"start_character":0,"end_line":132,"end_character":21},"in_reply_to":"6e9651aa_bff3d6a6","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Notice. Using such approach we rely on the cached information in compute"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"**Change of the AZs list**"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Sometimes a list of AZs changes. It might be a user decision or attempt to"},{"line_number":158,"context_line":"recover from a permanent AZ failure. For this case during a failover task we"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7cae386f_8229945f","line":155,"range":{"start_line":155,"start_character":0,"end_line":155,"end_character":26},"updated":"2024-07-08 10:22:21.000000000","message":"ditto","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Notice. Using such approach we rely on the cached information in compute"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"**Change of the AZs list**"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"Sometimes a list of AZs changes. It might be a user decision or attempt to"},{"line_number":158,"context_line":"recover from a permanent AZ failure. For this case during a failover task we"}],"source_content_type":"text/x-rst","patch_set":2,"id":"e0222d90_a4d9018f","line":155,"range":{"start_line":155,"start_character":0,"end_line":155,"end_character":26},"in_reply_to":"7cae386f_8229945f","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":174,"context_line":"Alternatives"},{"line_number":175,"context_line":"------------"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Compute tasks might not be the bestion place to achieve the goal. Maybe a"},{"line_number":178,"context_line":"controller_worker tasks is a better place. So we can define AZs distribution on"},{"line_number":179,"context_line":"that level and then pass these details to a compute creation task as either"},{"line_number":180,"context_line":"additional option or append it as a text to a task name. This way we will be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5ce5854a_8f2b771f","line":177,"range":{"start_line":177,"start_character":31,"end_line":177,"end_character":38},"updated":"2024-07-08 10:22:21.000000000","message":"`best`?","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":174,"context_line":"Alternatives"},{"line_number":175,"context_line":"------------"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Compute tasks might not be the bestion place to achieve the goal. Maybe a"},{"line_number":178,"context_line":"controller_worker tasks is a better place. So we can define AZs distribution on"},{"line_number":179,"context_line":"that level and then pass these details to a compute creation task as either"},{"line_number":180,"context_line":"additional option or append it as a text to a task name. This way we will be"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfc1343c_2caad6d3","line":177,"range":{"start_line":177,"start_character":31,"end_line":177,"end_character":38},"in_reply_to":"5ce5854a_8f2b771f","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":191,"context_line":"zones which each has different compute AZ defined... This way no changes to the"},{"line_number":192,"context_line":"compute task is needed."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Also, there is a blueprint for a nova Cross-AZ scheduling"},{"line_number":195,"context_line":"https://review.opendev.org/c/openstack/nova-specs/+/900296"},{"line_number":196,"context_line":"which allows to move anti-affinity amphora distribution logic away to nova."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"Data model impact"},{"line_number":199,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"39fb419c_f73852dc","line":196,"range":{"start_line":194,"start_character":0,"end_line":196,"end_character":75},"updated":"2024-07-08 10:22:21.000000000","message":"Another alternative implementation might be around adding az-anti-affinity policy to Nova server groups.\nThen, in Octavia we could offload all of the logic to Nova, by just changing `[nova]/anti_affinity_policy`.\nA blueprint for implementing this logic was proposed to Nova but has not been accepted yet:\n* https://review.opendev.org/c/openstack/nova-specs/+/900296\n* https://review.opendev.org/c/openstack/nova-specs/+/890779","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":191,"context_line":"zones which each has different compute AZ defined... This way no changes to the"},{"line_number":192,"context_line":"compute task is needed."},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"Also, there is a blueprint for a nova Cross-AZ scheduling"},{"line_number":195,"context_line":"https://review.opendev.org/c/openstack/nova-specs/+/900296"},{"line_number":196,"context_line":"which allows to move anti-affinity amphora distribution logic away to nova."},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"Data model impact"},{"line_number":199,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5e86a8a9_3bfb2f31","line":196,"range":{"start_line":194,"start_character":0,"end_line":196,"end_character":75},"in_reply_to":"39fb419c_f73852dc","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"e765a81ea16ec393b0e28d3bc00a99667d582451","unresolved":true,"context_lines":[{"line_number":281,"context_line":"Dependencies"},{"line_number":282,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"No or not know."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Testing"},{"line_number":287,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"d227f580_8d307ee7","line":284,"updated":"2024-07-08 10:22:21.000000000","message":"known","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":false,"context_lines":[{"line_number":281,"context_line":"Dependencies"},{"line_number":282,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"No or not know."},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Testing"},{"line_number":287,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":2,"id":"f51f9d63_b2b7eb08","line":284,"in_reply_to":"d227f580_8d307ee7","updated":"2024-07-08 15:17:22.000000000","message":"Done","commit_id":"354980ecef2392874f59bb631c3a2082ba620a59"},{"author":{"_account_id":32666,"name":"Damian Dąbrowski","email":"damian@dabrowski.cloud","username":"ddabrowski"},"change_message_id":"6d5a7b49ef63bd79b928ae845dae750770d3fbd8","unresolved":true,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"**controller_worker section in the config**"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Extend controller_worker_opts with additional list options: \"controle_worker\""},{"line_number":64,"context_line":"This option should hold a list of octavia availability zones. List of compute"},{"line_number":65,"context_line":"AZs can be extracted from the octavia availability zone metadata."},{"line_number":66,"context_line":"Octavia AZs can be accessed via CONF.controller_worker.availability_zones"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1da9ec76_cc6182f7","line":63,"range":{"start_line":63,"start_character":61,"end_line":63,"end_character":76},"updated":"2024-07-08 13:28:39.000000000","message":"```suggestion\nExtend controller_worker_opts with additional list option: \"controller_worker\"\n```","commit_id":"0d5dd8150f5f48ad57e94348d752bd395ae28b0b"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"e3c8897cbc67b0c2aede3a9b42a717831ecee516","unresolved":true,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"**controller_worker section in the config**"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Extend controller_worker_opts with additional list options: \"controle_worker\""},{"line_number":64,"context_line":"This option should hold a list of octavia availability zones. List of compute"},{"line_number":65,"context_line":"AZs can be extracted from the octavia availability zone metadata."},{"line_number":66,"context_line":"Octavia AZs can be accessed via CONF.controller_worker.availability_zones"}],"source_content_type":"text/x-rst","patch_set":3,"id":"6bb88554_ab55b9a9","line":63,"range":{"start_line":63,"start_character":61,"end_line":63,"end_character":76},"in_reply_to":"1da9ec76_cc6182f7","updated":"2024-07-08 15:17:22.000000000","message":"this is actually a mistake. Thanks","commit_id":"0d5dd8150f5f48ad57e94348d752bd395ae28b0b"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"f7f6e9efbb88668ddaf03794f263f75a5158cfe8","unresolved":true,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Amfora multiple compute zones anti-afinity"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Currently there is no way to make sure that amphoras are distributed across"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3178780b_01f00db2","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":6},"updated":"2024-07-12 13:35:03.000000000","message":"Typo","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"f7f6e9efbb88668ddaf03794f263f75a5158cfe8","unresolved":true,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Amfora multiple compute zones anti-afinity"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Currently there is no way to make sure that amphoras are distributed across"}],"source_content_type":"text/x-rst","patch_set":8,"id":"601f0a0e_d0cdd272","line":8,"range":{"start_line":8,"start_character":35,"end_line":8,"end_character":42},"updated":"2024-07-12 13:35:03.000000000","message":"affinity","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Amfora multiple compute zones anti-afinity"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Currently there is no way to make sure that amphoras are distributed across"}],"source_content_type":"text/x-rst","patch_set":8,"id":"45b5d809_48ea7409","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":6},"in_reply_to":"3178780b_01f00db2","updated":"2024-09-11 09:47:24.000000000","message":"corrected","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Amfora multiple compute zones anti-afinity"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Currently there is no way to make sure that amphoras are distributed across"}],"source_content_type":"text/x-rst","patch_set":8,"id":"f4148f34_62fcf9c6","line":8,"range":{"start_line":8,"start_character":35,"end_line":8,"end_character":42},"in_reply_to":"601f0a0e_d0cdd272","updated":"2024-09-11 09:47:24.000000000","message":"corrected","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":8,"context_line":"Amfora multiple compute zones anti-afinity"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Currently there is no way to make sure that amphoras are distributed across"},{"line_number":12,"context_line":"multiple compute availability zones(AZ). Which makes it impossible to have"},{"line_number":13,"context_line":"Multi-AZ redundant deployments. Proposed to add definition of a compute"},{"line_number":14,"context_line":"AZ list where amphoras should be created using anti-affinity logic."}],"source_content_type":"text/x-rst","patch_set":8,"id":"a3ef0303_06995723","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":52},"updated":"2024-07-17 03:19:06.000000000","message":"Amphorae","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":8,"context_line":"Amfora multiple compute zones anti-afinity"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Currently there is no way to make sure that amphoras are distributed across"},{"line_number":12,"context_line":"multiple compute availability zones(AZ). Which makes it impossible to have"},{"line_number":13,"context_line":"Multi-AZ redundant deployments. Proposed to add definition of a compute"},{"line_number":14,"context_line":"AZ list where amphoras should be created using anti-affinity logic."}],"source_content_type":"text/x-rst","patch_set":8,"id":"c3a3fb3b_c64a9523","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":52},"in_reply_to":"a3ef0303_06995723","updated":"2024-09-11 09:47:24.000000000","message":"corrected","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Currently only compute server group is used to distribute amphora instances on"},{"line_number":20,"context_line":"different hypervisors while there is no guarantee that they will be placed in"},{"line_number":21,"context_line":"different availability zones. In the meanwhile it is not supported to supply"},{"line_number":22,"context_line":"AZ-aware affinity policies for Nova server groups."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Lets say we need to have highly available deployment distributed across"}],"source_content_type":"text/x-rst","patch_set":8,"id":"14a9e1a8_9e648429","line":21,"range":{"start_line":21,"start_character":53,"end_line":21,"end_character":66},"updated":"2024-07-17 03:19:06.000000000","message":"Is this not supported by nova or Octavia? It\u0027s not clear here.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Currently only compute server group is used to distribute amphora instances on"},{"line_number":20,"context_line":"different hypervisors while there is no guarantee that they will be placed in"},{"line_number":21,"context_line":"different availability zones. In the meanwhile it is not supported to supply"},{"line_number":22,"context_line":"AZ-aware affinity policies for Nova server groups."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Lets say we need to have highly available deployment distributed across"}],"source_content_type":"text/x-rst","patch_set":8,"id":"76cdb55b_8f11965d","line":21,"range":{"start_line":21,"start_character":53,"end_line":21,"end_character":66},"in_reply_to":"14a9e1a8_9e648429","updated":"2024-09-11 09:47:24.000000000","message":"Rephrased.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":27256,"name":"Vadim Ponomarev","email":"velizarx@gmail.com","username":"velizarx"},"change_message_id":"bccc6d8f538b0aa9847e481e774201cd1337cc7d","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Proposed change"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":34,"context_line":"for particular loadbalancer. This can be either a default set defined in the"},{"line_number":35,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":36,"context_line":"availability zones (assuming at least one compute AZ defined in octavia AZ)."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The options are:"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"9ac6e710_7007353c","line":36,"range":{"start_line":32,"start_character":0,"end_line":36,"end_character":76},"updated":"2024-07-15 08:22:18.000000000","message":"It seems that the average user (member) will not be able to choose in which availability zone to run the loadbalancers, since usually only administrators manage flavors. What happened if a member use `--availability-zone` option for loadbalancer creation?","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Proposed change"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":34,"context_line":"for particular loadbalancer. This can be either a default set defined in the"},{"line_number":35,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":36,"context_line":"availability zones (assuming at least one compute AZ defined in octavia AZ)."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The options are:"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"b27ccefc_136568ef","line":36,"range":{"start_line":32,"start_character":0,"end_line":36,"end_character":76},"in_reply_to":"68188e96_46e8ad1a","updated":"2024-09-11 09:47:24.000000000","message":"Rephrased. This is a description of the proposal, what we plan to add in addition to what is currently present. But I agree, listing all options is a better approach.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Proposed change"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"The idea is to define a list of compute availability zones which should be used"},{"line_number":34,"context_line":"for particular loadbalancer. This can be either a default set defined in the"},{"line_number":35,"context_line":"configuration file or a list defined in octavia flavor or even list of octavia"},{"line_number":36,"context_line":"availability zones (assuming at least one compute AZ defined in octavia AZ)."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The options are:"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"68188e96_46e8ad1a","line":36,"range":{"start_line":32,"start_character":0,"end_line":36,"end_character":76},"in_reply_to":"9ac6e710_7007353c","updated":"2024-07-17 03:19:06.000000000","message":"This is a good question and should be defined here. The existing functionality of --availability-zone must be maintained.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The options are:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* in the nova section of the octavia configuration file"},{"line_number":41,"context_line":"* in the controller_worker section of the octavia configuration file"},{"line_number":42,"context_line":"* in octavia flavor as a list of compute zones"},{"line_number":43,"context_line":"* in octavia flavor as a list of octavia availability zones with compute zones"}],"source_content_type":"text/x-rst","patch_set":8,"id":"195c21e6_d67d85eb","line":40,"updated":"2024-07-17 03:19:06.000000000","message":"The nova section is only for authentication with nova, I would expect it to be in the \"compute\" section instead.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"The options are:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* in the nova section of the octavia configuration file"},{"line_number":41,"context_line":"* in the controller_worker section of the octavia configuration file"},{"line_number":42,"context_line":"* in octavia flavor as a list of compute zones"},{"line_number":43,"context_line":"* in octavia flavor as a list of octavia availability zones with compute zones"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ed0a2fe1_6c3e8381","line":40,"in_reply_to":"195c21e6_d67d85eb","updated":"2024-09-11 09:47:24.000000000","message":"changed to compute section.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"f7f6e9efbb88668ddaf03794f263f75a5158cfe8","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The priority for the options are (from the most important to the less):"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* lb AZ supplied to a compute task"},{"line_number":48,"context_line":"* flavor lb AZs list"},{"line_number":49,"context_line":"* flavor compute AZs list"},{"line_number":50,"context_line":"* lb AZs list in the controller_worker section of the config"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ab812099_cf7dc182","line":47,"range":{"start_line":47,"start_character":2,"end_line":47,"end_character":34},"updated":"2024-07-12 13:35:03.000000000","message":"supplied by who? the API?","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"The priority for the options are (from the most important to the less):"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* lb AZ supplied to a compute task"},{"line_number":48,"context_line":"* flavor lb AZs list"},{"line_number":49,"context_line":"* flavor compute AZs list"},{"line_number":50,"context_line":"* lb AZs list in the controller_worker section of the config"}],"source_content_type":"text/x-rst","patch_set":8,"id":"cf2f1ad0_d1dafbbb","line":47,"range":{"start_line":47,"start_character":2,"end_line":47,"end_character":34},"in_reply_to":"ab812099_cf7dc182","updated":"2024-09-11 09:47:24.000000000","message":"Yes, API. And it is an argument to a compute create task.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"f7f6e9efbb88668ddaf03794f263f75a5158cfe8","unresolved":true,"context_lines":[{"line_number":64,"context_line":"availability_zones in the flavor"},{"line_number":65,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Extend flavor schema with AVAILABILITY_ZONES array option. It should have a"},{"line_number":68,"context_line":"list of octavia availability zones."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"controller_worker section in the config"},{"line_number":72,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5eb3b93a_aa32903a","line":69,"range":{"start_line":67,"start_character":0,"end_line":69,"end_character":0},"updated":"2024-07-12 13:35:03.000000000","message":"what are the benefits from doing it?\nthe user can pass a flavor and an AZ when creating a LB\nwhy would they pass a flavor that contains an AZ?","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":64,"context_line":"availability_zones in the flavor"},{"line_number":65,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Extend flavor schema with AVAILABILITY_ZONES array option. It should have a"},{"line_number":68,"context_line":"list of octavia availability zones."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"controller_worker section in the config"},{"line_number":72,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":8,"id":"e6e3cd76_02f23cf6","line":69,"range":{"start_line":67,"start_character":0,"end_line":69,"end_character":0},"in_reply_to":"5eb3b93a_aa32903a","updated":"2024-09-11 09:47:24.000000000","message":"In this case flavor has multiple availability zones. It was attempt to allow defining multiple AZs in the flavor (and I am not sure if they should be a list of multiple compute zones or a list of multiple loadbalancer availability zones as octavia already has availability zone)\n\nMaybe it is the wrong idea at the end. This is the place where I need to have some clarification: where multiple availability zones should be defined and how. Flavor is a good place as it allows you to have multiple configurations and change them without a need to make configuration changes.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":90,"context_line":"possible place to make such distribution as compute instances are created there"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Extend nova_opts with additional string option \"availability_zone\" which will"},{"line_number":93,"context_line":"be used to create all amphora instances in that AZ by-default."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Create"},{"line_number":96,"context_line":"^^^^^^"}],"source_content_type":"text/x-rst","patch_set":8,"id":"81569a6c_42362d7a","line":93,"updated":"2024-07-17 03:19:06.000000000","message":"How are we going to maintain compatibility with the current setting? How do the interact?","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":90,"context_line":"possible place to make such distribution as compute instances are created there"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Extend nova_opts with additional string option \"availability_zone\" which will"},{"line_number":93,"context_line":"be used to create all amphora instances in that AZ by-default."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Create"},{"line_number":96,"context_line":"^^^^^^"}],"source_content_type":"text/x-rst","patch_set":8,"id":"6f250325_60747ca2","line":93,"in_reply_to":"81569a6c_42362d7a","updated":"2024-09-11 09:47:24.000000000","message":"use of both availability_zone and availability_zones is kept. The first was already present in the nova section and this is expected to be default value if availability_zones is not defined.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":92,"context_line":"Extend nova_opts with additional string option \"availability_zone\" which will"},{"line_number":93,"context_line":"be used to create all amphora instances in that AZ by-default."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Create"},{"line_number":96,"context_line":"^^^^^^"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Initially when we create a new set of amphoras we should define which AZ each"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3accafc2_88b8bfa9","line":95,"updated":"2024-07-17 03:19:06.000000000","message":"I am wondering if there is a validation component here (not sure) that validates the VIP L2 is in fact stretched to the AZs vs leaving this as on operator responsibility.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":92,"context_line":"Extend nova_opts with additional string option \"availability_zone\" which will"},{"line_number":93,"context_line":"be used to create all amphora instances in that AZ by-default."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Create"},{"line_number":96,"context_line":"^^^^^^"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Initially when we create a new set of amphoras we should define which AZ each"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5c1749aa_138a8e6a","line":95,"in_reply_to":"3accafc2_88b8bfa9","updated":"2024-09-11 09:47:24.000000000","message":"Haven\u0027t seen such component and thought this will be operator responsibility. Do you think this should be validated by octavia service during amphorae creation?","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":99,"context_line":"amphora should be placed in. There were two ways to do this:"},{"line_number":100,"context_line":"1. By checking a list of currently available amphoras for the load balancer and"},{"line_number":101,"context_line":"then creating a new one in AZ where we don\u0027t have other amphoras."},{"line_number":102,"context_line":"2. By calculating a master AZ based on the amphora role and loadbalancer ID"},{"line_number":103,"context_line":"string."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"The 2nd option provides a way to create both amphoras in parallel during"}],"source_content_type":"text/x-rst","patch_set":8,"id":"54aff053_3749be94","line":102,"range":{"start_line":102,"start_character":20,"end_line":102,"end_character":26},"updated":"2024-07-17 03:19:06.000000000","message":"Please use inclusive language, such as \"primary\".\nhttps://wiki.openstack.org/wiki/Diversity/Inclusivity\nWe are trying to stop using the term \"master\" in OpenStack.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":99,"context_line":"amphora should be placed in. There were two ways to do this:"},{"line_number":100,"context_line":"1. By checking a list of currently available amphoras for the load balancer and"},{"line_number":101,"context_line":"then creating a new one in AZ where we don\u0027t have other amphoras."},{"line_number":102,"context_line":"2. By calculating a master AZ based on the amphora role and loadbalancer ID"},{"line_number":103,"context_line":"string."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"The 2nd option provides a way to create both amphoras in parallel during"}],"source_content_type":"text/x-rst","patch_set":8,"id":"ceeb374b_08cb2348","line":102,"range":{"start_line":102,"start_character":20,"end_line":102,"end_character":26},"in_reply_to":"54aff053_3749be94","updated":"2024-09-11 09:47:24.000000000","message":"Avoided use of master term. Just to be noted: MASTER is a term currently used.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"f7f6e9efbb88668ddaf03794f263f75a5158cfe8","unresolved":true,"context_lines":[{"line_number":106,"context_line":"load balancer creation and does not require querying a database for a list of"},{"line_number":107,"context_line":"existing instances. Thus it is considered as preferred course at the moment."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Master instance can be identified by checking the task name. It should have a"},{"line_number":110,"context_line":"role name text in it. So we can just look for a \"MASTER\" text presence."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"For master and standalone loadbalancer if we have multiple AZs defined, we can"}],"source_content_type":"text/x-rst","patch_set":8,"id":"03a80de3_e9dab6e5","line":109,"range":{"start_line":109,"start_character":0,"end_line":109,"end_character":59},"updated":"2024-07-12 13:35:03.000000000","message":"we usually inject a \"AMPHORA_INDEX\" parameter to the task for this kind of purpose (0 being the master amp, 1 the backup)","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":106,"context_line":"load balancer creation and does not require querying a database for a list of"},{"line_number":107,"context_line":"existing instances. Thus it is considered as preferred course at the moment."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"Master instance can be identified by checking the task name. It should have a"},{"line_number":110,"context_line":"role name text in it. So we can just look for a \"MASTER\" text presence."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"For master and standalone loadbalancer if we have multiple AZs defined, we can"}],"source_content_type":"text/x-rst","patch_set":8,"id":"78fbe041_f9fb67d5","line":109,"range":{"start_line":109,"start_character":0,"end_line":109,"end_character":59},"in_reply_to":"03a80de3_e9dab6e5","updated":"2024-09-11 09:47:24.000000000","message":"AMPHORA_INDEX looks to be used after amphora vms are created. While I need to know this information before initial creation. I tried to add it to compute_tasks.CertComputeCreate but I can\u0027t make a decision which role it is in get_create_amphora_flow. So maybe it is better to return using a list of existing amphora instances and just search unused AZ. I am just afraid of the situation when we have two amphora being created at the same time and no compute yet created. Currently it looks to be unlikely.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"f7f6e9efbb88668ddaf03794f263f75a5158cfe8","unresolved":true,"context_lines":[{"line_number":115,"context_line":"hash could be used to choose a master zone. For this purpose it should be added"},{"line_number":116,"context_line":"as an argument to a ComputeCreate function. An example of the calculation:"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":".. code-block::python"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    master_zone \u003d conf_zones[hash(loadbalancer_id) % len(conf_zones)]"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"1906fb40_c43be3da","line":118,"range":{"start_line":118,"start_character":0,"end_line":118,"end_character":21},"updated":"2024-07-12 13:35:03.000000000","message":"the code is not rendered in the generated doc","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":".. code-block::python"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    constants.FAILOVER_AMPHORA_FLOW in self.name``"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":".. code-block::python"},{"line_number":154,"context_line":"    :caption: Example how to get pending delete amphora (being failovered)"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5f132bbb_b31f0688","line":151,"updated":"2024-07-17 03:19:06.000000000","message":"I\u0027m not sure I understand why we should be looking at flow or task names.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":".. code-block::python"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    constants.FAILOVER_AMPHORA_FLOW in self.name``"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":".. code-block::python"},{"line_number":154,"context_line":"    :caption: Example how to get pending delete amphora (being failovered)"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5d47b1f3_8c9964dc","line":151,"in_reply_to":"5f132bbb_b31f0688","updated":"2024-09-11 09:47:24.000000000","message":"When failover is performed, all amphorae are still running and from the compute service all of them are equal instances. So where we should create a new one? Which AZ? It should be in the same AZ from which failover is performed. Here is we find being failovered instance and get its AZ details.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"f7f6e9efbb88668ddaf03794f263f75a5158cfe8","unresolved":true,"context_lines":[{"line_number":162,"context_line":"        amp.compute_id for amp in current_amps"},{"line_number":163,"context_line":"        if amp.status \u003d\u003d constants.AMPHORA_ALLOCATED]"},{"line_number":164,"context_line":"    if len(pending_amp) \u003d\u003d 1:"},{"line_number":165,"context_line":"        pending_compute_id \u003d pending_amp[0].compute_id"},{"line_number":166,"context_line":"        required_zone \u003d self.compute.manager.find("},{"line_number":167,"context_line":"            id\u003dpending_compute_id).to_dict().get("},{"line_number":168,"context_line":"                \u0027OS-EXT-AZ:availability_zone\u0027)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Notice. Using such approach we rely on the cached information in compute"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"cda53c25_505903ac","line":168,"range":{"start_line":165,"start_character":7,"end_line":168,"end_character":46},"updated":"2024-07-12 13:35:03.000000000","message":"there\u0027s a cached_zone attribute in the amphora object, maybe we can use it to get the AZ of the PENDING_DELETE amphora.\n\nThere\u0027s also a better way to get the amphora that is being replaced in the failover flow.\nthe function get_failover_amphora_flows takes a \"failed_amphora\" parameter, this parameter can be passed to any tasks of the flow.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":162,"context_line":"        amp.compute_id for amp in current_amps"},{"line_number":163,"context_line":"        if amp.status \u003d\u003d constants.AMPHORA_ALLOCATED]"},{"line_number":164,"context_line":"    if len(pending_amp) \u003d\u003d 1:"},{"line_number":165,"context_line":"        pending_compute_id \u003d pending_amp[0].compute_id"},{"line_number":166,"context_line":"        required_zone \u003d self.compute.manager.find("},{"line_number":167,"context_line":"            id\u003dpending_compute_id).to_dict().get("},{"line_number":168,"context_line":"                \u0027OS-EXT-AZ:availability_zone\u0027)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"Notice. Using such approach we rely on the cached information in compute"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"8a055b95_b5d01bae","line":168,"range":{"start_line":165,"start_character":7,"end_line":168,"end_character":46},"in_reply_to":"cda53c25_505903ac","updated":"2024-09-11 09:47:24.000000000","message":"cached_zone works, as for get_failover_amphora_flows, it might be reasonable to define multiAZ inside _create_active_standby_topology. And always supply AZ to create and failover flows.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    if required_zone not in compute_zones:"},{"line_number":183,"context_line":"        used_zones \u003d ["},{"line_number":184,"context_line":"            self.compute.manager.find(amp.compute_id).to_dict().get("},{"line_number":185,"context_line":"                \u0027OS-EXT-AZ:availability_zone\u0027)"},{"line_number":186,"context_line":"            for amp in allocated_amp_computes]"},{"line_number":187,"context_line":"        available_zones \u003d compute_zones - used_zones"}],"source_content_type":"text/x-rst","patch_set":8,"id":"47c33e59_ee713f0f","line":184,"updated":"2024-07-17 03:19:06.000000000","message":"This is an expensive call to nova. Can\u0027t we use information we store in the Octavia DB to look this up?","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    if required_zone not in compute_zones:"},{"line_number":183,"context_line":"        used_zones \u003d ["},{"line_number":184,"context_line":"            self.compute.manager.find(amp.compute_id).to_dict().get("},{"line_number":185,"context_line":"                \u0027OS-EXT-AZ:availability_zone\u0027)"},{"line_number":186,"context_line":"            for amp in allocated_amp_computes]"},{"line_number":187,"context_line":"        available_zones \u003d compute_zones - used_zones"}],"source_content_type":"text/x-rst","patch_set":8,"id":"a53f4962_5166c654","line":184,"in_reply_to":"47c33e59_ee713f0f","updated":"2024-09-11 09:47:24.000000000","message":"Changed to use cached_zone","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":186,"context_line":"            for amp in allocated_amp_computes]"},{"line_number":187,"context_line":"        available_zones \u003d compute_zones - used_zones"},{"line_number":188,"context_line":"        if len(available_zones) \u003e 0:"},{"line_number":189,"context_line":"            required_zone \u003d random.choice(available_zones)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7c958f00_e8d21e46","line":189,"updated":"2024-07-17 03:19:06.000000000","message":"This is an important thing to call out here and the docs. It\u0027s a design choice whether it\u0027s a failure or it\u0027s ok for amphora instances to land in the same AZ.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":186,"context_line":"            for amp in allocated_amp_computes]"},{"line_number":187,"context_line":"        available_zones \u003d compute_zones - used_zones"},{"line_number":188,"context_line":"        if len(available_zones) \u003e 0:"},{"line_number":189,"context_line":"            required_zone \u003d random.choice(available_zones)"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":8,"id":"a1013a2f_9404d5b0","line":189,"in_reply_to":"7c958f00_e8d21e46","updated":"2024-09-11 09:47:24.000000000","message":"Do I need to add addition text description or flow diagram for this?","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":192,"context_line":"Alternatives"},{"line_number":193,"context_line":"------------"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Compute tasks might not be the best place to achieve the goal. Maybe a"},{"line_number":196,"context_line":"controller_worker tasks is a better place. So we can define AZs distribution on"},{"line_number":197,"context_line":"that level and then pass these details to a compute creation task as either"},{"line_number":198,"context_line":"additional option or append it as a text to a task name. This way we will be"}],"source_content_type":"text/x-rst","patch_set":8,"id":"93bac99b_3f9920bd","line":195,"range":{"start_line":195,"start_character":0,"end_line":195,"end_character":13},"updated":"2024-07-17 03:19:06.000000000","message":"This seems like a compute task to me as these are compute AZs vs others.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":192,"context_line":"Alternatives"},{"line_number":193,"context_line":"------------"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Compute tasks might not be the best place to achieve the goal. Maybe a"},{"line_number":196,"context_line":"controller_worker tasks is a better place. So we can define AZs distribution on"},{"line_number":197,"context_line":"that level and then pass these details to a compute creation task as either"},{"line_number":198,"context_line":"additional option or append it as a text to a task name. This way we will be"}],"source_content_type":"text/x-rst","patch_set":8,"id":"da4f3573_dbbe2a40","line":195,"range":{"start_line":195,"start_character":0,"end_line":195,"end_character":13},"in_reply_to":"93bac99b_3f9920bd","updated":"2024-09-11 09:47:24.000000000","message":"but in the compute task we still need figure out which amphora we are replacing, is it main amphora or a backup one. While in controller_worker we know for sure which amphora we are replacing, which are being created and possible we can supply different AZs for each amphorae there. But I only see that we can bundle the same set of stored_params for all amphoras. \n\nFor example we could supply AZ in _create_active_standby_topology. So instead of calculating it based on the role, we just stick to it. And the same for the failover task.\n\nBut again, I didn\u0027t manage to pass these details trough flow arguments.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":29244,"name":"Gregory Thiemonge","email":"gthiemon@redhat.com","username":"gthiemonge"},"change_message_id":"f7f6e9efbb88668ddaf03794f263f75a5158cfe8","unresolved":true,"context_lines":[{"line_number":192,"context_line":"Alternatives"},{"line_number":193,"context_line":"------------"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"Compute tasks might not be the best place to achieve the goal. Maybe a"},{"line_number":196,"context_line":"controller_worker tasks is a better place. So we can define AZs distribution on"},{"line_number":197,"context_line":"that level and then pass these details to a compute creation task as either"},{"line_number":198,"context_line":"additional option or append it as a text to a task name. This way we will be"},{"line_number":199,"context_line":"able to:"}],"source_content_type":"text/x-rst","patch_set":8,"id":"5afa39a1_0ffbeb13","line":196,"range":{"start_line":195,"start_character":0,"end_line":196,"end_character":42},"updated":"2024-07-12 13:35:03.000000000","message":"I don\u0027t have a strong opinion on that\nIMHO both approaches work","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":195,"context_line":"Compute tasks might not be the best place to achieve the goal. Maybe a"},{"line_number":196,"context_line":"controller_worker tasks is a better place. So we can define AZs distribution on"},{"line_number":197,"context_line":"that level and then pass these details to a compute creation task as either"},{"line_number":198,"context_line":"additional option or append it as a text to a task name. This way we will be"},{"line_number":199,"context_line":"able to:"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"* create instance in correct availability zone"}],"source_content_type":"text/x-rst","patch_set":8,"id":"d69971dc_7ca1061d","line":198,"range":{"start_line":198,"start_character":34,"end_line":198,"end_character":55},"updated":"2024-07-17 03:19:06.000000000","message":"This doesn\u0027t seem viable as there could be many AZs.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":195,"context_line":"Compute tasks might not be the best place to achieve the goal. Maybe a"},{"line_number":196,"context_line":"controller_worker tasks is a better place. So we can define AZs distribution on"},{"line_number":197,"context_line":"that level and then pass these details to a compute creation task as either"},{"line_number":198,"context_line":"additional option or append it as a text to a task name. This way we will be"},{"line_number":199,"context_line":"able to:"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"* create instance in correct availability zone"}],"source_content_type":"text/x-rst","patch_set":8,"id":"503b7ad9_8ec18c9d","line":198,"range":{"start_line":198,"start_character":34,"end_line":198,"end_character":55},"in_reply_to":"d69971dc_7ca1061d","updated":"2024-09-11 09:47:24.000000000","message":"Indeed, but how to pass the details otherwise? Extend functions with additional argument and pass AZ details across the whole chain? Isn\u0027t text in the task name exactly for this purpose?","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":219,"context_line":"* https://review.opendev.org/c/openstack/nova-specs/+/900296"},{"line_number":220,"context_line":"* https://review.opendev.org/c/openstack/nova-specs/+/890779"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"Data model impact"},{"line_number":224,"context_line":"-----------------"},{"line_number":225,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"75dba5a4_96025a54","line":222,"updated":"2024-07-17 03:19:06.000000000","message":"We should also mention AZ options that do not require a shared L2, such as BGP options. I think the key to this spec is the shared L2 (which keeps things simpler)","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"2d00e8a000abe2f5c8619049ddd6759d2e441e5e","unresolved":true,"context_lines":[{"line_number":219,"context_line":"* https://review.opendev.org/c/openstack/nova-specs/+/900296"},{"line_number":220,"context_line":"* https://review.opendev.org/c/openstack/nova-specs/+/890779"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"Data model impact"},{"line_number":224,"context_line":"-----------------"},{"line_number":225,"context_line":""}],"source_content_type":"text/x-rst","patch_set":8,"id":"1b31a60b_d3bf974b","line":222,"in_reply_to":"75dba5a4_96025a54","updated":"2024-09-11 09:47:24.000000000","message":"Are you referring\nhttps://docs.openstack.org/octavia/latest/contributor/specs/version1.1/active-active-l3-distributor.html\n\nAdded BGP as alternative to L2 requirements in the description section.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"e683cb010a6975a49c85e37dd9077110c1bea38a","unresolved":true,"context_lines":[{"line_number":324,"context_line":""},{"line_number":325,"context_line":"Flavor schema is changing plus the list of availability zones may be described"},{"line_number":326,"context_line":"in multiple places. So a text describing a logic needs to be added to the"},{"line_number":327,"context_line":"docuemntation."},{"line_number":328,"context_line":""},{"line_number":329,"context_line":"References"},{"line_number":330,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":8,"id":"c686e9fe_7ea7b6fb","line":327,"updated":"2024-07-17 03:19:06.000000000","message":"Yeah, we need to call out the requirements and behavior if enough AZs are not available.","commit_id":"5ab6a8001e9a3376f09f3e72eb407bda88d20572"},{"author":{"_account_id":28619,"name":"Dmitriy Rabotyagov","email":"noonedeadpunk@gmail.com","username":"noonedeadpunk"},"change_message_id":"bec7c5c48339435183908170035e24aa68f3198e","unresolved":true,"context_lines":[{"line_number":42,"context_line":"(assuming at least one compute AZ defined in octavia AZ)."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"So resulting options would be (from higher priority to lower):"},{"line_number":45,"context_line":"* loadbalancer availability zone supplied during loadbalancer creation as a"},{"line_number":46,"context_line":"name of compute zone"},{"line_number":47,"context_line":"* in octavia flavor as a list of octavia availability zones with compute zones"},{"line_number":48,"context_line":"* in octavia flavor as a list of compute zones"},{"line_number":49,"context_line":"* in the controller_worker section of the octavia configuration file"},{"line_number":50,"context_line":"* in the compute section of the octavia configuration file"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Detailed options"},{"line_number":53,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"350a39a3_cbda0a65","line":50,"range":{"start_line":45,"start_character":0,"end_line":50,"end_character":58},"updated":"2024-11-08 09:11:43.000000000","message":"I think I see 1 missing part here how regarding - what to do when [controller_worker]/volume_driver \u003d volume_cinder_driver\n\nAs then we also need to handle [cinder]/availability_zone which can\u0027t be a list and will fail in case cross_az_attach is False in Nova.\n\nOr we just leave that as a corner case for now and suggest not using cinder volume driver in docs for that scenario? As it could be a valid solution as well.","commit_id":"499dc15b3e1fd7e0d785248bfc7db304d0bfbda8"},{"author":{"_account_id":32053,"name":"Denys Mishchenko","email":"denis@mischenko.org.ua","username":"arddennis"},"change_message_id":"aedc0e3f33b37fa52bd3d0c2e7367e96be80e520","unresolved":true,"context_lines":[{"line_number":42,"context_line":"(assuming at least one compute AZ defined in octavia AZ)."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"So resulting options would be (from higher priority to lower):"},{"line_number":45,"context_line":"* loadbalancer availability zone supplied during loadbalancer creation as a"},{"line_number":46,"context_line":"name of compute zone"},{"line_number":47,"context_line":"* in octavia flavor as a list of octavia availability zones with compute zones"},{"line_number":48,"context_line":"* in octavia flavor as a list of compute zones"},{"line_number":49,"context_line":"* in the controller_worker section of the octavia configuration file"},{"line_number":50,"context_line":"* in the compute section of the octavia configuration file"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"Detailed options"},{"line_number":53,"context_line":"----------------"}],"source_content_type":"text/x-rst","patch_set":14,"id":"e8757799_afa3cfee","line":50,"range":{"start_line":45,"start_character":0,"end_line":50,"end_character":58},"in_reply_to":"350a39a3_cbda0a65","updated":"2024-11-08 09:36:02.000000000","message":"Maybe we should define compute_az and cinder_az inside octavia availability zone and have an additional option to set if they should be connected (the same)?\nAnd this way we can simply get the necessary availability zone (both compute and volume) from the octavia az details.","commit_id":"499dc15b3e1fd7e0d785248bfc7db304d0bfbda8"}]}
