* Updates to concurrent series upgrade Updates to make it run more in parallel and spend less time waiting on the whole model when updating machines. * Make the concurrent series upgrade tests work This is a number of changes to get the concurrent (here called 'parallel' historically) series upgrade tests to work. A number of changes were required which included limiting the number of concurrent async co-routines (futures) that could be run as with large models it hits the limits of the Py3 runtime. * Fix the tests and change pause order in maybe_pause_things Due to an additional model helper call, an additional model AsyncMock is required. Also the pause order had changed, and this is restored to ensure the original design is retained (for pause order). Clean up some commented out code and sort out a few PEP8 errors. * Update comment to reflect code (3 -> 4) * Fix tests that fail on bionic but pass on focal Essentially, asyncio.gather has different behaviour on bionic that focal. Although this doesn't affect testing, it does affect the unit tests. These changes are simply to normalise the behaviour of unit tests on focal and bionic.
35 lines
1.3 KiB
Python
35 lines
1.3 KiB
Python
# Copyright 2020 Canonical Ltd.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
"""Module of functions for interfacing with the percona-cluster charm."""
|
|
|
|
import zaza.model as model
|
|
|
|
|
|
async def complete_cluster_series_upgrade():
|
|
"""Run the complete-cluster-series-upgrade action on the lead unit."""
|
|
# Note that some models use mysql as the application name, and other's use
|
|
# percona-cluster. Try mysql first, and if it doesn't exist, then try
|
|
# percona-cluster instead.
|
|
try:
|
|
await model.async_run_action_on_leader(
|
|
'mysql',
|
|
'complete-cluster-series-upgrade',
|
|
action_params={})
|
|
except KeyError:
|
|
await model.async_run_action_on_leader(
|
|
'percona-cluster',
|
|
'complete-cluster-series-upgrade',
|
|
action_params={})
|