Skip to main content

Migrate A10 specific device configs to nlbaas

Project description

A10 nlbaas2oct

This tool has been designed to migration A10 devices and their associated neutron lbaas objects from the Neutron database to Octavia.

Installation

Install from PyPi

pip install a10-nlbaas2oct

Install from Source

git clone git@github.com:a10networks/a10-nlbaas2oct.git
cd a10-nlbaas2oct
pip install -e .

Note: This tool must be installed on the host running neutron-lbaas

Usage

Step 1: Copy the sample config file from the project to another directory

Installed from PyPi

pip show a10-nlbaas2oct | grep "Location" | cp $(awk '{print $2}')/a10_nlbaas2oct/a10_nlbaas2oct.conf /path/to/another/directory

Installed from source

cp /path/to/a10-nlbaas2oct/a10_nlbaas2oct/a10_nlbaas2oct.conf /path/to/another/directory

Sample Config File Contents

[DEFAULT]

debug = True

[migration]

# Run without making changes
# trial_run = False

# Delete the load balancer records from neutron-lbaas after migration
# delete_after_migration = False

# Octavia service account ID or username (ex: admin)
octavia_account_id =

# Example db connection string:
# connection = mysql+pymysql://root:password@127.0.0.1:3306/octavia
# Replace 127.0.0.1 above with the IP address of the database used by the
# main octavia server. (Leave it as is if the database runs on this host.)

# Connection string for the keystone databas
keystone_db_connection =

# Connection string for the neutron database
neutron_db_connection =

# Connection string for the octavia database
octavia_db_connection =

# Connection string for the A10 database used in neutron lbaas env
# a10_nlbaas_db_connection =

# Connection string for the A10 database used in the octavia env
# a10_oct_connection =

# Path to config file. Default is /etc/a10/config.py
a10_config_path = /etc/a10/config.py

Step 2: Modify the config file

Database connection string locations

The keystone_db_connection can be found in the /etc/keystone/keystone.conf file under the database group.

[database]
connection = mysql+pymysql://root:password@127.0.0.1/keystone?charset=utf8

The neutron_db_connection can be found in the /etc/neutron/neutron.conf file under the database group.

[database]
connection = mysql+pymysql://user:password@127.0.0.1/neutron?charset=utf8

The octavia_db_connection can be found be found in the /etc/octavia/octavia.conffile under the database group.

[database]
connection = mysql+pymysql://root:password@127.0.0.1:3306/octavia

Config for migrating from Neutron LBaaS to Octavia on the same host

# Octavia service account ID or username (ex: admin)
octavia_account_id = admin

# Connection string for the keystone databas
keystone_db_connection = mysql+pymysql://root:password@127.0.0.1/keystone?charset=utf8

# Connection string for the neutron database
neutron_db_connection = mysql+pymysql://user:password@127.0.0.1/neutron?charset=utf8

# Connection string for the octavia database
octavia_db_connection = mysql+pymysql://root:password@127.0.0.1:3306/octavia

# Path to config file. Default is /etc/a10/config.py
a10_config_path = /etc/a10/config.py

Config for migrating from Neutron LBaaS to Octavia across hosts

# Octavia service account ID or username (ex: admin)
octavia_account_id = admin

# Connection string for the keystone databas
keystone_db_connection = mysql+pymysql://root:password@127.0.0.1/keystone?charset=utf8

# Connection string for the neutron database
neutron_db_connection = mysql+pymysql://user:password@127.0.0.1/neutron?charset=utf8

# Connection string for the octavia database
octavia_db_connection = mysql+pymysql://root:password@ip_address_of_remote_host:3306/octavia

# Path to config file. Default is /etc/a10/config.py
a10_config_path = /etc/a10/config.py

Performing cross host migration when A10 database is seperate from Neutron DB and Octavia DB

# Octavia service account ID or username (ex: admin)
octavia_account_id = admin

# Connection string for the keystone databas
keystone_db_connection = mysql+pymysql://root:password@127.0.0.1/keystone?charset=utf8

# Connection string for the neutron database
neutron_db_connection = mysql+pymysql://user:password@127.0.0.1/neutron?charset=utf8

# Connection string for the octavia database
octavia_db_connection = mysql+pymysql://root:password@ip_address_of_remote_host:3306/octavia

# Path to config file. Default is /etc/a10/config.py
a10_config_path = /etc/a10/config.py

# Connection string for the A10 database used in neutron lbaas env
a10_nlbaas_db_connection = mysql+pymysql://user:password@127.0.0.1/a10_db

# Connection string for the A10 database used in the octavia env
a10_oct_connection = mysql+pymysql://user:password@ip_address_of_remote_host/a10_db

Performing migration when using parent projects

# Octavia service account ID or username (ex: admin)
octavia_account_id = admin

# Connection string for the keystone database
keystone_db_connection = mysql+pymysql://user:password@127.0.0.1/keystone?charset=utf8

# Connection string for the neutron database
neutron_db_connection = mysql+pymysql://user:password@127.0.0.1/neutron?charset=utf8

# Connection string for the octavia database
octavia_db_connection = mysql+pymysql://root:password@127.0.0.1:3306/octavia

# Path to config file. Default is /etc/a10/config.py
a10_config_path = /etc/a10/config.py

Step 3: Perform the migration

Migrate a single loadbalancer and its child objects

a10_nlbaas2oct --config-file /path/to/a10_nlbaas2oct.conf --lb-id <loadbalancer_id>

Note: This takes in the UUID of the loadbalancer not the name

Migrate all lbaas objects in a project

a10_nlbaas2oct --config-file /path/to/a10_nlbaas2oct.conf --project-id <project_id>

Note: This takes in the UUID of the project not the name

Migrate all lbaas objects

a10_nlbaas2oct --config-file /path/to/a10_nlbaas2oct.conf --all

Step 4*: Cleanup post migration

There is a foreign key association with the VIP Port in the Neutron port table and the VIP entries in the Neutron lbaas_loadbalancer table. When performing a migration from Neutron LBaaS to Octavia, the VIPs are migrated to their own table and VIP port ownership is transferred to Octavia.

However, that foreign key relationship between VIP and VIP Port will still exist in the Neutron lbaas_loadbalancer table and the port table. Therefore, a delete action on either the load balancer in the Neutron LBaaS table or the Octavia will result in a failure due to the deadlocked foreign key state. As such, it is required that the Neutron LBaaS database entries are deleted or otherwise made inaccessible before performing delete commands via Octavia.

a10_nlbaas2oct --config-file /path/to/a10_nlbaas2oct.conf [--lb-id <lb_id> | --all | --project-id <project_id>]  --cleanup

*This step is only necessary if the delete_after_migration was not set to True in the config.

Note to Reader

The vast majority of this tooling was copied and modified from openstack's neutron-lbaas repo for ease of use purposes. The original can be found here https://github.com/openstack/neutron-lbaas/tree/stable/stein/tools/nlbaas2octavia

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

a10_nlbaas2oct-1.3.0.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

a10_nlbaas2oct-1.3.0-py2-none-any.whl (26.7 kB view details)

Uploaded Python 2

File details

Details for the file a10_nlbaas2oct-1.3.0.tar.gz.

File metadata

  • Download URL: a10_nlbaas2oct-1.3.0.tar.gz
  • Upload date:
  • Size: 22.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.1 requests/2.21.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/2.7.17

File hashes

Hashes for a10_nlbaas2oct-1.3.0.tar.gz
Algorithm Hash digest
SHA256 89a26cff8aedd60ac49522c3abbadd05d9ff05e7b5604e686f71c0b2114c554c
MD5 c2fe4ebca898342bdf3bc02344a1c97b
BLAKE2b-256 045bc04b631d538a202ad4d8023a5a60162471bc1df7813b3e8d387f62a62b03

See more details on using hashes here.

File details

Details for the file a10_nlbaas2oct-1.3.0-py2-none-any.whl.

File metadata

  • Download URL: a10_nlbaas2oct-1.3.0-py2-none-any.whl
  • Upload date:
  • Size: 26.7 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.7.1 requests/2.21.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/2.7.17

File hashes

Hashes for a10_nlbaas2oct-1.3.0-py2-none-any.whl
Algorithm Hash digest
SHA256 6e3b2f70c0e0c362c6a857d00ff3c6a2e7ac6b584f0f19ec3db29eb53ca77e1d
MD5 8dca736bbba8ed80028ca4b7ee7eb6e2
BLAKE2b-256 39b9c018077c327ed4b7fc68a07235f52753fa42126bae3b52e1d24d30cac735

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page