update(app): refactor commands

This commit is contained in:
Aleksandr Tcitlionok
2024-12-11 12:56:18 +00:00
parent 24e09330ea
commit b031148f61
7 changed files with 212 additions and 111 deletions

View File

@@ -1,38 +1,38 @@
import click
import requests
BASE_URL = "http://localhost:8000/metal" # Backend URL for Metal Nodes API
@click.group()
def metal_nodes():
@click.pass_context
def metal_nodes(ctx):
"""Commands for managing Metal Nodes."""
pass
@metal_nodes.command("list")
def list_command():
handle_command("list")
@click.pass_context
def list_command(ctx):
"""List all metal nodes."""
base_url = ctx.obj["BASE_URL"]
list_metal_nodes(base_url)
@metal_nodes.command("add")
def add_command():
handle_command("add")
@click.pass_context
def add_command(ctx):
"""Add a new metal node."""
base_url = ctx.obj["BASE_URL"]
add_metal_node(base_url)
@metal_nodes.command("delete")
def delete_command():
handle_command("delete")
@click.pass_context
def delete_command(ctx):
"""Delete a metal node."""
base_url = ctx.obj["BASE_URL"]
delete_metal_node(base_url)
def handle_command(action):
"""Handle commands related to Metal Nodes."""
if action == "list":
list_metal_nodes()
elif action == "add":
add_metal_node()
elif action == "delete":
delete_metal_node()
def list_metal_nodes():
def list_metal_nodes(base_url):
"""List all metal nodes."""
metal_url = f"{base_url}/metal/data"
try:
response = requests.get(f"{BASE_URL}/data")
response = requests.get(metal_url)
if response.status_code == 200:
metal_nodes = response.json().get("metal_nodes", [])
click.echo("\n🖥️ Metal Nodes:")
@@ -47,8 +47,9 @@ def list_metal_nodes():
except requests.RequestException as e:
click.echo(f"Error: {e}")
def add_metal_node():
def add_metal_node(base_url):
"""Add a new metal node."""
metal_url = f"{base_url}/metal/data"
try:
# Gather inputs from the prompt
name = click.prompt("Name")
@@ -72,7 +73,7 @@ def add_metal_node():
}
# Send the POST request to the backend
response = requests.post(f"{BASE_URL}/data", json=data)
response = requests.post(metal_url, json=data)
if response.status_code in [200, 201]:
response_data = response.json()
@@ -83,11 +84,12 @@ def add_metal_node():
except requests.RequestException as e:
click.echo(f"Error: {e}")
def delete_metal_node():
def delete_metal_node(base_url):
"""Delete a metal node."""
metal_url = f"{base_url}/metal/data"
try:
node_id = click.prompt("Enter the ID of the metal node to delete", type=int)
response = requests.delete(f"{BASE_URL}/data/{node_id}")
response = requests.delete(f"{metal_url}/{node_id}")
if response.status_code == 200:
click.echo("✅ Metal node deleted successfully!")
else: