"Data too long for column internal_access_path" for migrated instance with vmware driver

Bug #1900371 reported by Yingji Sun
20
This bug affects 3 people
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Confirmed
Wishlist
Yingji Sun

Bug Description

In vmware environment, if I migration an instance with "--blcok-migration", VM console failed to work after migration.

The nova-mksproxy log below is found.

(1406, u"Data too long for column \'internal_access_path\' at row 1") [SQL: u\'INSERT INTO console_auth_tokens (created_at, updated_at, token_hash, console_type, host, port, internal_access_path, instance_uuid, expires, access_url_base) VALUES (%(created_at)s, %(updated_at)s, %(token_hash)s, %(console_type)s, %(host)s, %(port)s, %(internal_access_path)s, %(instance_uuid)s, %(expires)s, %(access_url_base)s)\'] [parameters: {\'instance_uuid\': u\'8d3773ef-f9f6-42fc-8e22-28de6d208da9\', \'internal_access_path\': u\'{"ticket": "52fe2e83-3ff8-7c9f-00e7-fcb3a3815945", "thumbprint": "41d99c49b0ba5979ac0f7df4751215dfb4dbf250", "cfgFile": "/vmfs/volumes/5f5efac4-cd23 ... (11 characters truncated) ... cfdfee4f7c4/isao-test-after-vacuumd-a1 (8d3773ef-f9f6-42fc-8e22-28de6d208da9)/isao-test-after-vacuumd-a1 (8d3773ef-f9f6-42fc-8e22-28de6d208da9).vmx"}\', \'created_at\': datetime.datetime(2020, 9, 17, 11, 34, 25, 759063), \'expires\': 1600343065, \'updated_at\': None, \'access_url_base\': u\'https://172.22.158.3:6090/vnc_auto.html\', \'port\': 902, \'host\': u\'ctaoym3a-phpv008.cta.kddi.local\', \'token_hash\': \'8467819767db2027878addf1e2421b80eb4a3ba84d40d6072cf1924f229e57a6\', \'console_type\': u\'novnc\'

The root caus is that the vm path is changed due to "block migration".

Originally the vm path is /vmfs/volumes/<datastore-uuid>/<vm-uuid>/<vm-uuid>.vmx. After block migration, the vm path is changed to /vmfs/volumes/<datastore-uuid>/<vm-name> (<vm-uuid>)/<vm-name> (<vm-uuid>).vmx

The path length is increased.

For the vm console, a token is generated and stored temporarily in table console_auth_tokens. The value of column 'internal_access_path' is like below in vmware driver.

'internal_access_path\': u\'{"ticket": "52fe2e83-3ff8-7c9f-00e7-fcb3a3815945", "thumbprint": "41d99c49b0ba5979ac0f7df4751215dfb4dbf250", "cfgFile": "/vmfs/volumes/5f5efac4-cd23 ... (11 characters truncated) ... cfdfee4f7c4/isao-test-after-vacuumd-a1 (8d3773ef-f9f6-42fc-8e22-28de6d208da9)/isao-test-after-vacuumd-a1 (8d3773ef-f9f6-42fc-8e22-28de6d208da9).vmx"}\'

The cfgFile is the vm path returned in a vsphere API AcquireTicket.

Since the cfgFile becomes longer so the internal_access_path exceeds 255 bytes. So we see the error.

As I cannot change vsphere behavior, I would like change the type of internal_access_path for VARCHAR(255) to VARCHAR(400).

Another question for this bug is that there is no xxx_placeholder.py file nova/db/sqlalchemy/migrate_repo/versions for train and 403_placeholder.py is "Add reserved schema migrations for Ussuri", how can I resolve this issue in Train branch?

Tags: vmware
Yingji Sun (yingjisun)
Changed in nova:
assignee: nobody → Yingji Sun (yingjisun)
Changed in nova:
status: New → Confirmed
importance: Undecided → Wishlist
tags: added: vmware
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.