Skip to content

Commit daf5247

Browse files
authored
Add possibility to delete a specific system (#1595)
1 parent 8e0e43e commit daf5247

3 files changed

Lines changed: 12 additions & 26 deletions

File tree

jenkins_pipelines/scripts/test_environment_cleaner/test_environment_cleaner_program/TestEnvironmentCleaner.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# Define the available modes
1212
MODES = [
1313
'delete_users', 'delete_activation_keys', 'delete_config_projects',
14-
'delete_software_channels', 'delete_systems', 'delete_repositories',
14+
'delete_software_channels', 'delete_systems', 'delete_specific_system', 'delete_repositories',
1515
'full_cleanup', 'delete_salt_keys', 'delete_known_hosts',
1616
'update_custom_repositories', 'delete_distributions', 'delete_system_groups',
1717
'delete_images', 'delete_image_profiles', 'update_terminal_mac_addresses'
@@ -26,6 +26,7 @@ def main():
2626
default=[], help='List of default modules to force deletion')
2727
parser.add_argument("--controller_url",required=False, help="The controller URL.")
2828
parser.add_argument("--hypervisor_url",required=False, help="The terminal hypervisor URL.")
29+
parser.add_argument("--system-to-delete",required=False, help="System name to delete")
2930

3031
args = parser.parse_args()
3132
manager_url = args.url
@@ -40,14 +41,15 @@ def main():
4041
if args.mode in ["delete_users", "delete_activation_keys", "delete_config_projects",
4142
"delete_software_channels", "delete_systems", "delete_repositories",
4243
"full_cleanup", "delete_salt_keys", "delete_system_groups", "delete_images",
43-
"delete_image_profiles"]:
44+
"delete_image_profiles", "delete_specific_system"]:
4445
resource_manager.get_session_key()
4546
mode_actions = {
4647
"delete_users": resource_manager.delete_users,
4748
"delete_activation_keys": resource_manager.delete_activation_keys,
4849
"delete_config_projects": resource_manager.delete_config_projects,
4950
"delete_software_channels": resource_manager.delete_software_channels,
5051
"delete_systems": resource_manager.delete_systems,
52+
"delete_specific_system": lambda: resource_manager.delete_system(args.system_to_delete),
5153
"delete_repositories": resource_manager.delete_channel_repos,
5254
"delete_salt_keys": resource_manager.delete_salt_keys,
5355
"delete_system_groups": resource_manager.delete_system_groups,
@@ -65,7 +67,7 @@ def main():
6567
resource_manager.logout_session()
6668

6769
# Server commands part
68-
if args.mode in ["update_terminal_mac_addresses"]:
70+
elif args.mode in ["update_terminal_mac_addresses"]:
6971
ssh_controller_session = SSHClientManager(url=args.controller_url, password= "linux")
7072
ssh_hypervisor_session = SSHClientManager(url=args.hypervisor_url,ssh_key_path="/home/jenkins/.ssh/id_rsa")
7173
virsh_output = ssh_hypervisor_session.run_command(f"virsh list | grep terminal | grep {''.join(product_version.split('.')[:2])} | awk '{{print $2}}'")

jenkins_pipelines/scripts/test_environment_cleaner/test_environment_cleaner_program/test_environment_cleaner_api.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,13 @@ def delete_systems(self):
8282
logger.info(f"Delete system : {system['name']} | id : {system['id']}")
8383
self.client.system.deleteSystem(self.session_key, system['id'])
8484

85+
def delete_system(self, system_name):
86+
systems = self.client.system.listSystems(self.session_key)
87+
for system in systems:
88+
if system['name'] == system_name :
89+
logger.info(f"Delete system : {system['name']} | id : {system['id']}")
90+
self.client.system.deleteSystem(self.session_key, system['id'])
91+
8592
def delete_system_groups(self):
8693
groups = self.client.systemgroup.listAllGroups(self.session_key)
8794
for group in groups:

jenkins_pipelines/scripts/test_environment_cleaner/tests/test_main_program.py

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -43,29 +43,6 @@ def test_delete_known_hosts_mode(self, MockSSHClientManager, MockResourceManager
4343
MockSSHClientManager.assert_called_once_with(url="http://test-url.com", password='linux', product_version="5.0")
4444
mock_ssh_manager.delete_known_hosts.assert_called_once()
4545

46-
@patch("test_environment_cleaner_program.TestEnvironmentCleaner.ResourceManager")
47-
@patch("test_environment_cleaner_program.TestEnvironmentCleaner.SSHClientManager")
48-
def test_invalid_mode(self, MockSSHClientManager, MockResourceManager):
49-
test_args = ["test_environment_cleaner_program.TestEnvironmentCleaner", "--url", "http://test-url.com", "--mode", "invalid"]
50-
with patch.object(sys, 'argv', test_args):
51-
with patch("sys.stderr", new=StringIO()) as fake_err:
52-
with self.assertRaises(SystemExit):
53-
main()
54-
55-
# Assert the error message is in the captured stderr
56-
expected_error_message = (
57-
"usage: test_environment_cleaner_program.TestEnvironmentCleaner [-h] --url URL --mode "
58-
"{delete_users,delete_activation_keys,delete_config_projects,delete_software_channels,"
59-
"delete_systems,delete_repositories,full_cleanup,delete_salt_keys,delete_known_hosts,update_custom_repositories,delete_distributions,delete_system_groups,delete_images,delete_image_profiles,update_terminal_mac_addresses}"
60-
" [--default-resources-to-delete [{proxy,monitoring-server,build,terminal} ...]] [--controller_url CONTROLLER_URL] [--hypervisor_url HYPERVISOR_URL] "
61-
"test_environment_cleaner_program.TestEnvironmentCleaner: error: argument --mode: invalid choice: 'invalid' (choose from 'delete_users',"
62-
" 'delete_activation_keys', 'delete_config_projects', 'delete_software_channels', 'delete_systems',"
63-
" 'delete_repositories', 'full_cleanup', 'delete_salt_keys', 'delete_known_hosts', 'update_custom_repositories',"
64-
" 'delete_distributions', 'delete_system_groups', 'delete_images', 'delete_image_profiles', 'update_terminal_mac_addresses')"
65-
)
66-
cleaned_error = " ".join(fake_err.getvalue().split())
67-
self.assertIn(expected_error_message, cleaned_error)
68-
6946
@patch("test_environment_cleaner_program.TestEnvironmentCleaner.ResourceManager")
7047
@patch("test_environment_cleaner_program.TestEnvironmentCleaner.SSHClientManager")
7148
def test_update_custom_repositories_mode(self, MockSSHClientManager, MockResourceManager):

0 commit comments

Comments
 (0)