Updated pg_num/pgp_num values for a pool are silently ignored if autoscale_mode is on:
                if details['pg_autoscale_mode'] == 'on':
                    delta.pop('pg_num', None)
                    delta.pop('pgp_num', None)
 
This means that autoscale needs to be disabled first, but it has to be done in a separate run: