Skip to content

Commit

Permalink
feat(cli): Add secret delete command
Browse files Browse the repository at this point in the history
  • Loading branch information
daryllimyt committed Jun 8, 2024
1 parent 3fa1cfc commit fa6df0d
Showing 1 changed file with 52 additions and 10 deletions.
62 changes: 52 additions & 10 deletions tracecat/cli/secret.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,13 @@


async def create_secret(secret_name: str, keyvalues: list[str]):
"""
Create a secret.
Args:
secret_name (str): Secret name, can have multiple key-value pairs.
keyvalues (list[str]): Space-separated KEY-VALUE items.
"""
params = CreateSecretParams.from_strings(secret_name, keyvalues)
async with AuthenticatedAPIClient(role=config.ROLE) as client:
res = await client.put(
Expand All @@ -22,33 +29,68 @@ async def create_secret(secret_name: str, keyvalues: list[str]):
res.raise_for_status()


async def delete_secret(secret_name: str):
"""
Delete a secret.
Args:
secret_name (str): Secret name.
"""
async with AuthenticatedAPIClient(role=config.ROLE) as client:
res = await client.delete(f"/secrets/{secret_name}")
res.raise_for_status()


async def list_secrets():
"""
List all secrets.
Returns:
dict: JSON response containing the list of secrets.
"""
async with AuthenticatedAPIClient(role=config.ROLE) as client:
res = await client.get("/secrets")
res.raise_for_status()
return res.json()


@app.command(no_args_is_help=True, help="Create a workflow")
@app.command(no_args_is_help=True, help="Create a secret.")
def create(
secret_name: str = typer.Argument(
..., help="Secret name, can have multiple key-value pairs"
),
keyvalues: list[str] = typer.Argument(..., help="Space-separated KEY-VALUE items"),
force: bool = typer.Option(
False, "--force", help="Overwrite the secret if it already exists"
),
):
rich.print(
f"{"Creating" if not force else "Force creating"} secret {secret_name!r}"
)
"""
Create a secret.
Args:
secret_name (str): Secret name, can have multiple key-value pairs.
keyvalues (list[str]): Space-separated KEY-VALUE items.
"""
rich.print(f"Creating secret {secret_name!r}")
asyncio.run(create_secret(secret_name, keyvalues))
rich.print("Secret created successfully!")
rich.print("[green]Secret created successfully![/green]")


@app.command(help="List all workflow definitions")
@app.command(help="List all secrets")
def list():
"""Commit a workflow definition to the database."""
"""
List all secrets.
"""
data = asyncio.run(list_secrets())
table = dynamic_table(title="Secrets", data=data)
Console().print(table)


@app.command(no_args_is_help=True, help="Delete a secret.")
def delete(secret_name: str = typer.Argument(..., help="Secret name")):
"""
Delete a secret.
Args:
secret_name (str): Secret name.
"""
rich.print(f"Deleting secret {secret_name!r}")
asyncio.run(delete_secret(secret_name))
rich.print("[green]Secret deleted successfully![/green]")

0 comments on commit fa6df0d

Please sign in to comment.