Files
2024-12-11 12:56:18 +00:00

92 lines
3.0 KiB
Python

import click
import requests
@click.group()
@click.pass_context
def virtual_machines(ctx):
"""Commands for managing Virtual Machines."""
pass
@virtual_machines.command("list")
@click.pass_context
def list_command(ctx):
"""List all virtual machines."""
base_url = ctx.obj["BASE_URL"]
list_virtual_machines(base_url)
@virtual_machines.command("add")
@click.pass_context
def add_command(ctx):
"""Add a new virtual machine."""
base_url = ctx.obj["BASE_URL"]
add_virtual_machine(base_url)
@virtual_machines.command("delete")
@click.pass_context
def delete_command(ctx):
"""Delete a virtual machine."""
base_url = ctx.obj["BASE_URL"]
delete_virtual_machine(base_url)
def list_virtual_machines(base_url):
"""List all virtual machines."""
vm_url = f"{base_url}/vm/data"
try:
response = requests.get(vm_url)
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(base_url):
"""Add a new virtual machine."""
vm_url = f"{base_url}/vm/data"
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(vm_url, 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(base_url):
"""Delete a virtual machine."""
vm_url = f"{base_url}/vm/data"
try:
vm_id = click.prompt("Enter the ID of the virtual machine to delete", type=int)
response = requests.delete(f"{vm_url}/{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}")