mirror of
https://github.com/OVERLORD7F/SVMU.git
synced 2025-10-01 21:52:47 +03:00
- added random splash screen on startup (testing)
- branding changes in menus - ver. now stored in variable
This commit is contained in:
7
main.py
7
main.py
@@ -1,4 +1,5 @@
|
|||||||
import os
|
import os
|
||||||
|
from splash_screen import *
|
||||||
from config_data_import import *
|
from config_data_import import *
|
||||||
from cluster_api import *
|
from cluster_api import *
|
||||||
from domain_api import *
|
from domain_api import *
|
||||||
@@ -6,6 +7,7 @@ from data_pools_api import *
|
|||||||
from disk_edit_mode import *
|
from disk_edit_mode import *
|
||||||
from rich.panel import Panel
|
from rich.panel import Panel
|
||||||
from rich.console import Console , Align
|
from rich.console import Console , Align
|
||||||
|
SVMU_ver="0.3-dev"
|
||||||
|
|
||||||
config_relative_path = os.path.join(os.getcwd() , 'SpaceVM_Utility.conf') #config 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
|
||||||
|
|
||||||
@@ -15,7 +17,8 @@ if not os.path.exists(config_relative_path):
|
|||||||
|
|
||||||
menu_choice=0
|
menu_choice=0
|
||||||
console = Console()
|
console = Console()
|
||||||
os.system('cls' if os.name=='nt' else 'clear')
|
os.system('cls' if os.name=='nt' else 'clear')
|
||||||
|
show_startup_logo(SVMU_ver) #shows startup splash (ASCII art)
|
||||||
while(menu_choice != ""): #main menu loop
|
while(menu_choice != ""): #main menu loop
|
||||||
check_config(config_relative_path)
|
check_config(config_relative_path)
|
||||||
base_url, api_key, data_pool_uuid, data_pool_name, vm_uuids, vm_names, disk1_size, disk2_size, disk3_size = config_import(config_relative_path) #importing API-KEY / IP / DATA POOL UUID / VM-UUIDs from config
|
base_url, api_key, data_pool_uuid, data_pool_name, vm_uuids, vm_names, disk1_size, disk2_size, disk3_size = config_import(config_relative_path) #importing API-KEY / IP / DATA POOL UUID / VM-UUIDs from config
|
||||||
@@ -29,7 +32,7 @@ while(menu_choice != ""): #main menu loop
|
|||||||
[bold grey53]Connected to Controller: [bright_yellow]{base_url}[/]\n Selected Data Pool: [bright_yellow]{data_pool_name}[/]\n Selected VMs:\n [bright_yellow]{vm_names}"
|
[bold grey53]Connected to Controller: [bright_yellow]{base_url}[/]\n Selected Data Pool: [bright_yellow]{data_pool_name}[/]\n Selected VMs:\n [bright_yellow]{vm_names}"
|
||||||
menu_options=Align.center(menu_options, vertical="middle")
|
menu_options=Align.center(menu_options, vertical="middle")
|
||||||
menu_subtitle = "[blue bold][link=https://github.com/OVERLORD7F/SpaceVM_VM_Utility]:wrench: Project_GitHub[/link] [yellow]| [magenta bold][link=https://spacevm.ru/docs/]:books: SpaceVM_Docs[/link] [yellow]| [red bold][link=https://comptek.ru]:briefcase: Comptek[/link]"
|
menu_subtitle = "[blue bold][link=https://github.com/OVERLORD7F/SpaceVM_VM_Utility]:wrench: Project_GitHub[/link] [yellow]| [magenta bold][link=https://spacevm.ru/docs/]:books: SpaceVM_Docs[/link] [yellow]| [red bold][link=https://comptek.ru]:briefcase: Comptek[/link]"
|
||||||
console.print(Panel(menu_options, title="[bold magenta]SpaceVM Utility - Main Menu" , subtitle = menu_subtitle, subtitle_align="right" , style="yellow" , width=150 , padding = 2))
|
console.print(Panel(menu_options, title=f"[bold magenta]SpaceVM Utility {SVMU_ver} - Main Menu" , subtitle = menu_subtitle, subtitle_align="right" , style="yellow" , width=150 , padding = 2))
|
||||||
menu_choice=str(input("\n>>> "))
|
menu_choice=str(input("\n>>> "))
|
||||||
if menu_choice == "1":
|
if menu_choice == "1":
|
||||||
config_menu(base_url, api_key, config_relative_path)
|
config_menu(base_url, api_key, config_relative_path)
|
||||||
|
76
splash-screens.txt
Normal file
76
splash-screens.txt
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
|
||||||
|
================================================================================================================================================================
|
||||||
|
.dMMMb dMMMMb .aMMMb .aMMMb dMMMMMP dMP dMP dMMMMMMMMb dMP dMP dMMMMMMP dMP dMP dMP dMMMMMMP dMP dMP
|
||||||
|
dMP" VP dMP.dMP dMP"dMP dMP"VMP dMP dMP dMP dMP"dMP"dMP dMP dMP dMP amr dMP amr dMP dMP.dMP
|
||||||
|
VMMMb dMMMMP" dMMMMMP dMP dMMMP dMP dMP dMP dMP dMP dMP dMP dMP dMP dMP dMP dMP VMMMMP
|
||||||
|
dP .dMP dMP dMP dMP dMP.aMP dMP YMvAP" dMP dMP dMP dMP.aMP dMP dMP dMP dMP dMP dA .dMP
|
||||||
|
VMMMP" dMP dMP dMP VMMMP" dMMMMMP VP" dMP dMP dMP VMMMP" dMP dMP dMMMMMP dMP dMP VMMMP"
|
||||||
|
================================================================================================================================================================
|
||||||
|
.d8888b. 888 888 888b d888 888 888 888 d8b 888 d8b 888
|
||||||
|
d88P Y88b 888 888 8888b d8888 888 888 888 Y8P 888 Y8P 888
|
||||||
|
Y88b. 888 888 88888b.d88888 888 888 888 888 888
|
||||||
|
"Y888b. 88888b. 8888b. .d8888b .d88b. Y88b d88P 888Y88888P888 888 888 888888 888 888 888 888888 888 888
|
||||||
|
"Y88b. 888 "88b "88b d88P" d8P Y8b Y88b d88P 888 Y888P 888 888 888 888 888 888 888 888 888 888
|
||||||
|
"888 888 888 .d888888 888 88888888 Y88o88P 888 Y8P 888 888 888 888 888 888 888 888 888 888
|
||||||
|
Y88b d88P 888 d88P 888 888 Y88b. Y8b. Y888P 888 " 888 Y88b. .d88P Y88b. 888 888 888 Y88b. Y88b 888
|
||||||
|
"Y8888P" 88888P" "Y888888 "Y8888P "Y8888 Y8P 888 888 "Y88888P" "Y888 888 888 888 "Y888 "Y88888
|
||||||
|
888 888
|
||||||
|
888 Y8b d88P
|
||||||
|
888 "Y88P"
|
||||||
|
================================================================================================================================================================
|
||||||
|
oooooooo8 ooooo oooo oooo oooo ooooo oooo o8 o88 o888 o88 o8
|
||||||
|
888 ooooooooo ooooooo ooooooo ooooooooo8 888 88 8888o 888 888 88 o888oo oooo 888 oooo o888oo oooo oooo
|
||||||
|
888oooooo 888 888 ooooo888 888 888 888oooooo8 888 88 88 888o8 88 888 88 888 888 888 888 888 888 888
|
||||||
|
888 888 888 888 888 888 888 88888 88 888 88 888 88 888 888 888 888 888 888 888
|
||||||
|
o88oooo888 888ooo88 88ooo88 8o 88ooo888 88oooo888 888 o88o 8 o88o 888oo88 888o o888o o888o o888o 888o 8888
|
||||||
|
o888 o8o888
|
||||||
|
================================================================================================================================================================
|
||||||
|
______ __ __ __ __ __ __ __ __ __ __ __
|
||||||
|
/ \ | \ | \| \ / \ | \ | \ | \ | \| \| \ | \
|
||||||
|
| $$$$$$\ ______ ______ _______ ______ | $$ | $$| $$\ / $$ | $$ | $$ _| $$_ \$$| $$ \$$ _| $$_ __ __
|
||||||
|
| $$___\$$ / \ | \ / \ / \| $$ | $$| $$$\ / $$$ | $$ | $$| $$ \ | \| $$| \| $$ \ | \ | \
|
||||||
|
\$$ \ | $$$$$$\ \$$$$$$\| $$$$$$$| $$$$$$\\$$\ / $$| $$$$\ $$$$ | $$ | $$ \$$$$$$ | $$| $$| $$ \$$$$$$ | $$ | $$
|
||||||
|
_\$$$$$$\| $$ | $$ / $$| $$ | $$ $$ \$$\ $$ | $$\$$ $$ $$ | $$ | $$ | $$ __ | $$| $$| $$ | $$ __ | $$ | $$
|
||||||
|
| \__| $$| $$__/ $$| $$$$$$$| $$_____ | $$$$$$$$ \$$ $$ | $$ \$$$| $$ | $$__/ $$ | $$| \| $$| $$| $$ | $$| \| $$__/ $$
|
||||||
|
\$$ $$| $$ $$ \$$ $$ \$$ \ \$$ \ \$$$ | $$ \$ | $$ \$$ $$ \$$ $$| $$| $$| $$ \$$ $$ \$$ $$
|
||||||
|
\$$$$$$ | $$$$$$$ \$$$$$$$ \$$$$$$$ \$$$$$$$ \$ \$$ \$$ \$$$$$$ \$$$$ \$$ \$$ \$$ \$$$$ _\$$$$$$$
|
||||||
|
| $$ | \__| $$
|
||||||
|
| $$ \$$ $$
|
||||||
|
\$$ \$$$$$$
|
||||||
|
================================================================================================================================================================
|
||||||
|
______ ______ ______ ______ ______ __ __ __ __ __ __ ______ __ __ __ ______ __ __
|
||||||
|
/\ ___\ /\ == \ /\ __ \ /\ ___\ /\ ___\ /\ \ / / /\ "-./ \ /\ \/\ \ /\__ _\ /\ \ /\ \ /\ \ /\__ _\ /\ \_\ \
|
||||||
|
\ \___ \ \ \ _-/ \ \ __ \ \ \ \____ \ \ __\ \ \ \'/ \ \ \-./\ \ \ \ \_\ \ \/_/\ \/ \ \ \ \ \ \____ \ \ \ \/_/\ \/ \ \____ \
|
||||||
|
\/\_____\ \ \_\ \ \_\ \_\ \ \_____\ \ \_____\ \ \__| \ \_\ \ \_\ \ \_____\ \ \_\ \ \_\ \ \_____\ \ \_\ \ \_\ \/\_____\
|
||||||
|
\/_____/ \/_/ \/_/\/_/ \/_____/ \/_____/ \/_/ \/_/ \/_/ \/_____/ \/_/ \/_/ \/_____/ \/_/ \/_/ \/_____/
|
||||||
|
|
||||||
|
================================================================================================================================================================
|
||||||
|
███████╗██████╗ █████╗ ██████╗███████╗██╗ ██╗███╗ ███╗ ██╗ ██╗████████╗██╗██╗ ██╗████████╗██╗ ██╗
|
||||||
|
██╔════╝██╔══██╗██╔══██╗██╔════╝██╔════╝██║ ██║████╗ ████║ ██║ ██║╚══██╔══╝██║██║ ██║╚══██╔══╝╚██╗ ██╔╝
|
||||||
|
███████╗██████╔╝███████║██║ █████╗ ██║ ██║██╔████╔██║ ██║ ██║ ██║ ██║██║ ██║ ██║ ╚████╔╝
|
||||||
|
╚════██║██╔═══╝ ██╔══██║██║ ██╔══╝ ╚██╗ ██╔╝██║╚██╔╝██║ ██║ ██║ ██║ ██║██║ ██║ ██║ ╚██╔╝
|
||||||
|
███████║██║ ██║ ██║╚██████╗███████╗ ╚████╔╝ ██║ ╚═╝ ██║ ╚██████╔╝ ██║ ██║███████╗██║ ██║ ██║
|
||||||
|
╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝ ╚═══╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝
|
||||||
|
================================================================================================================================================================
|
||||||
|
#### ##### # # # ##### #### # # # # ##### # # ##### # # ##### ####
|
||||||
|
# # # # # # # # # # ## ## # # # # ## # # # ## # # #
|
||||||
|
# # # ##### #### #### #### # # # # # # # # # # # # # # ####
|
||||||
|
# # # # # # # # # # # # # ## # # # ## # # # #
|
||||||
|
#### # # # # # ##### #### # # # # # # # # # # # # #
|
||||||
|
================================================================================================================================================================
|
||||||
|
|
||||||
|
____
|
||||||
|
.--.--. ,' , `. ___ ,--, ___
|
||||||
|
/ / '. ,-.----. ,---. ,-+-,.' _ | ,--, ,--.'|_ ,--, ,--.'| ,--, ,--.'|_
|
||||||
|
| : /`. / \ / \ /__./| ,-+-. ; , || ,'_ /| | | :,' ,--.'| | | : ,--.'| | | :,'
|
||||||
|
; | |--` | : | ,---.; ; | ,--.'|' | ;| .--. | | : : : ' : | |, : : ' | |, : : ' :
|
||||||
|
| : ;_ | | .\ : ,--.--. ,---. ,---./___/ \ | || | ,', | ': ,'_ /| : . |.;__,' / `--'_ | ' | `--'_ .;__,' / .--,
|
||||||
|
\ \ `. . : |: | / \ / \ / \ ; \ ' || | / | | || | ' | | . .| | | ,' ,'| ' | | ,' ,'| | | | /_ ./|
|
||||||
|
`----. \| | \ :.--. .-. | / / ' / / \ \ \: |' | : | : |, | | ' | | |:__,'| : ' | | | | : ' | | :__,'| : , ' , ' :
|
||||||
|
__ \ \ || : . | \__\/: . .. ' / . ' / |; \ ' .; . | ; |--' : | | : ' ; ' : |__ | | : ' : |__ | | : ' : |__/___/ \: |
|
||||||
|
/ /`--' /: |`-' ," .--.; |' ; :__ ' ; /| \ \ '| : | | , | ; ' | | ' | | '.'|' : |__ | | '.'|' : |__ | | '.'|. \ ' |
|
||||||
|
'--'. / : : : / / ,. |' | '.'|' | / | \ ` ;| : ' |/ : | : ; ; | ; : ;| | '.'|; : ;| | '.'|; : ; \ ; :
|
||||||
|
`--'---' | | : ; : .' \ : :| : | : \ |; | |`-' ' : `--' \ | , / ; : ;| , / ; : ;| , / \ \ ;
|
||||||
|
`---'.| | , .-./\ \ / \ \ / '---" | ;/ : , .-./ ---`-' | , / ---`-' | , / ---`-' : \ \
|
||||||
|
`---` `--`---' `----' `----' '---' `--`----' ---`-' ---`-' \ ' ;
|
||||||
|
`--`
|
47
splash_screen.py
Normal file
47
splash_screen.py
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
import os
|
||||||
|
import random
|
||||||
|
import time
|
||||||
|
from rich.console import Console
|
||||||
|
from rich.panel import Panel
|
||||||
|
from rich.progress import Progress, SpinnerColumn, TextColumn
|
||||||
|
|
||||||
|
console = Console()
|
||||||
|
|
||||||
|
def show_startup_logo(SVMU_ver):
|
||||||
|
splash_file = os.path.join(os.path.dirname(__file__), "splash-screens.txt")
|
||||||
|
if not os.path.exists(splash_file):
|
||||||
|
console.print("[bold red]Splash screens file not found![/bold red]")
|
||||||
|
return
|
||||||
|
|
||||||
|
with open(splash_file, "r", encoding="utf-8") as f:
|
||||||
|
content = f.read()
|
||||||
|
|
||||||
|
# Split ASCII art blocks by lines of '=' (at least 160 in a row)
|
||||||
|
blocks = [block.strip() for block in content.split("\n" + "="*160) if block.strip()]
|
||||||
|
if not blocks:
|
||||||
|
console.print("[bold red]No splash screens found![/bold red]")
|
||||||
|
return
|
||||||
|
|
||||||
|
art = random.choice(blocks)
|
||||||
|
|
||||||
|
# Animated spinner while showing splash
|
||||||
|
with Progress(
|
||||||
|
SpinnerColumn(),
|
||||||
|
TextColumn("[bold cyan]Loading SpaceVM Utility...[/bold cyan]"),
|
||||||
|
transient=True,
|
||||||
|
console=console,
|
||||||
|
) as progress:
|
||||||
|
task = progress.add_task("startup", total=None)
|
||||||
|
# Simulate loading
|
||||||
|
import time
|
||||||
|
time.sleep(1.5)
|
||||||
|
progress.remove_task(task)
|
||||||
|
|
||||||
|
# Show the ASCII art in a pretty panel
|
||||||
|
console.print(Panel.fit(art, subtitle=f"[bold magenta]{SVMU_ver}[/bold magenta]", subtitle_align="right", border_style="grey53" , width=200 , padding = 2))
|
||||||
|
time.sleep(2) #pause for 2 sec
|
||||||
|
os.system('cls' if os.name=='nt' else 'clear') #clears screen before returning
|
||||||
|
|
||||||
|
|
||||||
|
# Example usage:
|
||||||
|
# show_startup_logo()
|
Reference in New Issue
Block a user