Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix/SK-1127 | add session_id flag #742

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This header should not be needed.



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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove print of hearder


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}")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove


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}")
33 changes: 30 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,36 @@ 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}")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove


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}")
elif 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}")
34 changes: 31 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,37 @@ 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}")
elif 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}")
14 changes: 11 additions & 3 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}")
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)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove (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()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should consider using json pretty prints instead, however I would prefer not introducing a new dependency. Save for other issue

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
33 changes: 30 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,36 @@ 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}")
elif 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}")
33 changes: 30 additions & 3 deletions fedn/cli/validation_cmd.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,12 @@ def validation_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="validation ID")
@click.option("-session_id", "--session_id", required=False, help="validations in session with given session id")
@click.option("--n_max", required=False, help="Number of items to list")
@validation_cmd.command("list")
@click.pass_context
def list_validations(ctx, protocol: str, host: str, port: str, token: str = None, n_max: int = None):
def list_validations(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 validations
Expand All @@ -38,11 +40,36 @@ def list_validations(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 validations: {url}\n")
click.echo(f"Headers: {headers}")

try:
response = requests.get(url, headers=headers)
print_response(response, "validations")
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}")
elif id:
print_response(response, "validation", True)
else:
print_response(response, "validations", False)
except requests.exceptions.ConnectionError:
click.echo(f"Error: Could not connect to {url}")
Loading