Reactor Backup Tests
Refactor Backup tests for
- Simplex
- Duplex
Change-Id: I6056efe1b6a878adedb16e8f74bd053ef5896122
Signed-off-by: Abhishek jaiswal <abhishek.jaiswal@windriver.com>
This commit is contained in:
15
config/lab/objects/lab_type_enum.py
Normal file
15
config/lab/objects/lab_type_enum.py
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
from enum import Enum
|
||||||
|
|
||||||
|
|
||||||
|
class LabTypeEnum(Enum):
|
||||||
|
"""Enumeration for different types of labs.
|
||||||
|
|
||||||
|
This enum is used to categorize labs based on their type, such as 'Simplex', 'Duplex', or 'AIO+'.
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
SIMPLEX = "Simplex" # A lab with a single controller.
|
||||||
|
DUPLEX = "Duplex" # A lab with two controllers for redundancy.
|
||||||
|
AIO_PLUS = "AIO+" # A lab with an All-In-One Plus configuration, typically with additional resources or capabilities.
|
||||||
|
STORAGE = "Storage" # A lab that has storage nodes > 0
|
||||||
|
STANDARD = "Standard" # A lab that has worker nodes > 0
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
|
from pytest import mark
|
||||||
|
|
||||||
from config.configuration_manager import ConfigurationManager
|
from config.configuration_manager import ConfigurationManager
|
||||||
|
from config.lab.objects.lab_type_enum import LabTypeEnum
|
||||||
from framework.logging.automation_logger import get_logger
|
from framework.logging.automation_logger import get_logger
|
||||||
from framework.validation.validation import validate_equals
|
from framework.validation.validation import validate_equals
|
||||||
from keywords.cloud_platform.dcmanager.dcmanager_subcloud_backup_keywords import DcManagerSubcloudBackupKeywords
|
from keywords.cloud_platform.dcmanager.dcmanager_subcloud_backup_keywords import DcManagerSubcloudBackupKeywords
|
||||||
@@ -11,47 +14,30 @@ from keywords.cloud_platform.version_info.cloud_platform_version_manager import
|
|||||||
from keywords.files.file_keywords import FileKeywords
|
from keywords.files.file_keywords import FileKeywords
|
||||||
from keywords.linux.date.date_keywords import DateKeywords
|
from keywords.linux.date.date_keywords import DateKeywords
|
||||||
|
|
||||||
|
BACKUP_PATH = "/opt/dc-vault/backups/"
|
||||||
|
|
||||||
def test_verify_backup_central(request):
|
|
||||||
"""
|
def verify_backup_central(subcloud_name: str):
|
||||||
|
"""Function to central Backup of a subcloud
|
||||||
|
|
||||||
Verify backup files are stored in centralized archive
|
Verify backup files are stored in centralized archive
|
||||||
Verify backup date and backup state of single subcloud
|
Verify backup date and backup state of single subcloud
|
||||||
Test Steps:
|
|
||||||
- Backup subcloud to store the file on the System Controller
|
|
||||||
- Verify the subcloud backup file is transferred to the centralized
|
|
||||||
default location
|
|
||||||
- Check backup match current Date and if it is complete
|
|
||||||
- Remove files created while the Tc was running.
|
|
||||||
|
|
||||||
|
Args:
|
||||||
|
subcloud_name (str): subcloud name to backup
|
||||||
"""
|
"""
|
||||||
central_ssh = LabConnectionKeywords().get_active_controller_ssh()
|
central_ssh = LabConnectionKeywords().get_active_controller_ssh()
|
||||||
release = CloudPlatformVersionManagerClass().get_sw_version()
|
release = CloudPlatformVersionManagerClass().get_sw_version()
|
||||||
|
|
||||||
# Gets the lowest subcloud (the subcloud with the lowest id).
|
|
||||||
dcmanager_subcloud_list_keywords = DcManagerSubcloudListKeywords(central_ssh)
|
|
||||||
lowest_subcloud = dcmanager_subcloud_list_keywords.get_dcmanager_subcloud_list().get_healthy_subcloud_with_lowest_id()
|
|
||||||
subcloud_name = lowest_subcloud.get_name()
|
|
||||||
|
|
||||||
# Gets the lowest subcloud sysadmin password needed for backup creation.
|
# Gets the lowest subcloud sysadmin password needed for backup creation.
|
||||||
lab_config = ConfigurationManager.get_lab_config().get_subcloud(subcloud_name)
|
lab_config = ConfigurationManager.get_lab_config().get_subcloud(subcloud_name)
|
||||||
subcloud_password = lab_config.get_admin_credentials().get_password()
|
subcloud_password = lab_config.get_admin_credentials().get_password()
|
||||||
|
|
||||||
dc_manager_backup = DcManagerSubcloudBackupKeywords(central_ssh)
|
dc_manager_backup = DcManagerSubcloudBackupKeywords(central_ssh)
|
||||||
|
|
||||||
# Path to where the backup file will store.
|
# Path to where the backup file will store.
|
||||||
central_path = f"/opt/dc-vault/backups/{subcloud_name}/{release}"
|
central_path = f"{BACKUP_PATH}{subcloud_name}/{release}"
|
||||||
|
|
||||||
def teardown():
|
|
||||||
get_logger().log_info("Removing test files during teardown")
|
|
||||||
FileKeywords(central_ssh).delete_folder_with_sudo("/opt/dc-vault/backups/")
|
|
||||||
|
|
||||||
request.addfinalizer(teardown)
|
|
||||||
|
|
||||||
# Create a subcloud backup and verify the subcloud backup file in central_path
|
# Create a subcloud backup and verify the subcloud backup file in central_path
|
||||||
get_logger().log_info(f"Create {subcloud_name} backup on Central Cloud")
|
get_logger().log_info(f"Create {subcloud_name} backup on Central Cloud")
|
||||||
dc_manager_backup.create_subcloud_backup(subcloud_password, central_ssh, path=central_path, subcloud=subcloud_name)
|
dc_manager_backup.create_subcloud_backup(subcloud_password, central_ssh, path=central_path, subcloud=subcloud_name)
|
||||||
|
|
||||||
get_logger().log_info("Checking Subcloud's backup_status, backup_datetime")
|
get_logger().log_info("Checking Subcloud's backup_status, backup_datetime")
|
||||||
subcloud_show_object = DcManagerSubcloudShowKeywords(central_ssh).get_dcmanager_subcloud_show(subcloud_name).get_dcmanager_subcloud_show_object()
|
subcloud_show_object = DcManagerSubcloudShowKeywords(central_ssh).get_dcmanager_subcloud_show(subcloud_name).get_dcmanager_subcloud_show_object()
|
||||||
backup_status = subcloud_show_object.get_backup_status()
|
backup_status = subcloud_show_object.get_backup_status()
|
||||||
@@ -65,24 +51,35 @@ def test_verify_backup_central(request):
|
|||||||
validate_equals(backup_date[0].strip(), current_date, "Verifying that the backup was created today")
|
validate_equals(backup_date[0].strip(), current_date, "Verifying that the backup was created today")
|
||||||
|
|
||||||
|
|
||||||
def test_verify_backup_local_custom_path(request):
|
def teardown_central():
|
||||||
"""
|
"""Teardown function for central backup."""
|
||||||
Verify backup files are stored locally to custom directory
|
|
||||||
|
|
||||||
Test Steps:
|
central_ssh = LabConnectionKeywords().get_active_controller_ssh()
|
||||||
- Create a YAML file and add backup backup_dir parameter
|
# Path to where the backup file will store.
|
||||||
- Verify file created on the System Controller
|
get_logger().log_info("Removing test files during teardown")
|
||||||
- Run dcmanager CLI Backup with --local-only --backup-values
|
FileKeywords(central_ssh).delete_folder_with_sudo(BACKUP_PATH)
|
||||||
- Verify the backup files are stored locally (subcloud) using
|
|
||||||
the configured path.
|
|
||||||
- Remove files created while the Tc was running.
|
def teardown_local(subcloud_name: str):
|
||||||
|
"""Teardown function for local backup.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
subcloud_name (str): subcloud name
|
||||||
"""
|
"""
|
||||||
central_ssh = LabConnectionKeywords().get_active_controller_ssh()
|
central_ssh = LabConnectionKeywords().get_active_controller_ssh()
|
||||||
|
subcloud_ssh = LabConnectionKeywords().get_subcloud_ssh(subcloud_name)
|
||||||
|
get_logger().log_info("Removing test files")
|
||||||
|
FileKeywords(central_ssh).delete_folder_with_sudo("subcloud_backup.yaml")
|
||||||
|
FileKeywords(subcloud_ssh).delete_folder_with_sudo(f"{subcloud_name}_platform_backup_*.tgz")
|
||||||
|
|
||||||
# Gets the lowest subcloud (the subcloud with the lowest id).
|
|
||||||
dcmanager_subcloud_list_keywords = DcManagerSubcloudListKeywords(central_ssh)
|
def verify_backup_local_custom_path(subcloud_name: str):
|
||||||
lowest_subcloud = dcmanager_subcloud_list_keywords.get_dcmanager_subcloud_list().get_healthy_subcloud_with_lowest_id()
|
"""Verify backup files are stored locally to custom directory
|
||||||
subcloud_name = lowest_subcloud.get_name()
|
|
||||||
|
Args:
|
||||||
|
subcloud_name (str): subcloud name to backup
|
||||||
|
"""
|
||||||
|
central_ssh = LabConnectionKeywords().get_active_controller_ssh()
|
||||||
subcloud_ssh = LabConnectionKeywords().get_subcloud_ssh(subcloud_name)
|
subcloud_ssh = LabConnectionKeywords().get_subcloud_ssh(subcloud_name)
|
||||||
|
|
||||||
# Gets the lowest subcloud sysadmin password needed for backup creation.
|
# Gets the lowest subcloud sysadmin password needed for backup creation.
|
||||||
@@ -91,13 +88,6 @@ def test_verify_backup_local_custom_path(request):
|
|||||||
|
|
||||||
dc_manager_backup = DcManagerSubcloudBackupKeywords(central_ssh)
|
dc_manager_backup = DcManagerSubcloudBackupKeywords(central_ssh)
|
||||||
|
|
||||||
def teardown():
|
|
||||||
get_logger().log_info("Removing test files")
|
|
||||||
FileKeywords(central_ssh).delete_folder_with_sudo("subcloud_backup.yaml")
|
|
||||||
FileKeywords(subcloud_ssh).delete_folder_with_sudo(f"{subcloud_name}_platform_backup_*.tgz")
|
|
||||||
|
|
||||||
request.addfinalizer(teardown)
|
|
||||||
|
|
||||||
get_user = lab_config.get_admin_credentials().get_user_name()
|
get_user = lab_config.get_admin_credentials().get_user_name()
|
||||||
home_path = f"/home/{get_user}/"
|
home_path = f"/home/{get_user}/"
|
||||||
|
|
||||||
@@ -113,3 +103,91 @@ def test_verify_backup_local_custom_path(request):
|
|||||||
# Create a subcloud backup and verify the subcloud backup file in local custom path.
|
# Create a subcloud backup and verify the subcloud backup file in local custom path.
|
||||||
get_logger().log_info(f"Create {subcloud_name} backup locally on custom path")
|
get_logger().log_info(f"Create {subcloud_name} backup locally on custom path")
|
||||||
dc_manager_backup.create_subcloud_backup(subcloud_password, subcloud_ssh, path=f"{home_path}{subcloud_name}_platform_backup_*.tgz", subcloud=subcloud_name, local_only=True, backup_yaml=backup_yaml_path)
|
dc_manager_backup.create_subcloud_backup(subcloud_password, subcloud_ssh, path=f"{home_path}{subcloud_name}_platform_backup_*.tgz", subcloud=subcloud_name, local_only=True, backup_yaml=backup_yaml_path)
|
||||||
|
|
||||||
|
|
||||||
|
@mark.p0
|
||||||
|
@mark.subcloud_lab_is_simplex
|
||||||
|
def test_verify_backup_central_simplex(request):
|
||||||
|
"""Central Backup of a subcloud Simplex
|
||||||
|
|
||||||
|
Test Steps:
|
||||||
|
- Backup subcloud to store the file on the System Controller
|
||||||
|
- Verify the subcloud backup file is transferred to the centralized
|
||||||
|
default location
|
||||||
|
- Check backup match current Date and if it is complete
|
||||||
|
- Remove files created while the Tc was running.
|
||||||
|
|
||||||
|
"""
|
||||||
|
central_ssh = LabConnectionKeywords().get_active_controller_ssh()
|
||||||
|
dcm_sc_list_kw = DcManagerSubcloudListKeywords(central_ssh)
|
||||||
|
subcloud = dcm_sc_list_kw.get_dcmanager_subcloud_list().get_healthy_subcloud_by_type(LabTypeEnum.SIMPLEX.value)
|
||||||
|
request.addfinalizer(teardown_central)
|
||||||
|
verify_backup_central(subcloud.get_name())
|
||||||
|
|
||||||
|
|
||||||
|
@mark.p0
|
||||||
|
@mark.subcloud_lab_is_duplex
|
||||||
|
def test_verify_backup_central_duplex(request):
|
||||||
|
"""Central Backup of a subcloud Duplex
|
||||||
|
|
||||||
|
Test Steps:
|
||||||
|
- Backup subcloud to store the file on the System Controller
|
||||||
|
- Verify the subcloud backup file is transferred to the centralized
|
||||||
|
default location
|
||||||
|
- Check backup match current Date and if it is complete
|
||||||
|
- Remove files created while the Tc was running.
|
||||||
|
|
||||||
|
"""
|
||||||
|
central_ssh = LabConnectionKeywords().get_active_controller_ssh()
|
||||||
|
dcm_sc_list_kw = DcManagerSubcloudListKeywords(central_ssh)
|
||||||
|
subcloud = dcm_sc_list_kw.get_dcmanager_subcloud_list().get_healthy_subcloud_by_type(LabTypeEnum.DUPLEX.value)
|
||||||
|
request.addfinalizer(teardown_central)
|
||||||
|
verify_backup_central(subcloud.get_name())
|
||||||
|
|
||||||
|
|
||||||
|
@mark.p0
|
||||||
|
@mark.subcloud_lab_is_simplex
|
||||||
|
def test_verify_backup_local_simplex(request):
|
||||||
|
"""
|
||||||
|
|
||||||
|
Test Steps:
|
||||||
|
- Create a YAML file and add backup backup_dir parameter
|
||||||
|
- Verify file created on the System Controller
|
||||||
|
- Run dcmanager CLI Backup with --local-only --backup-values
|
||||||
|
- Verify the backup files are stored locally (subcloud) using
|
||||||
|
the configured path.
|
||||||
|
- Remove files created while the Tc was running.
|
||||||
|
"""
|
||||||
|
central_ssh = LabConnectionKeywords().get_active_controller_ssh()
|
||||||
|
dcm_sc_list_kw = DcManagerSubcloudListKeywords(central_ssh)
|
||||||
|
subcloud = dcm_sc_list_kw.get_dcmanager_subcloud_list().get_healthy_subcloud_by_type(LabTypeEnum.SIMPLEX.value)
|
||||||
|
|
||||||
|
def teardown():
|
||||||
|
teardown_local(subcloud.get_name())
|
||||||
|
|
||||||
|
request.addfinalizer(teardown)
|
||||||
|
verify_backup_local_custom_path(subcloud.get_name())
|
||||||
|
|
||||||
|
|
||||||
|
@mark.p0
|
||||||
|
@mark.subcloud_lab_is_duplex
|
||||||
|
def test_verify_backup_local_duplex(request):
|
||||||
|
"""
|
||||||
|
|
||||||
|
Test Steps:
|
||||||
|
- Create a YAML file and add backup backup_dir parameter
|
||||||
|
- Verify file created on the System Controller
|
||||||
|
- Run dcmanager CLI Backup with --local-only --backup-values
|
||||||
|
- Verify the backup files are stored locally (subcloud) using
|
||||||
|
the configured path.
|
||||||
|
- Remove files created while the Tc was running.
|
||||||
|
"""
|
||||||
|
central_ssh = LabConnectionKeywords().get_active_controller_ssh()
|
||||||
|
dcm_sc_list_kw = DcManagerSubcloudListKeywords(central_ssh)
|
||||||
|
subcloud = dcm_sc_list_kw.get_dcmanager_subcloud_list().get_healthy_subcloud_by_type(LabTypeEnum.DUPLEX.value)
|
||||||
|
|
||||||
|
def teardown():
|
||||||
|
teardown_local(subcloud.get_name())
|
||||||
|
|
||||||
|
request.addfinalizer(teardown)
|
||||||
|
verify_backup_local_custom_path(subcloud.get_name())
|
||||||
|
|||||||
Reference in New Issue
Block a user