)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36412,"name":"Scott Davidson","email":"sdavidson327@gmail.com","username":"sd109"},"change_message_id":"41d8708ea052855498f34eedd6f8f7b580e9a269","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"2eb44e70_47858644","updated":"2024-05-17 08:50:46.000000000","message":"I\u0027ve been testing the latest version of this patch and it works for me (for autoscaling the default worker group). I\u0027m happy to make a follow up patch to support autoscaling of non-default node groups too.","commit_id":"001cfbf4cbefa337c4ccf7179aa4136028733785"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"c6afb77755d93a794c2bd75739908e93227623d2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"8969d5e8_04b5c6e1","updated":"2024-05-28 09:00:38.000000000","message":"Ah, we need a reno for this, and we should update the description to include this is only the default node group.","commit_id":"8342fa8fb4f15737839eb709aecc693ba997e6b7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"54775d0fb0bc266cad4fa74857d8a91e764927fa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"0e776815_d0aeedd0","updated":"2024-05-28 08:55:00.000000000","message":"I think we should merge this, then add that little fix in the follow on patch.","commit_id":"8342fa8fb4f15737839eb709aecc693ba997e6b7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"72cdf183d5b122e2f6dcf30835e21f30f8085921","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"1466cea3_b91eb58d","updated":"2024-05-28 09:06:02.000000000","message":"We need to also add a reno to this patch.","commit_id":"dfa8f6dc5abe9f693e28ea47e5761ceba55a7f3a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"76aa3340d94a7e0e4a0d15e4ab2d413204090ccc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"dbf485ec_87ded3ec","updated":"2024-05-28 10:05:31.000000000","message":"Thank you Travis, the code looks great. Thank you Scott for sorting the commit message and the reno.","commit_id":"f5881c9388a1722ee27901f224b89ca34b6bb9e2"}],"magnum_capi_helm/driver.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7915af37a47a2a09fdf5a4598f827b7caf49d6a0","unresolved":true,"context_lines":[{"line_number":579,"context_line":"        return self._get_label_bool(cluster, \"auto_healing_enabled\", True)"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    def _get_autoscale(self, cluster):"},{"line_number":582,"context_line":"        auto_scale \u003d self._get_label_bool("},{"line_number":583,"context_line":"            cluster, \"auto_scaling_enabled\", False"},{"line_number":584,"context_line":"        )"},{"line_number":585,"context_line":"        if auto_scale:"},{"line_number":586,"context_line":"            min_nodes \u003d self._get_label_int(cluster, \"min_node_count\", 0)"},{"line_number":587,"context_line":"            max_nodes \u003d self._get_label_int(cluster, \"max_node_count\", 0)"}],"source_content_type":"text/x-python","patch_set":5,"id":"2d31a679_2f797e59","line":584,"range":{"start_line":582,"start_character":0,"end_line":584,"end_character":9},"updated":"2024-04-30 09:14:46.000000000","message":"I see, we should respect this label I guess.","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d775efd192a230fd4576db2c73049289ff07c117","unresolved":false,"context_lines":[{"line_number":579,"context_line":"        return self._get_label_bool(cluster, \"auto_healing_enabled\", True)"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    def _get_autoscale(self, cluster):"},{"line_number":582,"context_line":"        auto_scale \u003d self._get_label_bool("},{"line_number":583,"context_line":"            cluster, \"auto_scaling_enabled\", False"},{"line_number":584,"context_line":"        )"},{"line_number":585,"context_line":"        if auto_scale:"},{"line_number":586,"context_line":"            min_nodes \u003d self._get_label_int(cluster, \"min_node_count\", 0)"},{"line_number":587,"context_line":"            max_nodes \u003d self._get_label_int(cluster, \"max_node_count\", 0)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7b5965c8_6a2b6cd7","line":584,"range":{"start_line":582,"start_character":0,"end_line":584,"end_character":9},"in_reply_to":"2d31a679_2f797e59","updated":"2024-05-28 10:04:36.000000000","message":"Acknowledged","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":35572,"name":"Pawel Kubica","email":"pawel.kubica@comarch.com","username":"pawcykca"},"change_message_id":"e9fe5b80d6830e31a69c1c2a30316b5828dceba1","unresolved":true,"context_lines":[{"line_number":585,"context_line":"        if auto_scale:"},{"line_number":586,"context_line":"            min_nodes \u003d self._get_label_int(cluster, \"min_node_count\", 0)"},{"line_number":587,"context_line":"            max_nodes \u003d self._get_label_int(cluster, \"max_node_count\", 0)"},{"line_number":588,"context_line":"            if min_nodes \u003d\u003d 0 or max_nodes \u003c\u003d min_nodes:"},{"line_number":589,"context_line":"                raise exception.MagnumException("},{"line_number":590,"context_line":"                    message\u003d\"min_node_count and max_node_count \""},{"line_number":591,"context_line":"                    \"must be defined and \""}],"source_content_type":"text/x-python","patch_set":5,"id":"954a2e63_6eaeb2f1","line":588,"range":{"start_line":588,"start_character":12,"end_line":588,"end_character":56},"updated":"2024-04-30 09:59:20.000000000","message":"We should also check if \u0027min_node_count\u0027 is not higher than \u0027node_count\u0027 defined by the user for default-worker nodegroup.","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2995468bb628e909044fff6a66ac3855b063bb31","unresolved":false,"context_lines":[{"line_number":585,"context_line":"        if auto_scale:"},{"line_number":586,"context_line":"            min_nodes \u003d self._get_label_int(cluster, \"min_node_count\", 0)"},{"line_number":587,"context_line":"            max_nodes \u003d self._get_label_int(cluster, \"max_node_count\", 0)"},{"line_number":588,"context_line":"            if min_nodes \u003d\u003d 0 or max_nodes \u003c\u003d min_nodes:"},{"line_number":589,"context_line":"                raise exception.MagnumException("},{"line_number":590,"context_line":"                    message\u003d\"min_node_count and max_node_count \""},{"line_number":591,"context_line":"                    \"must be defined and \""}],"source_content_type":"text/x-python","patch_set":5,"id":"15db12d2_7cce4b3d","line":588,"range":{"start_line":588,"start_character":12,"end_line":588,"end_character":56},"in_reply_to":"954a2e63_6eaeb2f1","updated":"2024-05-28 10:04:24.000000000","message":"Acknowledged","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"d6285e27485a956d6591f6fe0601cb0ba002c1f3","unresolved":true,"context_lines":[{"line_number":786,"context_line":"                {"},{"line_number":787,"context_line":"                    \"name\": driver_utils.sanitized_name(ng.name),"},{"line_number":788,"context_line":"                    \"machineFlavor\": ng.flavor_id,"},{"line_number":789,"context_line":"                    \"machineCount\": ng.node_count,"},{"line_number":790,"context_line":"                }"},{"line_number":791,"context_line":"                for ng in nodegroups"},{"line_number":792,"context_line":"                if ng.role !\u003d NODE_GROUP_ROLE_CONTROLLER"}],"source_content_type":"text/x-python","patch_set":5,"id":"36b69da1_9c7d3a29","line":789,"updated":"2024-04-30 09:05:27.000000000","message":"This is what needs to change I believe ^","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2995468bb628e909044fff6a66ac3855b063bb31","unresolved":false,"context_lines":[{"line_number":786,"context_line":"                {"},{"line_number":787,"context_line":"                    \"name\": driver_utils.sanitized_name(ng.name),"},{"line_number":788,"context_line":"                    \"machineFlavor\": ng.flavor_id,"},{"line_number":789,"context_line":"                    \"machineCount\": ng.node_count,"},{"line_number":790,"context_line":"                }"},{"line_number":791,"context_line":"                for ng in nodegroups"},{"line_number":792,"context_line":"                if ng.role !\u003d NODE_GROUP_ROLE_CONTROLLER"}],"source_content_type":"text/x-python","patch_set":5,"id":"5453700b_3b0eb253","line":789,"in_reply_to":"1a045e7e_5c577cd3","updated":"2024-05-28 10:04:24.000000000","message":"This is a limitation within the openstack provider for CAPI, because of how it works out how much RAM you really get on each node, etc.","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"7e75a2bb99d43a92fd8016d65d7492a6c2fbd12b","unresolved":true,"context_lines":[{"line_number":786,"context_line":"                {"},{"line_number":787,"context_line":"                    \"name\": driver_utils.sanitized_name(ng.name),"},{"line_number":788,"context_line":"                    \"machineFlavor\": ng.flavor_id,"},{"line_number":789,"context_line":"                    \"machineCount\": ng.node_count,"},{"line_number":790,"context_line":"                }"},{"line_number":791,"context_line":"                for ng in nodegroups"},{"line_number":792,"context_line":"                if ng.role !\u003d NODE_GROUP_ROLE_CONTROLLER"}],"source_content_type":"text/x-python","patch_set":5,"id":"b8483add_39ec351c","line":789,"in_reply_to":"36b69da1_9c7d3a29","updated":"2024-04-30 09:07:42.000000000","message":"If ng.max_node_count is None, we should keep it the same.\n\nOtherwise, I believe we should use the min max values from the node group here:\nhttps://github.com/openstack/magnum/blob/3759742e104516f696878d999079e44e73519be9/magnum/objects/nodegroup.py#L48","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":35572,"name":"Pawel Kubica","email":"pawel.kubica@comarch.com","username":"pawcykca"},"change_message_id":"e9fe5b80d6830e31a69c1c2a30316b5828dceba1","unresolved":true,"context_lines":[{"line_number":786,"context_line":"                {"},{"line_number":787,"context_line":"                    \"name\": driver_utils.sanitized_name(ng.name),"},{"line_number":788,"context_line":"                    \"machineFlavor\": ng.flavor_id,"},{"line_number":789,"context_line":"                    \"machineCount\": ng.node_count,"},{"line_number":790,"context_line":"                }"},{"line_number":791,"context_line":"                for ng in nodegroups"},{"line_number":792,"context_line":"                if ng.role !\u003d NODE_GROUP_ROLE_CONTROLLER"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a045e7e_5c577cd3","line":789,"in_reply_to":"aafbb555_a4883c61","updated":"2024-04-30 09:59:20.000000000","message":"Why can\u0027t we create default-woreker nodegroup with 0 nodes?","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"a271eb4c4c62fcf4f37960c824bd35aa9ecc2ed1","unresolved":true,"context_lines":[{"line_number":786,"context_line":"                {"},{"line_number":787,"context_line":"                    \"name\": driver_utils.sanitized_name(ng.name),"},{"line_number":788,"context_line":"                    \"machineFlavor\": ng.flavor_id,"},{"line_number":789,"context_line":"                    \"machineCount\": ng.node_count,"},{"line_number":790,"context_line":"                }"},{"line_number":791,"context_line":"                for ng in nodegroups"},{"line_number":792,"context_line":"                if ng.role !\u003d NODE_GROUP_ROLE_CONTROLLER"}],"source_content_type":"text/x-python","patch_set":5,"id":"aafbb555_a4883c61","line":789,"in_reply_to":"b8483add_39ec351c","updated":"2024-04-30 09:11:30.000000000","message":"Lets hard code the minimum to be max(1, ng.min_node_count) and ignore users specifying 0 for now, so we do not break things.\n\nIdeally we change the Mangum API to reject things, but that is for the future.","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ba9bd524166e2165e8db65e03626f01d8d965a2d","unresolved":true,"context_lines":[{"line_number":789,"context_line":"                    \"machineCount\": ng.node_count,"},{"line_number":790,"context_line":"                }"},{"line_number":791,"context_line":"                for ng in nodegroups"},{"line_number":792,"context_line":"                if ng.role !\u003d NODE_GROUP_ROLE_CONTROLLER"},{"line_number":793,"context_line":"            ],"},{"line_number":794,"context_line":"            \"addons\": {"},{"line_number":795,"context_line":"                \"openstack\": {"}],"source_content_type":"text/x-python","patch_set":5,"id":"cf499e26_3e55bb3a","line":792,"updated":"2024-04-30 09:41:52.000000000","message":"looks like \"default-worker\" comes from the cluster labels:\nhttps://github.com/openstack/magnum/blob/3759742e104516f696878d999079e44e73519be9/magnum/drivers/common/templates/kubernetes/fragments/enable-auto-scaling.sh#L147","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2995468bb628e909044fff6a66ac3855b063bb31","unresolved":false,"context_lines":[{"line_number":789,"context_line":"                    \"machineCount\": ng.node_count,"},{"line_number":790,"context_line":"                }"},{"line_number":791,"context_line":"                for ng in nodegroups"},{"line_number":792,"context_line":"                if ng.role !\u003d NODE_GROUP_ROLE_CONTROLLER"},{"line_number":793,"context_line":"            ],"},{"line_number":794,"context_line":"            \"addons\": {"},{"line_number":795,"context_line":"                \"openstack\": {"}],"source_content_type":"text/x-python","patch_set":5,"id":"03ab45b5_649aaf14","line":792,"in_reply_to":"0b430a28_0f8cec21","updated":"2024-05-28 10:04:24.000000000","message":"Acknowledged","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":35572,"name":"Pawel Kubica","email":"pawel.kubica@comarch.com","username":"pawcykca"},"change_message_id":"e9fe5b80d6830e31a69c1c2a30316b5828dceba1","unresolved":true,"context_lines":[{"line_number":789,"context_line":"                    \"machineCount\": ng.node_count,"},{"line_number":790,"context_line":"                }"},{"line_number":791,"context_line":"                for ng in nodegroups"},{"line_number":792,"context_line":"                if ng.role !\u003d NODE_GROUP_ROLE_CONTROLLER"},{"line_number":793,"context_line":"            ],"},{"line_number":794,"context_line":"            \"addons\": {"},{"line_number":795,"context_line":"                \"openstack\": {"}],"source_content_type":"text/x-python","patch_set":5,"id":"0b430a28_0f8cec21","line":792,"in_reply_to":"cf499e26_3e55bb3a","updated":"2024-04-30 09:59:20.000000000","message":"Yes, values from labels (min and max node count) should apply only to default-worker nodegroup.","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2beabc2df2f7641e0788884b963b40b8b2be2d16","unresolved":true,"context_lines":[{"line_number":829,"context_line":"            values \u003d helm.mergeconcat(values, disk_details)"},{"line_number":830,"context_line":""},{"line_number":831,"context_line":"        auto_scale \u003d self._get_autoscale(cluster)"},{"line_number":832,"context_line":"        if auto_scale:"},{"line_number":833,"context_line":"            auto_scaling \u003d {"},{"line_number":834,"context_line":"                \"nodeGroupDefaults\": {"},{"line_number":835,"context_line":"                    \"autoscale\": auto_scale[\"enabled\"],"}],"source_content_type":"text/x-python","patch_set":5,"id":"6352c960_9e3279a6","line":832,"updated":"2024-04-30 09:08:15.000000000","message":"I don\u0027t believe we should do this here, there API is already present... I think, in the object layer.","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2995468bb628e909044fff6a66ac3855b063bb31","unresolved":false,"context_lines":[{"line_number":829,"context_line":"            values \u003d helm.mergeconcat(values, disk_details)"},{"line_number":830,"context_line":""},{"line_number":831,"context_line":"        auto_scale \u003d self._get_autoscale(cluster)"},{"line_number":832,"context_line":"        if auto_scale:"},{"line_number":833,"context_line":"            auto_scaling \u003d {"},{"line_number":834,"context_line":"                \"nodeGroupDefaults\": {"},{"line_number":835,"context_line":"                    \"autoscale\": auto_scale[\"enabled\"],"}],"source_content_type":"text/x-python","patch_set":5,"id":"96040bca_158dcfd9","line":832,"in_reply_to":"6352c960_9e3279a6","updated":"2024-05-28 10:04:24.000000000","message":"Acknowledged","commit_id":"f40d7621f75a3a48f3bd251aa563367a297baf67"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"54775d0fb0bc266cad4fa74857d8a91e764927fa","unresolved":true,"context_lines":[{"line_number":757,"context_line":"                    machineFlavor\u003dng.flavor_id,"},{"line_number":758,"context_line":"                    machineCount\u003dng.node_count,"},{"line_number":759,"context_line":"                )"},{"line_number":760,"context_line":"                # Assume first nodegroup is default-worker."},{"line_number":761,"context_line":"                if not nodegroup_set:"},{"line_number":762,"context_line":"                    auto_scale \u003d self._get_autoscale(cluster, ng)"},{"line_number":763,"context_line":"                    if auto_scale:"}],"source_content_type":"text/x-python","patch_set":8,"id":"3fc0fea5_fba97665","line":760,"updated":"2024-05-28 08:55:00.000000000","message":"The follow on patch makes this more robust, which is nice, but this seems OK for now.","commit_id":"8342fa8fb4f15737839eb709aecc693ba997e6b7"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"2995468bb628e909044fff6a66ac3855b063bb31","unresolved":false,"context_lines":[{"line_number":757,"context_line":"                    machineFlavor\u003dng.flavor_id,"},{"line_number":758,"context_line":"                    machineCount\u003dng.node_count,"},{"line_number":759,"context_line":"                )"},{"line_number":760,"context_line":"                # Assume first nodegroup is default-worker."},{"line_number":761,"context_line":"                if not nodegroup_set:"},{"line_number":762,"context_line":"                    auto_scale \u003d self._get_autoscale(cluster, ng)"},{"line_number":763,"context_line":"                    if auto_scale:"}],"source_content_type":"text/x-python","patch_set":8,"id":"c6bcb931_c548a756","line":760,"in_reply_to":"3fc0fea5_fba97665","updated":"2024-05-28 10:04:24.000000000","message":"Acknowledged","commit_id":"8342fa8fb4f15737839eb709aecc693ba997e6b7"}]}
