import click import requests BASE_URL = "http://localhost:8000/vm" # Backend URL for Virtual Machines API @click.group() def virtual_machines(): """Commands for managing Virtual Machines.""" pass @virtual_machines.command("list") def list_command(): handle_command("list") @virtual_machines.command("add") def add_command(): handle_command("add") @virtual_machines.command("delete") def delete_command(): handle_command("delete") def handle_command(action): """Handle commands related to Virtual Machines.""" if action == "list": list_virtual_machines() elif action == "add": add_virtual_machine() elif action == "delete": delete_virtual_machine() def list_virtual_machines(): """List all virtual machines.""" try: response = requests.get(f"{BASE_URL}/data") if response.status_code == 200: virtual_machines = response.json().get("virtual_machines", []) click.echo("\nšŸ’» Virtual Machines:") for vm in virtual_machines: click.echo( f"ID: {vm[0]}, Name: {vm[1]}, Location: {vm[2]}, " f"CPU: {vm[3]}, Memory: {vm[4]}, Storage: {vm[5]}, " f"Type: {vm[6]}" ) else: click.echo(f"Error: {response.status_code} - {response.text}") except requests.RequestException as e: click.echo(f"Error: {e}") def add_virtual_machine(): """Add a new virtual machine.""" try: name = click.prompt("Name") location = click.prompt("Location") cpu = click.prompt("CPU (cores)", type=int) memory = click.prompt("Memory (GB)") storage = click.prompt("Storage (e.g., 500GB SSD)") vm_type = click.prompt("Type (e.g., cx-21)") data = { "name": name, "location": location, "cpu": cpu, "memory": memory, "storage": storage, "type": vm_type, } response = requests.post(f"{BASE_URL}/data", json=data) if response.status_code in [200, 201]: response_data = response.json() message = response_data.get("message", "Virtual machine added successfully!") click.echo(f"āœ… {message}") else: click.echo(f"Error: {response.status_code} - {response.text}") except requests.RequestException as e: click.echo(f"Error: {e}") def delete_virtual_machine(): """Delete a virtual machine.""" try: vm_id = click.prompt("Enter the ID of the virtual machine to delete", type=int) response = requests.delete(f"{BASE_URL}/data/{vm_id}") if response.status_code == 200: click.echo("āœ… Virtual machine deleted successfully!") else: click.echo(f"Error: {response.status_code} - {response.text}") except requests.RequestException as e: click.echo(f"Error: {e}")