From 71a7c38c277404e6af01f215e2c8e1ecba8036ea Mon Sep 17 00:00:00 2001 From: OVERLORD7F Date: Wed, 28 May 2025 16:59:38 +0300 Subject: [PATCH] Expanding config-related functions - New function change_vm_uuids - New function change_data_pool --- config_data_import.py | 63 ++++++++++++++++++++++++++++++++++++------- main.py | 8 ++++-- 2 files changed, 60 insertions(+), 11 deletions(-) diff --git a/config_data_import.py b/config_data_import.py index 3d44754..b3e51cb 100644 --- a/config_data_import.py +++ b/config_data_import.py @@ -10,20 +10,26 @@ from rich.console import Console , Align from rich.prompt import Prompt console = Console() -def config_menu(config_relative_path): +def config_menu(base_url, api_key, config_relative_path): cls() - config_menu_options="[gold bold][1] [grey53 italic]Show current configuration\n[/grey53 italic] \ -\n[gold bold][2] [grey53 italic]Change configuraion[/grey53 italic]\n \ -\n\n[green_yellow bold]ENTER - return to Main Menu" + config_menu_options="[gold bold][1] [grey53 italic]Show current configuration\n[/] \ +\n[gold bold][2] [grey53 italic]Setup new config file[/]\n \ +\n[gold bold][3] [grey53 italic]Change selected data pool[/]\n\ +\n[gold bold][4] [grey53 italic]Change selected VMs[/]\ +\n\n[green_yellow bold]ENTER - return to Main Menu[/]" config_menu_options=Align.center(config_menu_options, vertical="middle") console = Console() console.print(Panel(config_menu_options, title="[gold bold]SpaceVM Utility - Utility Configuration" , border_style="magenta" , width=150 , padding = 2)) sub_choice=str(input("\n>>> ")) if sub_choice == "1": config_show(config_relative_path) - config_menu(config_relative_path) + config_menu(base_url, api_key, config_relative_path) if sub_choice == "2": config_edit(config_relative_path) + if sub_choice == "3": + change_data_pool(base_url, api_key, config_relative_path) + if sub_choice == "4": + change_vm_uuids(config_relative_path) def config_show(config_relative_path): cls() @@ -47,14 +53,53 @@ def config_import(config_relative_path): vm_list.append(value) #get pretty name for selected data pool data_pool_name = get_data_pool_name(base_url , api_key , data_pool_uuid) - #get pretty name for selected VMs vm_names=[] for x in vm_list: vm_names.append(get_vm_name(base_url, api_key, x)) - return base_url, api_key, data_pool_uuid, data_pool_name, vm_list, vm_names +def change_data_pool(base_url, api_key, config_relative_path): + cls() + show_data_pools(base_url, api_key) + new_data_pool_uuid = input("Type NEW Data Pool UUID: ") + config = configparser.ConfigParser() + config.read(config_relative_path) + if config.has_section('Data_Pool'): + # update data_pool_uuid + config.set('Data_Pool', 'data_pool_uuid', new_data_pool_uuid) + with open(config_relative_path, 'w') as config_file: + config.write(config_file) + else: + print("No 'Data_Pool' section in config file..") + config_show(config_relative_path) + + +def change_vm_uuids(config_relative_path): + config = configparser.ConfigParser() + config.read(config_relative_path) + # Remove old VM_List section if it exists, then add a fresh one + if config.has_section('VM_List'): + config.remove_section('VM_List') + config.add_section('VM_List') + cls() + console.print("[yellow bold]Type new VM UUIDs one by one (input ENTER to stop):") + x = 0 + while True: + vm_input = input(">> ") + if not vm_input: + break + x += 1 + config.set('VM_List', f'uuid_{x}', vm_input) + + with open(config_relative_path, 'w') as configfile: + config.write(configfile) + + console.print("[green bold]VM UUIDs have been updated in config :pencil:") + Prompt.ask("[green_yellow bold]Press ENTER to proceed.. :right_arrow_curving_down:") + config_show(config_relative_path) + + def config_edit(config_relative_path): read_input = input("Create new config file? (Y / N): ") menu_choice = str(read_input) @@ -67,8 +112,8 @@ def config_edit(config_relative_path): while check_api_key(base_url, "jwt " + api_key) != 200: api_key = console.input("[bold red]Check and type SpaceVM Controller API Key again: [/]") show_data_pools(base_url, "jwt " + api_key) - data_pool_uuid = input("Type Data Pool UUID you wish to use: ") + config = configparser.ConfigParser() config["General"] = { "controller_ip": base_url, @@ -88,7 +133,7 @@ def config_edit(config_relative_path): vm_input = input(">> ") if vm_input: x += 1 - file.write(f"UUID_{x} = {vm_input}\n") + file.write(f"uuid_{x} = {vm_input}\n") console.print("[green bold]VM UUIDs have been written in config :pencil:") console.print("[green bold]Configuration completed ! :white_check_mark:") diff --git a/main.py b/main.py index a853d3e..8660aa1 100644 --- a/main.py +++ b/main.py @@ -7,7 +7,11 @@ from disk_edit_mode import * from rich.panel import Panel from rich.console import Console , Align -config_relative_path = os.path.join(os.getcwd() , 'SpaceVM_Utility.conf') #config.txt in the same directory with main.py +config_relative_path = os.path.join(os.getcwd() , 'SpaceVM_Utility.conf') #config in the same directory with main.py + +print("Reading config from:", os.path.abspath(config_relative_path)) +if not os.path.exists(config_relative_path): + print(f"Config file not found: {config_relative_path}") menu_choice=0 console = Console() @@ -29,7 +33,7 @@ while(menu_choice != ""): #main menu loop console.print(Panel(menu_options, title="[bold magenta]SpaceVM Utility - Main Menu" , subtitle = menu_subtitle, subtitle_align="right" , style="yellow" , width=150 , padding = 2)) menu_choice=str(input("\n>>> ")) if menu_choice == "1": - config_menu(config_relative_path) + config_menu(base_url, api_key, config_relative_path) if menu_choice == "2": disk_edit_mode(base_url , api_key , data_pool_uuid , vm_uuids) if menu_choice == "3":