Skip to content

Commit

Permalink
session_id flag added
Browse files Browse the repository at this point in the history
  • Loading branch information
KatHellg committed Nov 8, 2024
1 parent 49043f8 commit 035f652
Show file tree
Hide file tree
Showing 9 changed files with 187 additions and 33 deletions.
14 changes: 11 additions & 3 deletions fedn/cli/client_cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,11 @@ def client_cmd(ctx):
@click.option("-H", "--host", required=False, default=CONTROLLER_DEFAULTS["host"], help="Hostname of controller (api)")
@click.option("-P", "--port", required=False, default=CONTROLLER_DEFAULTS["port"], help="Port of controller (api)")
@click.option("-t", "--token", required=False, help="Authentication token")
@click.option("-id", "--id", required=False, help="Client ID")
@click.option("--n_max", required=False, help="Number of items to list")
@client_cmd.command("list")
@click.pass_context
def list_clients(ctx, protocol: str, host: str, port: str, token: str = None, n_max: int = None):
def list_clients(ctx, protocol: str, host: str, port: str, token: str = None, id: str = None, n_max: int = None):
"""Return:
------
- count: number of clients
Expand All @@ -60,12 +61,19 @@ def list_clients(ctx, protocol: str, host: str, port: str, token: str = None, n_
if _token:
headers["Authorization"] = _token

if id:
url = f"{url}{id}"
headers["id"] = id


click.echo(f"\nListing clients: {url}\n")
click.echo(f"Headers: {headers}")

try:
response = requests.get(url, headers=headers)
print_response(response, "clients")
if id:
print_response(response, "client", True)
else:
print_response(response, "clients", False)
except requests.exceptions.ConnectionError:
click.echo(f"Error: Could not connect to {url}")

Expand Down
14 changes: 11 additions & 3 deletions fedn/cli/combiner_cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,11 @@ def start_cmd(ctx, discoverhost, discoverport, token, name, host, port, fqdn, se
@click.option("-H", "--host", required=False, default=CONTROLLER_DEFAULTS["host"], help="Hostname of controller (api)")
@click.option("-P", "--port", required=False, default=CONTROLLER_DEFAULTS["port"], help="Port of controller (api)")
@click.option("-t", "--token", required=False, help="Authentication token")
@click.option("-id", "--id", required=False, help="Combiner ID")
@click.option("--n_max", required=False, help="Number of items to list")
@combiner_cmd.command("list")
@click.pass_context
def list_combiners(ctx, protocol: str, host: str, port: str, token: str = None, n_max: int = None):
def list_combiners(ctx, protocol: str, host: str, port: str, token: str = None, id: str = None, n_max: int = None):
"""Return:
------
- count: number of combiners
Expand All @@ -88,11 +89,18 @@ def list_combiners(ctx, protocol: str, host: str, port: str, token: str = None,
if _token:
headers["Authorization"] = _token

if id:
url = f"{url}{id}"
headers["id"] = id


click.echo(f"\nListing combiners: {url}\n")
click.echo(f"Headers: {headers}")

try:
response = requests.get(url, headers=headers)
print_response(response, "combiners")
if id:
print_response(response, "combiner", True)
else:
print_response(response, "combiners", False)
except requests.exceptions.ConnectionError:
click.echo(f"Error: Could not connect to {url}")
34 changes: 31 additions & 3 deletions fedn/cli/model_cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@ def model_cmd(ctx):
@click.option("-H", "--host", required=False, default=CONTROLLER_DEFAULTS["host"], help="Hostname of controller (api)")
@click.option("-P", "--port", required=False, default=CONTROLLER_DEFAULTS["port"], help="Port of controller (api)")
@click.option("-t", "--token", required=False, help="Authentication token")
@click.option("-id", "--id", required=False, help="Model ID")
@click.option("-session_id", "--session_id", required=False, help="models in session with given session id")
@click.option("--n_max", required=False, help="Number of items to list")
@model_cmd.command("list")
@click.pass_context
def list_models(ctx, protocol: str, host: str, port: str, token: str = None, n_max: int = None):
def list_models(ctx, protocol: str, host: str, port: str, token: str = None, id: str = None, session_id: str = None, n_max: int = None):
"""Return:
------
- count: number of models
Expand All @@ -38,11 +40,37 @@ def list_models(ctx, protocol: str, host: str, port: str, token: str = None, n_m
if _token:
headers["Authorization"] = _token

if id:
url = f"{url}{id}"
headers["id"] = id


click.echo(f"\nListing models: {url}\n")
click.echo(f"Headers: {headers}")

try:
response = requests.get(url, headers=headers)
print_response(response, "models")
if session_id:
if response.status_code == 200:
json_data = response.json()
count, result = json_data.values()
click.echo(f"Found {count} models")
click.echo("\n---------------------------------\n")
for obj in result:
if obj.get("session_id")==session_id:
click.echo("{")
for k, v in obj.items():
click.echo(f"\t{k}: {v}")
click.echo("}")

elif response.status_code == 500:
json_data = response.json()
click.echo(f'Error: {json_data["message"]}')
else:
click.echo(f"Error: {response.status_code}")
else:
if id:
print_response(response, "model", True, session_id)
else:
print_response(response, "models", False, session_id)
except requests.exceptions.ConnectionError:
click.echo(f"Error: Could not connect to {url}")
14 changes: 11 additions & 3 deletions fedn/cli/package_cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,11 @@ def create_cmd(ctx, path, name):
@click.option("-H", "--host", required=False, default=CONTROLLER_DEFAULTS["host"], help="Hostname of controller (api)")
@click.option("-P", "--port", required=False, default=CONTROLLER_DEFAULTS["port"], help="Port of controller (api)")
@click.option("-t", "--token", required=False, help="Authentication token")
@click.option("-id", "--id", required=False, help="Package ID")
@click.option("--n_max", required=False, help="Number of items to list")
@package_cmd.command("list")
@click.pass_context
def list_packages(ctx, protocol: str, host: str, port: str, token: str = None, n_max: int = None):
def list_packages(ctx, protocol: str, host: str, port: str, token: str = None, id: str = None, n_max: int = None):
"""Return:
------
- count: number of packages
Expand All @@ -66,11 +67,18 @@ def list_packages(ctx, protocol: str, host: str, port: str, token: str = None, n
if _token:
headers["Authorization"] = _token

if id:
url = f"{url}{id}"
headers["id"] = id


click.echo(f"\nListing packages: {url}\n")
click.echo(f"Headers: {headers}")

try:
response = requests.get(url, headers=headers)
print_response(response, "packages")
if id:
print_response(response, "package", True)
else:
print_response(response, "packages", False)
except requests.exceptions.ConnectionError:
click.echo(f"Error: Could not connect to {url}")
35 changes: 32 additions & 3 deletions fedn/cli/round_cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@ def round_cmd(ctx):
@click.option("-p", "--protocol", required=False, default=CONTROLLER_DEFAULTS["protocol"], help="Communication protocol of controller (api)")
@click.option("-H", "--host", required=False, default=CONTROLLER_DEFAULTS["host"], help="Hostname of controller (api)")
@click.option("-P", "--port", required=False, default=CONTROLLER_DEFAULTS["port"], help="Port of controller (api)")
@click.option("-id", "--id", required=False, help="Round ID")
@click.option("-session_id", "--session_id", required=False, help="Rounds in session with given session id")
@click.option("-t", "--token", required=False, help="Authentication token")
@click.option("--n_max", required=False, help="Number of items to list")
@round_cmd.command("list")
@click.pass_context
def list_rounds(ctx, protocol: str, host: str, port: str, token: str = None, n_max: int = None):
def list_rounds(ctx, protocol: str, host: str, port: str, token: str = None, id: str = None, session_id: str = None, n_max: int = None):
"""Return:
------
- count: number of rounds
Expand All @@ -38,11 +40,38 @@ def list_rounds(ctx, protocol: str, host: str, port: str, token: str = None, n_m
if _token:
headers["Authorization"] = _token

if id:
url = f"{url}{id}"
headers["id"] = id

click.echo(f"\nListing rounds: {url}\n")
click.echo(f"Headers: {headers}")

try:
response = requests.get(url, headers=headers)
print_response(response, "rounds")
if session_id:
if response.status_code == 200:
json_data = response.json()
count, result = json_data.values()
click.echo(f"Found {count} rounds")
click.echo("\n---------------------------------\n")
for obj in result:
if obj.get("round_config").get("session_id")==session_id:
click.echo("{")
for k, v in obj.items():
click.echo(f"\t{k}: {v}")
click.echo("}")

elif response.status_code == 500:
json_data = response.json()
click.echo(f'Error: {json_data["message"]}')
else:
click.echo(f"Error: {response.status_code}")
else:
if id:
print_response(response, "round", True, session_id)
else:
print_response(response, "rounds", False, session_id)


except requests.exceptions.ConnectionError:
click.echo(f"Error: Could not connect to {url}")
16 changes: 12 additions & 4 deletions fedn/cli/session_cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@ def session_cmd(ctx):
@click.option("-H", "--host", required=False, default=CONTROLLER_DEFAULTS["host"], help="Hostname of controller (api)")
@click.option("-P", "--port", required=False, default=CONTROLLER_DEFAULTS["port"], help="Port of controller (api)")
@click.option("-t", "--token", required=False, help="Authentication token")
@click.option("-id", "--id", required=False, help="Session ID")
@click.option("--n_max", required=False, help="Number of items to list")
@session_cmd.command("list")
@click.pass_context
def list_sessions(ctx, protocol: str, host: str, port: str, token: str = None, n_max: int = None):
def list_sessions(ctx, protocol: str, host: str, port: str, token: str = None, id: str = None, n_max: int = None):
"""Return:
------
- count: number of sessions
Expand All @@ -38,11 +39,18 @@ def list_sessions(ctx, protocol: str, host: str, port: str, token: str = None, n
if _token:
headers["Authorization"] = _token

if id:
url = f"{url}{id}"
headers["id"] = id


click.echo(f"\nListing sessions: {url}\n")
click.echo(f"Headers: {headers}")

try:
response = requests.get(url, headers=headers)
print_response(response, "sessions")
if id:
print_response(response, "session", True)
else:
print_response(response, "sessions", False)
except requests.exceptions.ConnectionError:
click.echo(f"Error: Could not connect to {url}")
click.echo(f"Error: Could not connect to {url}")
25 changes: 17 additions & 8 deletions fedn/cli/shared.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,26 +64,35 @@ def get_client_package_dir(path: str) -> str:


# Print response from api (list of entities)
def print_response(response, entity_name: str):
def print_response(response, entity_name: str, so, session_id):
"""Prints the api response to the cli.
:param response:
type: array
description: list of entities
:param entity_name:
type: string
description: name of entity
:param so:
type: boolean
desriptions: single output format (y/n)
return: None
"""
if response.status_code == 200:
json_data = response.json()
count, result = json_data.values()
click.echo(f"Found {count} {entity_name}")
click.echo("\n---------------------------------\n")
for obj in result:
click.echo("{")
for k, v in obj.items():
if so:
click.echo(f"Found {entity_name}")
click.echo("\n---------------------------------\n")
for k, v in json_data.items():
click.echo(f"\t{k}: {v}")
click.echo("}")
else:
count, result = json_data.values()
click.echo(f"Found {count} {entity_name}")
click.echo("\n---------------------------------\n")
for obj in result:
click.echo("{")
for k, v in obj.items():
click.echo(f"\t{k}: {v}")
click.echo("}")
elif response.status_code == 500:
json_data = response.json()
click.echo(f'Error: {json_data["message"]}')
Expand Down
34 changes: 31 additions & 3 deletions fedn/cli/status_cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,12 @@ def status_cmd(ctx):
@click.option("-H", "--host", required=False, default=CONTROLLER_DEFAULTS["host"], help="Hostname of controller (api)")
@click.option("-P", "--port", required=False, default=CONTROLLER_DEFAULTS["port"], help="Port of controller (api)")
@click.option("-t", "--token", required=False, help="Authentication token")
@click.option("-id", "--id", required=False, help="Status ID")
@click.option("-session_id", "--session_id", required=False, help="statuses with given session id")
@click.option("--n_max", required=False, help="Number of items to list")
@status_cmd.command("list")
@click.pass_context
def list_statuses(ctx, protocol: str, host: str, port: str, token: str = None, n_max: int = None):
def list_statuses(ctx, protocol: str, host: str, port: str, token: str = None, id: str = None, session_id: str = None, n_max: int = None):
"""Return:
------
- count: number of statuses
Expand All @@ -37,11 +39,37 @@ def list_statuses(ctx, protocol: str, host: str, port: str, token: str = None, n
if _token:
headers["Authorization"] = _token

if id:
url = f"{url}{id}"
headers["id"] = id


click.echo(f"\nListing statuses: {url}\n")
click.echo(f"Headers: {headers}")

try:
response = requests.get(url, headers=headers)
print_response(response, "statuses")
if session_id:
if response.status_code == 200:
json_data = response.json()
count, result = json_data.values()
click.echo(f"Found {count} statuses")
click.echo("\n---------------------------------\n")
for obj in result:
if obj.get("session_id")==session_id:
click.echo("{")
for k, v in obj.items():
click.echo(f"\t{k}: {v}")
click.echo("}")

elif response.status_code == 500:
json_data = response.json()
click.echo(f'Error: {json_data["message"]}')
else:
click.echo(f"Error: {response.status_code}")
else:
if id:
print_response(response, "status", True)
else:
print_response(response, "statuses", False)
except requests.exceptions.ConnectionError:
click.echo(f"Error: Could not connect to {url}")
Loading

0 comments on commit 035f652

Please sign in to comment.