HEAD, head, 24f28869838b (my new file) all say the same thing. :(
On Tue, Jul 7, 2015 at 12:34 PM Salvatore Orlando <sorla...@nicira.com> wrote: > possibly I was wrong in mixing up git & alembic. > It should be "upgrade head" - lowercase. > > If that doesn't work there might some other issue lurking. > > Salvatore > > On 7 July 2015 at 17:44, Paul Michali <p...@michali.net> wrote: > >> Salvatore, >> >> I changed head to the version before my new one, and then tried to >> upgrade and I see this: >> neutron-db-manage --config-file /opt/stack/neutron/etc/neutron.conf >> --service vpnaas upgrade HEAD >> Traceback (most recent call last): >> File "/usr/local/bin/neutron-db-manage", line 10, in <module> >> sys.exit(main()) >> File "/opt/stack/neutron/neutron/db/migration/cli.py", line 238, in main >> CONF.command.func(config, CONF.command.name) >> File "/opt/stack/neutron/neutron/db/migration/cli.py", line 105, in >> do_upgrade >> run_sanity_checks(config, revision) >> File "/opt/stack/neutron/neutron/db/migration/cli.py", line 229, in >> run_sanity_checks >> script_dir.run_env() >> File "/usr/local/lib/python2.7/dist-packages/alembic/script.py", line >> 390, in run_env >> util.load_python_file(self.dir, 'env.py') >> File "/usr/local/lib/python2.7/dist-packages/alembic/util.py", line >> 243, in load_python_file >> module = load_module_py(module_id, path) >> File "/usr/local/lib/python2.7/dist-packages/alembic/compat.py", line >> 79, in load_module_py >> mod = imp.load_source(module_id, path, fp) >> File >> "/opt/stack/neutron-vpnaas/neutron_vpnaas/db/migration/alembic_migrations/env.py", >> line 86, in <module> >> run_migrations_online() >> File >> "/opt/stack/neutron-vpnaas/neutron_vpnaas/db/migration/alembic_migrations/env.py", >> line 67, in run_migrations_online >> engine = session.create_engine(neutron_config.database.connection) >> File >> "/usr/local/lib/python2.7/dist-packages/oslo_db/sqlalchemy/engines.py", >> line 112, in create_engine >> url = sqlalchemy.engine.url.make_url(sql_connection) >> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/url.py", >> line 186, in make_url >> return _parse_rfc1738_args(name_or_url) >> File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/url.py", >> line 235, in _parse_rfc1738_args >> "Could not parse rfc1738 URL from string '%s'" % name) >> sqlalchemy.exc.ArgumentError: Could not parse rfc1738 URL from string '' >> >> Any ideas what is wrong here? >> >> On Tue, Jul 7, 2015 at 10:05 AM Paul Michali <p...@michali.net> wrote: >> >>> >>> Yes, I wasn't using the --service option, so I suspect that is why my >>> down_version was wrong. In talking with Akihiro, I added a check to PEP8 >>> and made sure that it fails if head is wrong. It is: >>> https://review.openstack.org/#/c/199082/ (of course that failed py27 - >>> I've got to see if there was some recent breakage in vpn repo, again). >>> >>> Regarding the migration, one of the new columns may be None, but there >>> must be at least one IP version entry (there is an existing test in VPN for >>> using a router w/o an external IP set). Since the new code will rely on >>> these new fields, I'd like to populate them as part of the migration. I >>> think it would be more complicated to handle during operation. >>> >>> Does anyone have examples of how to do queries of objects, from the >>> migration upgrade() code? >>> >>> >>> Regards, >>> >>> PCM >>> >>> On Tue, Jul 7, 2015 at 9:02 AM Akihiro Motoki <amot...@gmail.com> wrote: >>> >>>> 2015-07-07 21:39 GMT+09:00 Henry Gessau <ges...@cisco.com>: >>>> >>>>> On Tue, Jul 07, 2015, Paul Michali <p...@michali.net> <p...@michali.net> >>>>> wrote: >>>>> >>>>> Thanks Salvatore for the responses. See @PCM in-line... >>>>> >>>>> >>>>> >>>>> On Tue, Jul 7, 2015 at 6:14 AM Salvatore Orlando <sorla...@nicira.com> >>>>> wrote: >>>>> >>>>>> Some comments inline. >>>>>> >>>>>> Salvatore >>>>>> >>>>>> On 6 July 2015 at 20:00, Paul Michali < <p...@michali.net> >>>>>> p...@michali.net> wrote: >>>>>> >>>>>>> Hi, >>>>>>> >>>>>>> I have some urgent requests about migration that I'm hoping to get >>>>>>> some info on. I'm working on a bug where I need to add two (related) >>>>>>> fields >>>>>>> to a table for VPNaaS. Here's the objectives related to migration... >>>>>>> >>>>>>> 1) create local_v4_ip and lcoal_v6_ip fields in the vpnservice >>>>>>> table >>>>>>> 2) for each entry in the vpnservice table: >>>>>>> 2.1) Get the router.gw_port.fixed_ips list >>>>>>> 2.2) Determine the version of each fixed IP and store the first >>>>>>> of each version (if any) into the appropriate new field. >>>>>>> >>>>>>> I have created a migration file, and I changed the down_revision >>>>>>> to be the number of the revision that is the first in the migration >>>>>>> chain >>>>>>> in the VPN repo. >>>>>>> >>>>>>> Here are the many questions I have... >>>>>>> >>>>>>> When I look in the VPN repo, the HEAD file has the version 'kilo', >>>>>>> which is not the current head. >>>>>>> >>>>>> >>>>>>> Shouldn't it the version number of the first file in the migration >>>>>>> chain? >>>>>>> >>>>>> >>>>>> It should indeed. How are you generating the revision script? >>>>>> Using neutron-db-manage it should be updated automatically [1] >>>>>> >>>>> >>>>> @PCM I ran neutron-db-manage, when in the neutron repo, and it >>>>> assigned some version, but it was not the latest in the neutron-vpnaas >>>>> repo. >>>>> >>>>> neutron-db-manage does not handle alembic branches in separate repos >>>>> very well at all yet. I am working on updating it with >>>>> <https://review.openstack.org/198524> >>>>> https://review.openstack.org/198524 but I have quite a lot left to do. >>>>> >>>> >>>> Yes, at now we have implicit order of running alembic migrations. >>>> First run neutron db migration and then advanced service migrations. >>>> >>>> I do not fully understand how alembic branch mechanism works, but >>>> I think we can have a common ancestor and have multiple branches, >>>> and each branch can evolve independently. >>>> >>>> >>>>> >>>>> I checked the VPN repo and there were a chain of versions, which I >>>>> used to determine what the head should be and have set the version >>>>> accordingly. However, in the current repo, head is set to "kilo", which >>>>> appears to be incorrect. The versions are: >>>>> >>>>> 56893333aa52 >>>>> kilo <<< HEAD >>>>> 3ea02b2a773e >>>>> start_neutron_vpnaas >>>>> None >>>>> >>>>> Ouch. That is an error, because <https://review.openstack.org/190569> >>>>> https://review.openstack.org/190569 should have updated HEAD but >>>>> didn't. >>>>> >>>>> The version sequence (you can see it in any devstack run) is: >>>>> >>>>> INFO [alembic.migration] Running upgrade -> start_neutron_vpnaas, >>>>> start neutron-vpnaas chain >>>>> INFO [alembic.migration] Running upgrade start_neutron_vpnaas -> >>>>> 3ea02b2a773e, add_index_tenant_id >>>>> INFO [alembic.migration] Running upgrade 3ea02b2a773e -> kilo, kilo >>>>> INFO [alembic.migration] Running upgrade kilo -> 56893333aa52, fix >>>>> identifier map fk >>>>> >>>> >>>> It seems we don't have an appropriate check for HEAD revision in at >>>> least VPNaaS repo. >>>> Paul and I just discussed it. We need to improve the check too. >>>> >>>> >>>>> Should I do a separate commit that fixes the HEAD file, or just fix it >>>>> as part of the bug fix I'm working on. >>>>> >>>>> Yes, you should immediately submit a patch to change HEAD to >>>>> 56893333aa52. >>>>> >>>>> >>>>> BTW, at one point, after having correctly set the HEAD and versions >>>>> in my new migration file, I think I ran neutron-db-manage check_migration, >>>>> and I think it set the HEAD to my version, but it did that in the neutron >>>>> repo, and not the VPN repo. I might have been running from the wrong >>>>> repo? >>>>> >>>>> I working on updating the devref docs for this process. Things have >>>>> changed quite a bit with the alembic branches in separate repos. >>>>> >>>>> >>>>> >>>>> >>>>>> For my commit, I'm assuming I change the HEAD file to use my >>>>>>> migration file's version? >>>>>>> >>>>>> >>>>>> You can do that manually too, yes. >>>>>> >>>>>> >>>>>>> >>>>>>> I set HEAD to my migration file, and my file has a down revision >>>>>>> of the previous head's revision. If I run 'neutron-db-manage >>>>>>> --config-file >>>>>>> ../neutron/etc/neutron.conf --config-file >>>>>>> ../neutron/etc/neutron/plugins/ml2/ml2_conf.ini check_migration' there >>>>>>> is >>>>>>> no output so I guess that is OK. >>>>>>> >>>>>>> As I develop my new migration file, is there a way that I can test >>>>>>> it (running neutron-db-migration, maybe)? >>>>>>> >>>>>> >>>>>> When I test migrations I usually dump the database, run the >>>>>> migration with neutron-db-manage upgrade HEAD (I think it's not necessary >>>>>> to specify HEAD), and restore the db from the dump if the migration >>>>>> fails. >>>>>> >>>>>> >>>>>>> Is there a way to run the migration file under the debugger, as >>>>>>> well (importing pdb, for example)? >>>>>>> >>>>>> >>>>>> The migration process is just like any python application, so I >>>>>> guess you can debug it with pdb. >>>>>> >>>>> >>>>> @PCM Ah, so use "neutron-db-manage upgrade HEAD". That was the piece >>>>> that was missing. I take it there are no specific unit tests of the >>>>> migration files? >>>>> >>>>> >>>>> >>>>>> >>>>>>> >>>>>>> In the migration, I can add the columns needed. What's the best >>>>>>> way to fill out those fields - using raw SQL queries or create a Session >>>>>>> object and access the VpnService object's router object? >>>>>>> >>>>>> >>>>>> If the default value for the column is not enough, and you need >>>>>> to specify a value which depends on other values in the same row I would >>>>>> prefer plain SQL statements, but if that become cumbersome I guess it's >>>>>> ok >>>>>> to use sqlalchemy's session. >>>>>> >>>>>> >>>>>>> I see there is some op.bind() call and then engine.execute(), but >>>>>>> could use some help on the best way to extract the needed queries (I >>>>>>> need >>>>>>> to access the vpnservice's router, and then access the (Port) gw_port >>>>>>> relationship, and from that access the (IPAllocation) fixed_ips list). >>>>>>> >>>>>> >>>>>> Perhaps you can point us to the review pages on gerrit, and we >>>>>> can provide detailed comments there. >>>>>> >>>>> >>>>> @PCM Yeah, I haven't pushed it up yet. I have a few more changes to >>>>> make, and should be able to get it up in a few days. The LP bug is >>>>> 1464387. >>>>> >>>>> Essentially, in the vpnservices table, I'm adding an IPv4 and/or >>>>> IPv6 addresses for the "local" end of VPN connections that will be >>>>> established. This is to allow alternative VPN implementation (appliances, >>>>> separate S/W, H/W, VM based VPN, etc) to specify addresses different than >>>>> what is available on the Neutron router. >>>>> >>>>> However, for the reference implementation, we'll use the Neutron >>>>> router's fixed_ips list (as is done today), and to handle the migration, >>>>> I'm thinking the following is needed: >>>>> >>>>> 1) create the new columns. >>>>> 2) Identify the router for that service and obtain it's GW fixed_ips >>>>> list. >>>>> 3) Pick first IPv4 address (if any) and IPv6 address (if any), and >>>>> store in new columns. >>>>> >>>>> So I need to form a query and code to do this. >>>>> >>>>> >>>>> >>>>>> >>>>>>> >>>>>>> Appreciate any advise here on how to debug the migration stuff... >>>>>>> >>>>>>> Paul Michali (pc_m) >>>>>>> >>>>>> >>>>>> [1] >>>>>> http://git.openstack.org/cgit/openstack/neutron/tree/neutron/db/migration/cli.py#n124 >>>>>> >>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>> >>>>> >>>>> __________________________________________________________________________ >>>>> OpenStack Development Mailing List (not for usage questions) >>>>> Unsubscribe: >>>>> openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>>> >>>>> >>>> __________________________________________________________________________ >>>> OpenStack Development Mailing List (not for usage questions) >>>> Unsubscribe: >>>> openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>>> >>> >> __________________________________________________________________________ >> OpenStack Development Mailing List (not for usage questions) >> Unsubscribe: >> openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> >> > __________________________________________________________________________ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >
__________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev