summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--devstack/files/debs/trove1
-rw-r--r--devstack/files/rpms/trove1
-rw-r--r--devstack/plugin.sh19
-rw-r--r--devstack/settings19
-rw-r--r--doc/source/user/backup-db.rst264
-rw-r--r--releasenotes/source/2023.1.rst6
-rw-r--r--releasenotes/source/index.rst1
-rw-r--r--releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po8
-rw-r--r--releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po92
-rw-r--r--releasenotes/source/locale/ja/LC_MESSAGES/releasenotes.po36
-rw-r--r--requirements.txt2
-rw-r--r--tox.ini4
-rw-r--r--trove/common/cfg.py3
-rw-r--r--trove/guestagent/datastore/mysql_common/service.py6
-rw-r--r--trove/rpc.py7
-rw-r--r--zuul.d/jobs.yaml13
-rw-r--r--zuul.d/projects.yaml3
17 files changed, 347 insertions, 138 deletions
diff --git a/devstack/files/debs/trove b/devstack/files/debs/trove
index 09dcee81..43ab3559 100644
--- a/devstack/files/debs/trove
+++ b/devstack/files/debs/trove
@@ -1 +1,2 @@
libxslt1-dev # testonly
+docker.io
diff --git a/devstack/files/rpms/trove b/devstack/files/rpms/trove
index c5cbdea0..04ae7840 100644
--- a/devstack/files/rpms/trove
+++ b/devstack/files/rpms/trove
@@ -1 +1,2 @@
libxslt-devel # testonly
+docker \ No newline at end of file
diff --git a/devstack/plugin.sh b/devstack/plugin.sh
index cbcc56f6..cd3fa562 100644
--- a/devstack/plugin.sh
+++ b/devstack/plugin.sh
@@ -274,6 +274,8 @@ function configure_trove {
iniset $TROVE_GUESTAGENT_CONF mysql docker_image ${TROVE_DATABASE_IMAGE_MYSQL}
iniset $TROVE_GUESTAGENT_CONF mysql backup_docker_image ${TROVE_DATABASE_BACKUP_IMAGE_MYSQL}
+ iniset $TROVE_GUESTAGENT_CONF mariadb docker_image ${TROVE_DATABASE_IMAGE_MARIADB}
+ iniset $TROVE_GUESTAGENT_CONF mariadb backup_docker_image ${TROVE_DATABASE_BACKUP_IMAGE_MARIADB}
iniset $TROVE_GUESTAGENT_CONF postgresql docker_image ${TROVE_DATABASE_IMAGE_POSTGRES}
iniset $TROVE_GUESTAGENT_CONF postgresql backup_docker_image ${TROVE_DATABASE_BACKUP_IMAGE_POSTGRES}
@@ -501,6 +503,20 @@ function create_guest_image {
fi
}
+function create_registry_container {
+ # running a docker registry container
+ echo "Running a docker registry container..."
+ container=$(sudo docker ps -a --format "{{.Names}}" --filter name=registry)
+ if [ -z $container ]; then
+ sudo docker run -d --net=host -e REGISTRY_HTTP_ADDR=0.0.0.0:4000 --restart=always -v /opt/trove_registry/:/var/lib/registry --name registry registry:2
+ trove_agent_datastore_url=https://tarballs.opendev.org/openstack/trove/images/trove-datastore-registry-master.tar.gz
+ curl -o trove-datastore-registry-master.tar.gz $trove_agent_datastore_url
+ sudo tar -zxvf trove-datastore-registry-master.tar.gz -C /opt/trove_registry/
+ rm -rf trove-datastore-registry-master.tar.gz
+ fi
+ iniset $TROVE_CONF DEFAULT docker_insecure_registries "$TROVE_HOST_GATEWAY:4000"
+}
+
# Set up Trove management network and make configuration change.
function config_trove_network {
echo "Finalizing Neutron networking for Trove"
@@ -639,6 +655,9 @@ if is_service_enabled trove; then
config_mgmt_security_group
config_trove_network
create_guest_image
+ if [ "$TROVE_ENABLE_LOCAL_REGISTRY" == "True" ] ; then
+ create_registry_container
+ fi
echo_summary "Starting Trove"
start_trove
diff --git a/devstack/settings b/devstack/settings
index 7395a463..f2580b7a 100644
--- a/devstack/settings
+++ b/devstack/settings
@@ -5,6 +5,8 @@
TROVE_DIR=${TROVE_DIR:-${DEST}/trove}
TROVE_REPO=${TROVE_REPO:-${GIT_BASE}/openstack/trove.git}
TROVE_BRANCH=${TROVE_BRANCH:-master}
+# Default is set to False
+TROVE_ENABLE_LOCAL_REGISTRY=${TROVE_ENABLE_LOCAL_REGISTRY:-False}
TROVE_CLIENT_DIR=${TROVE_CLIENT_DIR:-${TROVECLIENT_DIR:-${DEST}/python-troveclient}}
TROVE_CLIENT_REPO=${TROVE_CLIENT_REPO:-${TROVECLIENT_REPO:-${GIT_BASE}/openstack/python-troveclient.git}}
@@ -87,7 +89,16 @@ TROVE_ENABLE_IMAGE_BUILD=${TROVE_ENABLE_IMAGE_BUILD:-"true"}
TROVE_NON_DEV_IMAGE_URL=${TROVE_NON_DEV_IMAGE_URL:-""}
# Customized database container images
-TROVE_DATABASE_IMAGE_MYSQL=${TROVE_DATABASE_IMAGE_MYSQL:-"catalystcloud/mysql"}
-TROVE_DATABASE_IMAGE_POSTGRES=${TROVE_DATABASE_IMAGE_POSTGRES:-"catalystcloud/postgres"}
-TROVE_DATABASE_BACKUP_IMAGE_MYSQL=${TROVE_DATABASE_BACKUP_IMAGE_MYSQL:-"catalystcloud/db-backup-mysql:1.1.0"}
-TROVE_DATABASE_BACKUP_IMAGE_POSTGRES=${TROVE_DATABASE_BACKUP_IMAGE_POSTGRES:-"catalystcloud/db-backup-postgresql:1.1.2"}
+if [ "$TROVE_ENABLE_LOCAL_REGISTRY" == "True" ] ; then
+ TROVE_DATABASE_IMAGE_MYSQL=${TROVE_DATABASE_IMAGE_MYSQL:-"$TROVE_HOST_GATEWAY:4000/trove-datastores/mysql"}
+ TROVE_DATABASE_IMAGE_MARIADB=${TROVE_DATABASE_IMAGE_MARIAD:-"$TROVE_HOST_GATEWAY:4000/trove-datastores/mariadb"}
+ TROVE_DATABASE_IMAGE_POSTGRES=${TROVE_DATABASE_IMAGE_POSTGRES:-"$TROVE_HOST_GATEWAY:4000/trove-datastores/postgres"}
+ TROVE_DATABASE_BACKUP_IMAGE_MYSQL=${TROVE_DATABASE_BACKUP_IMAGE_MYSQL:-"$TROVE_HOST_GATEWAY:4000/trove-datastores/db-backup-mysql:1.1.0"}
+ TROVE_DATABASE_BACKUP_IMAGE_MARIADB=${TROVE_DATABASE_BACKUP_IMAGE_MARIADB:-"$TROVE_HOST_GATEWAY:4000/trove-datastores/db-backup-mariadb:1.1.0"}
+ TROVE_DATABASE_BACKUP_IMAGE_POSTGRES=${TROVE_DATABASE_BACKUP_IMAGE_POSTGRES:-"$TROVE_HOST_GATEWAY:4000/trove-datastores/db-backup-postgresql:1.1.2"}
+else
+ TROVE_DATABASE_IMAGE_MYSQL=${TROVE_DATABASE_IMAGE_MYSQL:-"catalystcloud/mysql"}
+ TROVE_DATABASE_IMAGE_POSTGRES=${TROVE_DATABASE_IMAGE_POSTGRES:-"catalystcloud/postgres"}
+ TROVE_DATABASE_BACKUP_IMAGE_MYSQL=${TROVE_DATABASE_BACKUP_IMAGE_MYSQL:-"catalystcloud/db-backup-mysql:1.1.0"}
+ TROVE_DATABASE_BACKUP_IMAGE_POSTGRES=${TROVE_DATABASE_BACKUP_IMAGE_POSTGRES:-"catalystcloud/db-backup-postgresql:1.1.2"}
+fi \ No newline at end of file
diff --git a/doc/source/user/backup-db.rst b/doc/source/user/backup-db.rst
index d8450b04..ce7675f6 100644
--- a/doc/source/user/backup-db.rst
+++ b/doc/source/user/backup-db.rst
@@ -36,48 +36,52 @@ instance from the backup.
.. code-block:: console
$ openstack database instance list
- +--------------------------------------+--------+-----------+-------------------+--------+-----------+------+
- | id | name | datastore | datastore_version | status | flavor_id | size |
- +--------------------------------------+--------+-----------+-------------------+--------+-----------+------+
- | 97b4b853-80f6-414f-ba6f-c6f455a79ae6 | guest1 | mysql | mysql-5.5 | ACTIVE | 10 | 2 |
- +--------------------------------------+--------+-----------+-------------------+--------+-----------+------+
+ +--------------------------------------+--------+-----------+-------------------+--------+------------------+--------+-------------------------------------------------------------------------------------------------+-----------+------+------+
+ | ID | Name | Datastore | Datastore Version | Status | Operating Status | Public | Addresses | Flavor ID | Size | Role |
+ +--------------------------------------+--------+-----------+-------------------+--------+------------------+--------+-------------------------------------------------------------------------------------------------+-----------+------+------+
+ | 78e338e3-d1c4-4189-8ea7-bfc1fab5011f | mysql1 | mysql | 8.0.29 | ACTIVE | HEALTHY | False | [{'address': '10.0.0.9', 'type': 'private', 'network': '33f3a589-b806-4212-9a59-8e058cac0699'}] | d2 | 1 | |
+ +--------------------------------------+--------+-----------+-------------------+--------+------------------+--------+-------------------------------------------------------------------------------------------------+-----------+------+------+
2. Optionally, create a backup strategy for the instance. You can also specify a different swift container name (``--swift-container``) when creating the backup.
.. code-block:: console
- $ openstack database backup strategy create --instance-id 97b4b853-80f6-414f-ba6f-c6f455a79ae6 --swift-container my-trove-backups
+ $ openstack database backup strategy create --instance-id 78e338e3-d1c4-4189-8ea7-bfc1fab5011f --swift-container my-trove-backups
+-----------------+--------------------------------------+
| Field | Value |
+-----------------+--------------------------------------+
| backend | swift |
- | instance_id | 97b4b853-80f6-414f-ba6f-c6f455a79ae6 |
- | project_id | 922b47766bcb448f83a760358337f2b4 |
+ | instance_id | 78e338e3-d1c4-4189-8ea7-bfc1fab5011f |
+ | project_id | fc51186c63df417ea63cec6c65a2d564 |
| swift_container | my-trove-backups |
+-----------------+--------------------------------------+
#. **Backup the database instance**
Back up the database instance by using the :command:`openstack database backup create`
- command. In this example, the backup is called ``backup1``.
+ command. In this example, the backup is called ``mysql-backup-name1``.
.. code-block:: console
- $ openstack database backup create 97b4b853-80f6-414f-ba6f-c6f455a79ae6 backup1
- +-------------+--------------------------------------+
- | Property | Value |
- +-------------+--------------------------------------+
- | created | 2014-03-18T17:09:07 |
- | description | None |
- | id | 8af30763-61fd-4aab-8fe8-57d528911138 |
- | instance_id | 97b4b853-80f6-414f-ba6f-c6f455a79ae6 |
- | locationRef | None |
- | name | backup1 |
- | parent_id | None |
- | size | None |
- | status | NEW |
- | updated | 2014-03-18T17:09:07 |
- +-------------+--------------------------------------+
+ $ openstack database backup create mysql-backup-name1 --instance mysql1 --swift-container 'my-trove-backups'
+ +----------------------+--------------------------------------+
+ | Field | Value |
+ +----------------------+--------------------------------------+
+ | created | 2022-10-24T01:46:38 |
+ | datastore | mysql |
+ | datastore_version | 8.0.29 |
+ | datastore_version_id | 324f2bdf-6099-4754-a5f9-82abee026a19 |
+ | description | None |
+ | id | 1ecd0a75-e4aa-400b-b0c8-cb738944fd43 |
+ | instance_id | 78e338e3-d1c4-4189-8ea7-bfc1fab5011f |
+ | locationRef | None |
+ | name | mysql-backup-name1 |
+ | parent_id | None |
+ | project_id | fc51186c63df417ea63cec6c65a2d564 |
+ | size | None |
+ | status | NEW |
+ | updated | 2022-10-24T01:46:38 |
+ +----------------------+--------------------------------------+
Later on, use either :command:`openstack database backup list` command or
:command:`openstack database backup show` command to check the backup
@@ -86,26 +90,30 @@ instance from the backup.
.. code-block:: console
$ openstack database backup list
- +--------------------------------------+--------------------------------------+---------+-----------+-----------+---------------------+
- | id | instance_id | name | status | parent_id | updated |
- +--------------------------------------+--------------------------------------+---------+-----------+-----------+---------------------+
- | 8af30763-61fd-4aab-8fe8-57d528911138 | 97b4b853-80f6-414f-ba6f-c6f455a79ae6 | backup1 | COMPLETED | None | 2014-03-18T17:09:11 |
- +--------------------------------------+--------------------------------------+---------+-----------+-----------+---------------------+
- $ openstack database backup show 8af30763-61fd-4aab-8fe8-57d528911138
- +-------------+----------------------------------------------------+
- | Property | Value |
- +-------------+----------------------------------------------------+
- | created | 2014-03-18T17:09:07 |
- | description | None |
- | id | 8af...138 |
- | instance_id | 97b...ae6 |
- | locationRef | http://10.0.0.1:.../.../8af...138.xbstream.gz.enc |
- | name | backup1 |
- | parent_id | None |
- | size | 0.17 |
- | status | COMPLETED |
- | updated | 2014-03-18T17:09:11 |
- +-------------+----------------------------------------------------+
+ +--------------------------------------+--------------------------------------+------------------------------+-----------+--------------------------------------+---------------------+----------------------------------+
+ | ID | Instance ID | Name | Status | Parent ID | Updated | Project ID |
+ +--------------------------------------+--------------------------------------+------------------------------+-----------+--------------------------------------+---------------------+----------------------------------+
+ | 1ecd0a75-e4aa-400b-b0c8-cb738944fd43 | 78e338e3-d1c4-4189-8ea7-bfc1fab5011f | mysql-backup-name1 | COMPLETED | None | 2022-10-24T01:46:55 | fc51186c63df417ea63cec6c65a2d564 |
+ +--------------------------------------+--------------------------------------+------------------------------+-----------+--------------------------------------+---------------------+----------------------------------+
+ $ openstack database backup show 1ecd0a75-e4aa-400b-b0c8-cb738944fd43
+ +----------------------+---------------------------------------------------------------------------------+
+ | Field | Value |
+ +----------------------+---------------------------------------------------------------------------------+
+ | created | 2022-10-24T01:46:38 |
+ | datastore | mysql |
+ | datastore_version | 8.0.29 |
+ | datastore_version_id | 324f2bdf-6099-4754-a5f9-82abee026a19 |
+ | description | None |
+ | id | 1ecd0a75-e4aa-400b-b0c8-cb738944fd43 |
+ | instance_id | 78e338e3-d1c4-4189-8ea7-bfc1fab5011f |
+ | locationRef | http://172.../my-trove-backups/1ecd0a75-e4aa-400b-b0c8-cb738944fd43.xbstream.gz |
+ | name | mysql-backup-name1 |
+ | parent_id | None |
+ | project_id | fc51186c63df417ea63cec6c65a2d564 |
+ | size | 0.19 |
+ | status | COMPLETED |
+ | updated | 2022-10-24T01:46:55 |
+ +----------------------+---------------------------------------------------------------------------------+
#. **Check the backup data in Swift**
@@ -123,84 +131,105 @@ instance from the backup.
+--------------------------------------------------+
| Name |
+--------------------------------------------------+
- | 8af30763-61fd-4aab-8fe8-57d528911138.xbstream.gz |
+ | 1ecd0a75-e4aa-400b-b0c8-cb738944fd43.xbstream.gz |
+--------------------------------------------------+
#. **Restore a database instance**
- Now assume that the ``guest1`` database instance is damaged and you
+ Now assume that the ``mysql1`` database instance is damaged and you
need to restore it. In this example, you use the :command:`openstack database instance create`
- command to create a new database instance called ``guest2``.
+ command to create a new database instance called ``mysql2``.
- - Specify that the new ``guest2`` instance has the same flavor
- (``10``) and the same root volume size (``2``) as the original
- ``guest1`` instance.
+ - Specify that the new ``mysql2`` instance has the same flavor
+ (``d2``) and the same root volume size (``1``) as the original
+ ``mysql1`` instance.
- Use the ``--backup`` argument to indicate that this new
instance is based on the backup artifact identified by
- ``BACKUP_ID``. In this example, replace ``BACKUP_ID`` with
- ``8af30763-61fd-4aab-8fe8-57d528911138``.
+ the ID of ``mysql-backup-name1``.
.. code-block:: console
- $ openstack database instance create guest2 --flavor 10 --size 2 --nic net-id=$network_id --backup BACKUP_ID
- +-------------------+----------------------------------------------+
- | Property | Value |
- +-------------------+----------------------------------------------+
- | created | 2014-03-18T17:12:03 |
- | datastore | {u'version': u'mysql-5.5', u'type': u'mysql'}|
- |datastore_version | mysql-5.5 |
- | flavor | {u'id': u'10', u'links': [{u'href': ...]} |
- | id | ac7a2b35-a9b4-4ff6-beac-a1bcee86d04b |
- | name | guest2 |
- | status | BUILD |
- | updated | 2014-03-18T17:12:03 |
- | volume | {u'size': 2} |
- +-------------------+----------------------------------------------+
+ $ openstack database instance create mysql2 --flavor d2 --nic net-id=$network_id
+ --datastore mysql --datastore-version 8.0.29 --datastore-version-number 8.0.29 --size 1 \
+ --backup $(openstack database backup show mysql-backup-name1 -f value -c id)
+ +--------------------------+--------------------------------------+
+ | Field | Value |
+ +--------------------------+--------------------------------------+
+ | allowed_cidrs | [] |
+ | created | 2022-10-24T01:56:55 |
+ | datastore | mysql |
+ | datastore_version | 8.0.29 |
+ | datastore_version_number | 8.0.29 |
+ | encrypted_rpc_messaging | True |
+ | flavor | d2 |
+ | id | 62f0f152-8cd5-42b3-9cd6-91bda651a4c0 |
+ | name | mysql2 |
+ | operating_status | |
+ | public | False |
+ | region | RegionOne |
+ | server_id | None |
+ | service_status_updated | 2022-10-24T01:56:55 |
+ | status | BUILD |
+ | tenant_id | fc51186c63df417ea63cec6c65a2d564 |
+ | updated | 2022-10-24T01:56:55 |
+ | volume | 1 |
+ | volume_id | None |
+ +--------------------------+--------------------------------------+
#. **Verify backup**
- Now check that the new ``guest2`` instance has the same
- characteristics as the original ``guest1`` instance.
+ Now check that the new ``mysql2`` instance has the same
+ characteristics as the original ``mysql1`` instance.
- Start by getting the ID of the new ``guest2`` instance.
+ Start by getting the ID of the new ``mysql2`` instance.
.. code-block:: console
$ openstack database instance list
-
- +-----------+--------+-----------+-------------------+--------+-----------+------+
- | id | name | datastore | datastore_version | status | flavor_id | size |
- +-----------+--------+-----------+-------------------+--------+-----------+------+
- | 97b...ae6 | guest1 | mysql | mysql-5.5 | ACTIVE | 10 | 2 |
- | ac7...04b | guest2 | mysql | mysql-5.5 | ACTIVE | 10 | 2 |
- +-----------+--------+-----------+-------------------+--------+-----------+------+
+ +--------------------------------------+--------+-----------+-------------------+--------+------------------+--------+--------------------------------------------------------------------------------------------------+-----------+------+------+
+ | ID | Name | Datastore | Datastore Version | Status | Operating Status | Public | Addresses | Flavor ID | Size | Role |
+ +--------------------------------------+--------+-----------+-------------------+--------+------------------+--------+--------------------------------------------------------------------------------------------------+-----------+------+------+
+ | 6eef378d-1d9c-4e48-b206-b3db130d750d | mysql2 | mysql | 8.0.29 | ACTIVE | HEALTHY | False | [{'address': '10.0.0.8', 'type': 'private', 'network': '33f3a589-b806-4212-9a59-8e058cac0699'}] | d2 | 1 | |
+ | 78e338e3-d1c4-4189-8ea7-bfc1fab5011f | mysql1 | mysql | 8.0.29 | ACTIVE | HEALTHY | False | [{'address': '10.0.0.18', 'type': 'private', 'network': '33f3a589-b806-4212-9a59-8e058cac0699'}] | d2 | 1 | |
+ +--------------------------------------+--------+-----------+-------------------+--------+------------------+--------+--------------------------------------------------------------------------------------------------+-----------+------+------+
Use the :command:`openstack database instance show` command to display information about the new
- guest2 instance. Pass in guest2's ``INSTANCE_ID``, which is
- ``ac7a2b35-a9b4-4ff6-beac-a1bcee86d04b``.
+ mysql2 instance. Pass in mysql2's ``INSTANCE_ID``, which is
+ ``6eef378d-1d9c-4e48-b206-b3db130d750d``.
.. code-block:: console
- $ openstack database instance show INSTANCE_ID
- +-------------------+--------------------------------------+
- | Property | Value |
- +-------------------+--------------------------------------+
- | created | 2014-03-18T17:12:03 |
- | datastore | mysql |
- | datastore_version | mysql-5.5 |
- | flavor | 10 |
- | id | ac7a2b35-a9b4-4ff6-beac-a1bcee86d04b |
- | ip | 10.0.0.3 |
- | name | guest2 |
- | status | ACTIVE |
- | updated | 2014-03-18T17:12:06 |
- | volume | 2 |
- | volume_used | 0.18 |
- +-------------------+--------------------------------------+
+ $ openstack database instance show mysql2
+ +--------------------------+-------------------------------------------------------------------------------------------------+
+ | Field | Value |
+ +--------------------------+-------------------------------------------------------------------------------------------------+
+ | addresses | [{'address': '10.0.0.8', 'type': 'private', 'network': '33f3a589-b806-4212-9a59-8e058cac0699'}] |
+ | allowed_cidrs | [] |
+ | created | 2022-10-24T01:58:51 |
+ | datastore | mysql |
+ | datastore_version | 8.0.29 |
+ | datastore_version_number | 8.0.29 |
+ | encrypted_rpc_messaging | True |
+ | flavor | d2 |
+ | id | 6eef378d-1d9c-4e48-b206-b3db130d750d |
+ | ip | 10.0.0.8 |
+ | name | mysql2 |
+ | operating_status | HEALTHY |
+ | public | False |
+ | region | RegionOne |
+ | server_id | 7a8cd089-bd1c-4230-aedd-ced4e945ad46 |
+ | service_status_updated | 2022-10-24T02:12:35 |
+ | status | ACTIVE |
+ | tenant_id | fc51186c63df417ea63cec6c65a2d564 |
+ | updated | 2022-10-24T02:05:03 |
+ | volume | 1 |
+ | volume_id | 7080954f-e22f-4442-8f40-e26aaa080c9d |
+ | volume_used | 0.19 |
+ +--------------------------+-------------------------------------------------------------------------------------------------+
Note that the data store, flavor ID, and volume size have the same
- values as in the original ``guest1`` instance.
+ values as in the original ``mysql1`` instance.
Use the :command:`openstack database db list` command to check that the original
databases (``db1`` and ``db2``) are present on the restored instance.
@@ -231,15 +260,15 @@ instance from the backup.
#. **Notify users**
- Tell the users who were accessing the now-disabled ``guest1``
- database instance that they can now access ``guest2``. Provide them
- with ``guest2``'s name, IP address, and any other information they
+ Tell the users who were accessing the now-disabled ``mysql1``
+ database instance that they can now access ``mysql2``. Provide them
+ with ``mysql2``'s name, IP address, and any other information they
might need. (You can get this information by using the
:command:`openstack database instance show` command.)
#. **Clean up**
- At this point, you might want to delete the disabled ``guest1``
+ At this point, you might want to delete the disabled ``mysql1``
instance, by using the :command:`openstack database instance delete` command.
.. code-block:: console
@@ -261,21 +290,26 @@ Create an incremental backup based on a parent backup:
.. code-block:: console
- $ openstack database backup create INSTANCE_ID backup1.1 --parent BACKUP_ID
- +-------------+--------------------------------------+
- | Property | Value |
- +-------------+--------------------------------------+
- | created | 2014-03-19T14:09:13 |
- | description | None |
- | id | 1d474981-a006-4f62-b25f-43d7b8a7097e |
- | instance_id | 792a6a56-278f-4a01-9997-d997fa126370 |
- | locationRef | None |
- | name | backup1.1 |
- | parent_id | 6dc3a9b7-1f3e-4954-8582-3f2e4942cddd |
- | size | None |
- | status | NEW |
- | updated | 2014-03-19T14:09:13 |
- +-------------+--------------------------------------+
+ $ openstack database backup create mysql-backup-name1.1 --instance mysql1 --swift-container 'my-trove-backups' \
+ --parent $(openstack database backup show mysql-backup-name1 -f value -c id)
+ +----------------------+--------------------------------------+
+ | Field | Value |
+ +----------------------+--------------------------------------+
+ | created | 2022-10-24T02:38:41 |
+ | datastore | mysql |
+ | datastore_version | 8.0.29 |
+ | datastore_version_id | 324f2bdf-6099-4754-a5f9-82abee026a19 |
+ | description | None |
+ | id | e15ae06a-3afb-4794-8890-7059317b2218 |
+ | instance_id | 78e338e3-d1c4-4189-8ea7-bfc1fab5011f |
+ | locationRef | None |
+ | name | mysql-backup-name1.1 |
+ | parent_id | 1ecd0a75-e4aa-400b-b0c8-cb738944fd43 |
+ | project_id | fc51186c63df417ea63cec6c65a2d564 |
+ | size | None |
+ | status | NEW |
+ | updated | 2022-10-24T02:38:41 |
+ +----------------------+--------------------------------------+
Restore backup from other regions
---------------------------------
@@ -354,4 +388,4 @@ One possible reason could be it has been a long time since the parent backup was
In this case, you have to create full backup instead.
-To avoid this issue in the future, you can set up a cron job to create (incremental) backups regularly. \ No newline at end of file
+To avoid this issue in the future, you can set up a cron job to create (incremental) backups regularly.
diff --git a/releasenotes/source/2023.1.rst b/releasenotes/source/2023.1.rst
new file mode 100644
index 00000000..d1238479
--- /dev/null
+++ b/releasenotes/source/2023.1.rst
@@ -0,0 +1,6 @@
+===========================
+2023.1 Series Release Notes
+===========================
+
+.. release-notes::
+ :branch: stable/2023.1
diff --git a/releasenotes/source/index.rst b/releasenotes/source/index.rst
index 7dbe6f45..0440dfde 100644
--- a/releasenotes/source/index.rst
+++ b/releasenotes/source/index.rst
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ 2023.1
zed
yoga
xena
diff --git a/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po b/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
index 257f1c70..9ce93c76 100644
--- a/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
+++ b/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
@@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: trove\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-11-21 16:21+0000\n"
+"POT-Creation-Date: 2023-03-06 11:31+0000\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -30,6 +30,9 @@ msgstr "13.0.0"
msgid "14.0.0"
msgstr "14.0.0"
+msgid "14.0.0.0rc1"
+msgstr "14.0.0.0rc1"
+
msgid "14.1.0"
msgstr "14.1.0"
@@ -42,9 +45,6 @@ msgstr "15.0.0-13"
msgid "16.0.0"
msgstr "16.0.0"
-msgid "16.0.0-6"
-msgstr "16.0.0-6"
-
msgid "17.0.0-5"
msgstr "17.0.0-5"
diff --git a/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po b/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po
new file mode 100644
index 00000000..37c5bc20
--- /dev/null
+++ b/releasenotes/source/locale/fr/LC_MESSAGES/releasenotes.po
@@ -0,0 +1,92 @@
+# Corinne Verheyde <cverheyd@gmail.com>, 2016. #zanata
+# Gérald LONLAS <g.lonlas@gmail.com>, 2016. #zanata
+msgid ""
+msgstr ""
+"Project-Id-Version: trove\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-03-08 06:16+0000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"PO-Revision-Date: 2016-10-22 06:43+0000\n"
+"Last-Translator: Gérald LONLAS <g.lonlas@gmail.com>\n"
+"Language-Team: French\n"
+"Language: fr\n"
+"X-Generator: Zanata 4.3.3\n"
+"Plural-Forms: nplurals=2; plural=(n > 1)\n"
+
+msgid "5.0.0"
+msgstr "5.0.0"
+
+msgid "5.0.1"
+msgstr "5.0.1"
+
+msgid "5.1.0"
+msgstr "5.1.0"
+
+msgid "5.1.1"
+msgstr "5.1.1"
+
+msgid "6.0.0"
+msgstr "6.0.0"
+
+msgid "6.0.0.0b2"
+msgstr "6.0.0.0b2"
+
+msgid "6.0.0.0b3"
+msgstr "6.0.0.0b3"
+
+msgid "6.0.0.0rc1"
+msgstr "6.0.0.0rc1"
+
+msgid ""
+"A locality flag was added to the trove ReST API to allow a user to specify "
+"whether new replicas should be on the same hypervisor (affinity) or on "
+"different hypervisors (anti-affinity)."
+msgstr ""
+"Ajout d'un flag de localisation aux API ReST trove pour permettre à "
+"l'utilisateur de spécifier si les nouveaux replicas doivent être sur le même "
+"hyperviseur (affinité) ou sur des hyperviseurs différents (ante-affinité)."
+
+msgid "An invalid module driver is now logged correctly. Bug 1579900"
+msgstr ""
+"Un driver de module invalide est maintenant logué correctement. Bug 1579900"
+
+msgid "Bug Fixes"
+msgstr "Résolutions de Bugs"
+
+msgid "Current Series Release Notes"
+msgstr "Note de la release actuelle"
+
+msgid "Deprecation Notes"
+msgstr "Notes dépréciées "
+
+msgid "Dropping support for python 2.6"
+msgstr "Suppression du support de python 2.6"
+
+msgid ""
+"Fixes an issue with a failure to establish a new replica for MySQL in some "
+"cases where a replica already exists and some data has been inserted into "
+"the master. Bug 1563574"
+msgstr ""
+"Résout un problème d'échec de mise en place d'un nouveau replica pour MySQL "
+"dans certains cas où un replica existe déjà et des données ont été insérées "
+"sur le master. Bug 1563574"
+
+msgid "Mitaka Series Release Notes"
+msgstr "Note de release pour Mitaka"
+
+msgid "New Features"
+msgstr "Nouvelles fonctionnalités"
+
+msgid "Newton Series Release Notes"
+msgstr "Note de release pour Newton"
+
+msgid "Other Notes"
+msgstr "Autres notes"
+
+msgid "Security Issues"
+msgstr "Problèmes de sécurités"
+
+msgid "Trove Release Notes"
+msgstr "Note de release pour Trove"
diff --git a/releasenotes/source/locale/ja/LC_MESSAGES/releasenotes.po b/releasenotes/source/locale/ja/LC_MESSAGES/releasenotes.po
new file mode 100644
index 00000000..1abb5a3a
--- /dev/null
+++ b/releasenotes/source/locale/ja/LC_MESSAGES/releasenotes.po
@@ -0,0 +1,36 @@
+# Akihiro Motoki <amotoki@gmail.com>, 2016. #zanata
+msgid ""
+msgstr ""
+"Project-Id-Version: trove\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2023-03-08 06:16+0000\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"PO-Revision-Date: 2016-04-11 07:34+0000\n"
+"Last-Translator: Akihiro Motoki <amotoki@gmail.com>\n"
+"Language-Team: Japanese\n"
+"Language: ja\n"
+"X-Generator: Zanata 4.3.3\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+
+msgid "Bug Fixes"
+msgstr "バグ修正"
+
+msgid "Current Series Release Notes"
+msgstr "開発中バージョンのリリースノート"
+
+msgid "Deprecation Notes"
+msgstr "廃止予定の機能"
+
+msgid "Mitaka Series Release Notes"
+msgstr "Mitaka バージョンのリリースノート"
+
+msgid "New Features"
+msgstr "新機能"
+
+msgid "Other Notes"
+msgstr "その他の注意点"
+
+msgid "Security Issues"
+msgstr "セキュリティー上の問題"
diff --git a/requirements.txt b/requirements.txt
index b9dabd20..b261d38a 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -38,7 +38,7 @@ oslo.utils>=3.40.0 # Apache-2.0
oslo.concurrency>=3.26.0 # Apache-2.0
PyMySQL>=0.7.6 # MIT License
stevedore>=1.20.0 # Apache-2.0
-oslo.messaging>=5.29.0 # Apache-2.0
+oslo.messaging>=14.1.0 # Apache-2.0
osprofiler>=1.4.0 # Apache-2.0
oslo.log>=3.36.0 # Apache-2.0
oslo.db>=4.27.0 # Apache-2.0
diff --git a/tox.ini b/tox.ini
index 3d163143..6d28eff0 100644
--- a/tox.ini
+++ b/tox.ini
@@ -45,10 +45,10 @@ setenv =
commands =
coverage erase
stestr run --serial {posargs}
- coverage run -a run_tests.py
+ #coverage run -a run_tests.py
coverage html -d cover
coverage xml -o cover/coverage.xml
- coverage report
+ coverage report --fail-under=46
[testenv:venv]
commands = {posargs}
diff --git a/trove/common/cfg.py b/trove/common/cfg.py
index 54dc4961..527c4866 100644
--- a/trove/common/cfg.py
+++ b/trove/common/cfg.py
@@ -1536,7 +1536,8 @@ guest_agent_opts = [
),
cfg.StrOpt(
'container_registry_password',
- help='The plaintext registry password.'
+ help='The plaintext registry password.',
+ secret=True,
),
]
diff --git a/trove/guestagent/datastore/mysql_common/service.py b/trove/guestagent/datastore/mysql_common/service.py
index ca1e530e..e9bd50c6 100644
--- a/trove/guestagent/datastore/mysql_common/service.py
+++ b/trove/guestagent/datastore/mysql_common/service.py
@@ -589,7 +589,8 @@ class BaseMySqlApp(service.BaseDbApp):
user = "%s:%s" % (CONF.database_service_uid, CONF.database_service_uid)
# Create folders for mysql on localhost
- for folder in ['/etc/mysql', '/var/run/mysqld']:
+ for folder in ['/etc/mysql', '/var/run/mysqld',
+ '/etc/mysql/mysql.conf.d']:
operating_system.ensure_directory(
folder, user=CONF.database_service_uid,
group=CONF.database_service_uid, force=True,
@@ -663,7 +664,8 @@ class BaseMySqlApp(service.BaseDbApp):
LOG.info("Restarting mysql")
# Ensure folders permission for database.
- for folder in ['/etc/mysql', '/var/run/mysqld']:
+ for folder in ['/etc/mysql', '/var/run/mysqld',
+ '/etc/mysql/mysql.conf.d']:
operating_system.ensure_directory(
folder, user=CONF.database_service_uid,
group=CONF.database_service_uid, force=True,
diff --git a/trove/rpc.py b/trove/rpc.py
index 81a9b2fb..36fa5b21 100644
--- a/trove/rpc.py
+++ b/trove/rpc.py
@@ -103,10 +103,9 @@ def get_client(target, key, version_cap=None, serializer=None,
# assert key is not None
serializer = secure_serializer(
sz.TroveRequestContextSerializer(serializer), key)
- return messaging.RPCClient(TRANSPORT,
- target,
- version_cap=version_cap,
- serializer=serializer)
+ return messaging.get_rpc_client(
+ TRANSPORT, target, version_cap=version_cap,
+ serializer=serializer)
def get_server(target, endpoints, key, serializer=None,
diff --git a/zuul.d/jobs.yaml b/zuul.d/jobs.yaml
index 032f4776..6ea9188b 100644
--- a/zuul.d/jobs.yaml
+++ b/zuul.d/jobs.yaml
@@ -46,6 +46,8 @@
Q_PLUGIN: ml2
Q_ML2_TENANT_NETWORK_TYPE: vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
+ TROVE_ENABLE_LOCAL_REGISTRY: True
+ TROVE_DATASTORE_VERSION: 5.7
run: playbooks/trove-devstack-base.yaml
irrelevant-files:
- ^.*\.rst$
@@ -290,11 +292,17 @@
Q_PLUGIN: ml2
Q_ML2_TENANT_NETWORK_TYPE: vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
+ TROVE_ENABLE_LOCAL_REGISTRY: True
+ TROVE_DATASTORE_VERSION: 5.7
devstack_local_conf:
post-config:
$TROVE_CONF:
DEFAULT:
usage_timeout: 1800
+ test-config:
+ $TEMPEST_CONFIG:
+ database:
+ default_datastore_versions: mysql:5.7
devstack_plugins:
trove: https://opendev.org/openstack/trove.git
devstack_services:
@@ -356,7 +364,8 @@
Q_ML2_TENANT_NETWORK_TYPE: vxlan
Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
TROVE_DATASTORE_TYPE: postgresql
- TROVE_DATASTORE_VERSION: 12.4
+ TROVE_DATASTORE_VERSION: 12
+ TROVE_ENABLE_LOCAL_REGISTRY: True
devstack_local_conf:
post-config:
$TROVE_CONF:
@@ -366,7 +375,7 @@
$TEMPEST_CONFIG:
database:
enabled_datastores: "postgresql"
- default_datastore_versions: "postgresql:12.4"
+ default_datastore_versions: "postgresql:12"
devstack_plugins:
trove: https://opendev.org/openstack/trove.git
devstack_services:
diff --git a/zuul.d/projects.yaml b/zuul.d/projects.yaml
index 4f6af368..1af775b1 100644
--- a/zuul.d/projects.yaml
+++ b/zuul.d/projects.yaml
@@ -4,7 +4,6 @@
templates:
- check-requirements
- openstack-cover-jobs
- # - openstack-lower-constraints-jobs
- openstack-python3-jobs
- openstack-python3-jobs-arm64
- periodic-stable-jobs
@@ -26,8 +25,6 @@
voting: false
- trove-tempest-ipv6-only:
voting: false
- - trove-functional-mysql:
- voting: false
gate:
jobs:
- trove-tempest: