ECE template migration error: TemplateMigrationError It was impossible to find a suitable value for [autoscalingMax] in the discrete_sizes.sizes

In ECE 3.6.2 when you deployed with default template and want to have some limitiation in instance sizes, you will get this error while migrating to different template what has no 32G size.

Is not possible to migrate deployment to desired template due to:

[TemplateMigrationError(It was impossible to find a suitable value for [autoscalingMax] in the discrete_sizes.sizes of the [d646d3d56f714e77a510371e7dd24659] instance configuration.)]

You will get this error becasue the austoscaling_max value is 2T in the default template.

You can go down to 32G because the math is the following:

autoscaling_max.value cannot exceed the value of 64 * discrete_sizes.sizes as it's limited to 64 nodes in ECE

I have done tests in my 3.6.2 ECE test installation:

Instance configurations:
Instance16G -2,4,8,16 ramsizes
Instance32G -2,4,8,16,32 ramsizes

Deployment templates:
template16G -hot, instance16G, autoscaling min-max 2G
template32G -hot, instance32G, autoscaling min-max 2G
template16G_with_16Gmax -hot, instance16G, autoscaling min2G-max16G
default

Deployments:
FromTemplate16 -origin template: template16G
FromTemplate32 -origin template: template32G
template16G_with16G_max_as -origin template: template16G_with16G_max_as

Test template migrations:

  • default -> template32G -> template16G fails after the first migration

  • template16G -> template32G -> default -> template16G works(autoscaling_max is 2048 everywhere)

  • template32G -> template16G -> default -> template32G works(autoscaling_max is 2048 everywhere)

  • template16G_with16G_max_as -> template32G -> template32G -> default -> template16G_with16G_max_as works(autoscaling_max is 16384 everywhere)

Looks like the autoscaling_max value is inherited between templates from the first deployment.

So if we have a 2T autoscaling_max it does not matter what we have in the further migration templates. It will be 2T forever.

So the only one template where we can migrate is the 32G.

And the interesting outcome what fixed for me:

If you had migrated away from default template to a 32G, empty one of the allocator (maintenance and move instances) what hold some parts of the deployment.
Then magically you able to migrate from template32G to template16G.

Please somebody else confirm or test this.

It works if you just do random instance movement here and there.