Hello Balazs:

Sorry for the late reply, I was on PTO.

If I'm not wrong, now port['binding:profile']['allocation'] is a UUID and you need it to be a list of UUIDs. Am I correct?

To make this change in the DB you should use the Alembic migrations, as you said. That should ensure all registers are translated. We should also include a sanity check to ensure the DB migration was done correctly.

Is that what you needed? Don't hesitate to ping me in IRC if needed.

Regards.

On Fri, Sep 10, 2021 at 6:06 PM Balazs Gibizer <balazs.gibizer@est.tech> wrote:
Hi Neutrinos!

We found a technical challenge during implementing the
port-resource-request-groups API extension[1]. That extension changes
the format of the port.resoruce_request as well as the format of theĀ 
port.binding:profile.allocation. The former is a calculated field on
the port so that is easy. However the bindig:profile is persisted in
the database so data migration is needed. What is the canonical way to
do such DB data translation in Neutron? Can we translate the data in
place during alembic migration? Or should we do some kind of online
data migration when the data is translated by neutron when it is read
from the db?

cheers,
gibi

[1] https://review.opendev.org/c/openstack/neutron/+/805637/5