From 35f989a8701bd675f5ec3bafe161897fc23dfd90 Mon Sep 17 00:00:00 2001 From: Lingxian Kong Date: Thu, 26 Dec 2019 19:10:25 +1300 Subject: [PATCH] Fix unmount path for instance upgrade Change-Id: Ifee8620a41e439b028e0a4d65164a75a100ce4d9 --- doc/source/user/upgrade-datastore.rst | 73 ++++++++++--------- .../datastore/mysql_common/manager.py | 2 +- trove/taskmanager/models.py | 12 ++- 3 files changed, 48 insertions(+), 39 deletions(-) diff --git a/doc/source/user/upgrade-datastore.rst b/doc/source/user/upgrade-datastore.rst index dd494e2d2b..8b16eea21e 100644 --- a/doc/source/user/upgrade-datastore.rst +++ b/doc/source/user/upgrade-datastore.rst @@ -2,13 +2,13 @@ Upgrade datastore ================= -You can upgrade your datastore version. When you perform an upgrade, -the system automatically manages data and configuration files of your -database. +You can upgrade the datastore version of the database instance. When you +perform an upgrade, the system automatically manages data and +configuration files of your database. To perform datastore upgrade, you need: -- A supported OS image with the target datastore version. +- A guest image with the target datastore version. - A Trove database instance to be upgrade. @@ -17,7 +17,7 @@ for a single instance database. .. note:: - **Before** you begin make sure that: + **Before** upgrading, make sure that: - Your target datastore is binary compatible with the current datastore. Each database provider has its own compatibilty @@ -35,17 +35,16 @@ Upgrading datastore #. **Check instance status** - Use :command:`openstack database instance list` to check whether the - status of your instance is ACTIVE. + Make sure the instance status is HEALTHY before upgrading. .. code-block:: console - $openstack database instance list - +--------------------------------------+------------+-----------+-------------------+--------+-----------+------+-----------+ - | ID | Name | Datastore | Datastore Version | Status | Flavor ID | Size | Region | - +--------------------------------------+------------+-----------+-------------------+--------+-----------+------+-----------+ - | 55411e95-1670-497f-8d92-0179f3b4fdd4 | redis_test | redis | 3.2.6 | ACTIVE | 6 | 5 | RegionOne | - +--------------------------------------+------------+-----------+-------------------+--------+-----------+------+-----------+ + $ openstack database instance list + +--------------------------------------+------------+-----------+-------------------+---------+-----------+-----------+------+-----------+ + | ID | Name | Datastore | Datastore Version | Status | Addresses | Flavor ID | Size | Region | + +--------------------------------------+------------+-----------+-------------------+---------+-----------+-----------+------+-----------+ + | 55411e95-1670-497f-8d92-0179f3b4fdd4 | redis_test | redis | 3.2.6 | HEALTHY | 10.1.0.25 | 6 | 1 | RegionOne | + +--------------------------------------+------------+-----------+-------------------+---------+-----------+-----------+------+-----------+ #. **Check if target version is available** @@ -54,36 +53,42 @@ Upgrading datastore .. code-block:: console - $openstack datastore version list redis - +--------------------------------------+-------+ - | ID | Name | - +--------------------------------------+-------+ - | 483debec-b7c3-4167-ab1d-1765795ed7eb | 3.2.6 | - | 507f666e-193c-4194-9d9d-da8342dcb4f1 | 3.2.7 | - +--------------------------------------+-------+ + $ openstack datastore version list redis + +--------------------------------------+-------+ + | ID | Name | + +--------------------------------------+-------+ + | 483debec-b7c3-4167-ab1d-1765795ed7eb | 3.2.6 | + | 507f666e-193c-4194-9d9d-da8342dcb4f1 | 3.2.7 | + +--------------------------------------+-------+ #. **Run upgrade** - Use :command:`openstack database instance` command to upgrade your - datastore for the selected instance. + Use :command:`openstack database instance upgrade` command to upgrade the + datastore of the instance. .. code-block:: console - $openstack database instance 55411e95-1670-497f-8d92-0179f3b4fdd4 3.2.7 + $ openstack database instance 55411e95-1670-497f-8d92-0179f3b4fdd4 3.2.7 -#. **Wait until status changes from UPGRADE to ACTIVE** +#. **Wait until status changes from UPGRADE to HEALTHY** - You can use :command:`openstack database instance list` to check the + Use :command:`openstack database instance list` to check the current status. .. code-block:: console - $openstack database instance list - +--------------------------------------+------------+-----------+-------------------+---------+-----------+------+-----------+ - | ID | Name | Datastore | Datastore Version | Status | Flavor ID | Size | Region | - +--------------------------------------+------------+-----------+-------------------+---------+-----------+------+-----------+ - | 55411e95-1670-497f-8d92-0179f3b4fdd4 | redis_test | redis | 3.2.7 | UPGRADE | 6 | 5 | RegionOne | - +--------------------------------------+------------+-----------+-------------------+---------+-----------+------+-----------+ + $ openstack database instance list + +--------------------------------------+------------+-----------+-------------------+---------+-----------+-----------+------+-----------+ + | ID | Name | Datastore | Datastore Version | Status | Addresses | Flavor ID | Size | Region | + +--------------------------------------+------------+-----------+-------------------+---------+-----------+-----------+------+-----------+ + | 55411e95-1670-497f-8d92-0179f3b4fdd4 | redis_test | redis | 3.2.7 | UPGRADE | 10.1.0.25 | 6 | 5 | RegionOne | + +--------------------------------------+------------+-----------+-------------------+---------+-----------+-----------+------+-----------+ + $ openstack database instance list + +--------------------------------------+------------+-----------+-------------------+---------+-----------+-----------+------+-----------+ + | ID | Name | Datastore | Datastore Version | Status | Addresses | Flavor ID | Size | Region | + +--------------------------------------+------------+-----------+-------------------+---------+-----------+-----------+------+-----------+ + | 55411e95-1670-497f-8d92-0179f3b4fdd4 | redis_test | redis | 3.2.7 | HEALTHY | 10.1.0.25 | 6 | 5 | RegionOne | + +--------------------------------------+------------+-----------+-------------------+---------+-----------+-----------+------+-----------+ Other datastores ~~~~~~~~~~~~~~~~ @@ -91,6 +96,6 @@ Other datastores Upgrade for other datastores works in the same way. Currently Trove supports upgrades for the following datastores: -- MySQL, -- MariaDB, -- Redis. +- MySQL +- MariaDB +- Redis diff --git a/trove/guestagent/datastore/mysql_common/manager.py b/trove/guestagent/datastore/mysql_common/manager.py index f321008a6f..e4e27c0310 100644 --- a/trove/guestagent/datastore/mysql_common/manager.py +++ b/trove/guestagent/datastore/mysql_common/manager.py @@ -282,7 +282,7 @@ class MySqlManager(manager.Manager): operating_system.copy("%s/." % os.path.expanduser('~'), home_save, preserve=True, as_root=True) - self.unmount_volume(context, mount_point=data_dir) + self.unmount_volume(context, mount_point=mount_point) return { 'mount_point': mount_point, 'save_dir': save_dir, diff --git a/trove/taskmanager/models.py b/trove/taskmanager/models.py index fc9952abd4..db4997a353 100755 --- a/trove/taskmanager/models.py +++ b/trove/taskmanager/models.py @@ -1345,8 +1345,8 @@ class BuiltInstanceTasks(BuiltInstance, NotifyMixin, ConfigurationMixin): datastore_status.save() def upgrade(self, datastore_version): - LOG.debug("Upgrading instance %s to new datastore version %s", - self, datastore_version) + LOG.info("Upgrading instance %s to new datastore version %s", + self.id, datastore_version) def server_finished_rebuilding(): self.refresh_compute_server_info() @@ -1389,7 +1389,7 @@ class BuiltInstanceTasks(BuiltInstance, NotifyMixin, ConfigurationMixin): files=injected_files) utils.poll_until( server_finished_rebuilding, - sleep_time=2, time_out=600) + sleep_time=5, time_out=600) if not self.server_status_matches(['ACTIVE']): raise TroveError(_("Instance %(instance)s failed to " @@ -1397,10 +1397,14 @@ class BuiltInstanceTasks(BuiltInstance, NotifyMixin, ConfigurationMixin): instance=self, datastore_version=datastore_version) + LOG.info('Finished rebuilding server for instance %s', self.id) + self.guest.post_upgrade(upgrade_info) self.reset_task_status() - + LOG.info("Finished upgrading instance %s to new datastore " + "version %s", + self.id, datastore_version) except Exception as e: LOG.exception(e) err = inst_models.InstanceTasks.BUILDING_ERROR_SERVER