diff --git a/client-test b/client-test new file mode 100644 index 0000000..742ef3c --- /dev/null +++ b/client-test @@ -0,0 +1,70 @@ +#!/usr/bin/env python +import click +from fast_api_client import Client +import json + +from fast_api_client.models import Environment,HTTPValidationError,ValidationError +from fast_api_client.api.default import root_get,get_inventory_api_v1_environments_inventory_post,create_environments_api_v1_environments_post,delete_environments_api_v1_environments_delete,list_environments_api_v1_environments_list_post,get_ports_api_v1_environments_ports_post +from fast_api_client.types import Response + +client = Client(base_url="http://bla:8000", timeout=120.0) + +@click.command(no_args_is_help=True) +@click.option("--create",'-c', type=(str),is_flag=False, help="Create environment (non root user)") +@click.option("--delete", '-d', type=(str),is_flag=False, help="Delete environment") +@click.option("--getlist", "-l", help="List environments") +@click.option("--inventory", "-i", type=(str), help="Get ansible inventory of environment") +@click.option("--ports", "-p", type=(str), help="Get ports of environment") +@click.option("--uid", '-u', type=(str),is_flag=False, help="Uniq identifier") +@click.version_option(version="1.0", prog_name="Dragontool client", message="%(prog)s version %(version)s") + +def dragontool_client(create, delete, getlist, inventory, uid, ports): + """Dragontool client for managing environments""" + if create: + response: Response[Environment] = create_environments_api_v1_environments_post.sync_detailed(client=client,json_body=Environment(username=create,uid=uid)) + #print(f"{response.status_code}") + if response.status_code == 200: + #click.echo(f"Environment {create} created!") + data = json.loads(response.content.decode('utf-8')) + print(data['uid']) + #print(f"{response.content.decode('utf-8')}") + elif response.status_code == 500: + click.echo(f"Environment {create} not created, could be it already exists!") + elif delete: + if uid is None: + click.echo(f"Missing uid, please add -u ") + else: + response: Response[Environment] = delete_environments_api_v1_environments_delete.sync_detailed(client=client,json_body=Environment(username=delete,uid=uid)) + if response.status_code == 200: + click.echo(f"Environment {delete} deleted!") + elif getlist: + response: Response[Environment] = list_environments_api_v1_environments_list_post.sync_detailed(client=client,json_body=Environment(username=getlist)) + response_json = json.loads(response.content.decode('utf-8')) + click.echo(f"Environments:") + for json_data in response_json: + if "uid" in json_data.keys(): + click.echo(f"\t- {json_data['uid']}") + #click.echo(f"{response.content.decode('utf-8')}") + elif inventory: + if uid is None: + click.echo(f"Missing uid, please add -u ") + else: + response: Response[Environment] = get_inventory_api_v1_environments_inventory_post.sync_detailed(client=client,json_body=Environment(username=inventory,uid=uid)) + click.echo(f"{response.content.decode('utf-8')}") + elif ports: + if uid is None: + click.echo(f"Missing uid, please add -u ") + else: + response: Response[Environment] = get_ports_api_v1_environments_ports_post.sync_detailed(client=client,json_body=Environment(username=ports,uid=uid)) + response_json = json.loads(response.content.decode('utf-8')) + for json_data in response_json: + if "container_pub_ssh_port" in json_data.keys(): + click.echo(f"SSH:\t{json_data['container_alias']} on {json_data['host_ip']}:{json_data['container_pub_ssh_port']}") + elif "container_pub_ldap_port" in json_data.keys(): + click.echo(f"LDAP:\t{json_data['container_alias']} on {json_data['host_ip']}:{json_data['container_pub_ldap_port']}\n") + #print(f"{data[0]}") + #print(f"{response.content.decode('utf-8')}") + #click.echo(f"{data}") + +if __name__ == '__main__': + dragontool_client()