You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-10-31 18:30:33 +03:00
Implements the initial upgrade capability across CMAPI and the CLI, including
repository setup, package operations, environment prechecks, and coordinated
cluster steps with progress reporting.
Details:
- CMAPI upgrade manager:
- Add `cmapi/cmapi_server/managers/upgrade/` modules:
- `repo.py`, `packages.py`, `preinstall.py`, `upgrade.py`, `utils.py` and `__init__.py`
- Extend endpoints and routing to expose upgrade operations and status:
- `cmapi_server/controllers/{endpoints.py, dispatcher.py, api_clients.py}`
- `cmapi_server/managers/{application.py, process.py}`
- Add improved constants and helpers for upgrade flow
- Backup/restore and safety:
- Add `cmapi_server/managers/backup_restore.py`
- Fix pre-upgrade backup regressions (due to `mcs_backup_manager.sh 3.17 changes`)
- Improve cluster version validation; add `ignore_missmatch` override
- CLI enhancements:
- Progress UI and richer feedback (`mcs_cluster_tool/tools_commands.py`, `README.md`, `mcs.1`)
- Add steps to start MDB and start MCS during/after upgrade
- Improved error surfacing for version validation
- Platform and packaging:
- Ubuntu and Rocky Linux support
- RHEL/DNF dry-run support
- Distro detection and platform-dependent logic hardened
- Logging improvements
- Updater service:
- Add `cmapi/updater/cmapi_updater.service.template` and `cmapi_updater.sh` to make CMAPI update itself
- Docs:
- Update mcs cli README and mcs.1 man file
- Add `cmapi/updater/README.md`
46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
import unittest
|
|
import requests
|
|
import configparser
|
|
from pathlib import Path
|
|
from datetime import datetime
|
|
|
|
from cmapi_server.constants import _version
|
|
|
|
config_filename = './cmapi_server/cmapi_server.conf'
|
|
|
|
url = f"https://localhost:8640/cmapi/{_version}/node/config"
|
|
begin_url = f"https://localhost:8640/cmapi/{_version}/node/begin"
|
|
config_path = './cmapi_server/test/Columnstore_apply_config.xml'
|
|
|
|
# create tmp dir
|
|
tmp_prefix = '/tmp/mcs_config_test'
|
|
tmp_path = Path(tmp_prefix)
|
|
tmp_path.mkdir(parents = True, exist_ok = True)
|
|
copyfile(config_path_old, tmp_prefix + '/Columnstore.xml')
|
|
|
|
|
|
def get_current_key():
|
|
app_config = configparser.ConfigParser()
|
|
try:
|
|
with open(config_filename, 'r') as _config_file:
|
|
app_config.read_file(_config_file)
|
|
except FileNotFoundError:
|
|
return ''
|
|
if 'Authentication' not in app_config.sections():
|
|
return ''
|
|
return app_config['Authentication'].get('x-api-key', '')
|
|
|
|
headers = {'x-api-key': get_current_key()}
|
|
body = {'id': 42, 'timeout': 120}
|
|
r = requests.put(begin_url, verify=False, headers=headers, json=body)
|
|
|
|
config_file = Path(config_path)
|
|
config = config_file.read_text()
|
|
|
|
body = {
|
|
'revision': 42,
|
|
'manager': '1.1.1.1',
|
|
'timeout': 0,
|
|
'config': config,
|
|
}
|