[openstack-dev] [Neutron][LBaaS] - Best release to upgrade from LBaaS v1 to v2

Saverio Proto saverio.proto at switch.ch
Fri Mar 10 16:04:22 UTC 2017


I spent the all day trying to deploy an Horizon instance with working
panels for LBaaSv2.
https://github.com/openstack/neutron-lbaas-dashboard

I tried stable/ocata and I am never able to list existing load balancers
or create a new loadbalancer.

Looks like I am not the only one with this issue:
https://ask.openstack.org/en/question/96790/lbaasv2-dashboard-issues/

Is there anyone that has a working setup ?

Should I open a bug here?
https://bugs.launchpad.net/octavia/+filebug

Thanks

Saverio


On 09/03/17 16:19, Saverio Proto wrote:
> Hello,
> 
> I managed to do the database migration.
> 
> I had to skip this logic:
> https://github.com/openstack/neutron-lbaas/blob/master/tools/database-migration-from-v1-to-v2.py#L342-L353
> 
> I had to force flag=True
> 
> That code obviously breaks if you have LBaaS used by more than 1 tenant.
> 
> What was the goal ? to make sure that a given healthmonitor is not
> reused in multiple pools ?
> 
> Should the right approach be to check if these two values are the same ?:
> 
> select count(DISTINCT monitor_id) from poolmonitorassociations;
> select count(monitor_id) from poolmonitorassociations;
> 
> Second question: should the old tables from LBaaSV1 be dropped ?
> 
> Please give me feedback so I can fix the code and submit a review.
> 
> thank you
> 
> Saverio
> 
> 
> On 09/03/17 13:38, Saverio Proto wrote:
>>> I would recommend experimenting with the database-migration-from-v1-to-v2.py
>>> script and working with your vendor (if you are using a vendor load
>>> balancing engine) on a migration path.
>>
>>
>> Hello,
>> there is no vendor here to help us :)
>>
>> I made a backup of the current DB.
>>
>> I identified this folder on our Neutron server:
>>
>> /usr/lib/python2.7/dist-packages/neutron_lbaas/db/migration ; tree
>> .
>> |-- alembic_migrations
>> |   |-- env.py
>> |   |-- env.pyc
>> |   |-- __init__.py
>> |   |-- __init__.pyc
>> |   |-- README
>> |   |-- script.py.mako
>> |   `-- versions
>> |       |-- 364f9b6064f0_agentv2.py
>> |       |-- 364f9b6064f0_agentv2.pyc
>> |       |-- 4b6d8d5310b8_add_index_tenant_id.py
>> |       |-- 4b6d8d5310b8_add_index_tenant_id.pyc
>> |       |-- 4ba00375f715_edge_driver.py
>> |       |-- 4ba00375f715_edge_driver.pyc
>> |       |-- 4deef6d81931_add_provisioning_and_operating_statuses.py
>> |       |-- 4deef6d81931_add_provisioning_and_operating_statuses.pyc
>> |       |-- CONTRACT_HEAD
>> |       |-- EXPAND_HEAD
>> |       |-- kilo_release.py
>> |       |-- kilo_release.pyc
>> |       |-- lbaasv2.py
>> |       |-- lbaasv2.pyc
>> |       |-- lbaasv2_tls.py
>> |       |-- lbaasv2_tls.pyc
>> |       |-- liberty
>> |       |   |-- contract
>> |       |   |   |-- 130ebfdef43_initial.py
>> |       |   |   `-- 130ebfdef43_initial.pyc
>> |       |   `-- expand
>> |       |       |-- 3345facd0452_initial.py
>> |       |       `-- 3345facd0452_initial.pyc
>> |       |-- mitaka
>> |       |   `-- expand
>> |       |       |-- 3426acbc12de_add_flavor_id.py
>> |       |       |-- 3426acbc12de_add_flavor_id.pyc
>> |       |       |-- 3543deab1547_add_l7_tables.py
>> |       |       |-- 3543deab1547_add_l7_tables.pyc
>> |       |       |-- 4a408dd491c2_UpdateName.py
>> |       |       |-- 4a408dd491c2_UpdateName.pyc
>> |       |       |-- 62deca5010cd_add_tenant_id_index_for_l7_tables.py
>> |       |       |-- 62deca5010cd_add_tenant_id_index_for_l7_tables.pyc
>> |       |       |-- 6aee0434f911_independent_pools.py
>> |       |       `-- 6aee0434f911_independent_pools.pyc
>> |       |-- start_neutron_lbaas.py
>> |       `-- start_neutron_lbaas.pyc
>> |-- __init__.py
>> `-- __init__.pyc
>>
>> 7 directories, 40 files
>>
>> Now here it says: "Create a revision file"
>>
>> https://github.com/openstack/neutron-lbaas/blob/master/tools/database-migration-from-v1-to-v2.py#L30
>>
>> There is some specific openstack-dev documentation to "Create a revision
>> file" or I should just learn the Alembic tool ? I never used it before.
>>
>> So far I did copy the alembic.ini from here:
>> https://github.com/openstack/neutron/blob/master/neutron/db/migration/alembic.ini
>>
>> into /usr/lib/python2.7/dist-packages/neutron_lbaas/db/migration
>>
>> then I did run the command:
>>
>> alembic revision -m "migrate to LBaaSv2"
>>
>> as a result it created the file:
>> /usr/lib/python2.7/dist-packages/neutron_lbaas/db/migration/alembic_migrations/versions/24274573545b_migrate_to_lbaasv2.py
>>
>> Then I added the script to that file:
>> wget -O -
>> https://raw.githubusercontent.com/openstack/neutron-lbaas/master/tools/database-migration-from-v1-to-v2.py
>>>> alembic_migrations/versions/24274573545b_migrate_to_lbaasv2.py
>>
>> I tried now:
>> neutron-db-manage upgrade heads
>>
>> but it fails with a easy stacktrace. I get stuck here:
>> https://github.com/openstack/neutron-lbaas/blob/master/tools/database-migration-from-v1-to-v2.py#L346
>>
>> of course the query:
>> select tenant_id from pools;
>>
>> returns more than 1 tenant_id
>>
>> it means I cannot migrate if I have more than 1 tenant using LBaaS v1 ?
>>
>> am I doing something completely wrong here ? am I on the right direction ?
>>
>> thank you
>>
>> Saverio
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> __________________________________________________________________________
>> OpenStack Development Mailing List (not for usage questions)
>> Unsubscribe: OpenStack-dev-request at lists.openstack.org?subject:unsubscribe
>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>>
> 
> 


-- 
SWITCH
Saverio Proto, Peta Solutions
Werdstrasse 2, P.O. Box, 8021 Zurich, Switzerland
phone +41 44 268 15 15, direct +41 44 268 1573
saverio.proto at switch.ch, http://www.switch.ch

http://www.switch.ch/stories



More information about the OpenStack-dev mailing list