New CLI actions added Signed-off-by: Imesh Gunaratne <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/7a78a988 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/7a78a988 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/7a78a988 Branch: refs/heads/stratos-4.1.x Commit: 7a78a9886fa7057577ba6e6c2715f18942f9f265 Parents: ea42e1e Author: Milindu Sanoj Kumarage <[email protected]> Authored: Wed Jul 29 09:57:26 2015 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Tue Oct 13 16:32:46 2015 +0530 ---------------------------------------------------------------------- .../src/main/python/cli/CLI.py | 96 ++++++++++++++++---- .../src/main/python/cli/Stratos.py | 58 +++++++++++- 2 files changed, 130 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/7a78a988/components/org.apache.stratos.python.cli/src/main/python/cli/CLI.py ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.python.cli/src/main/python/cli/CLI.py b/components/org.apache.stratos.python.cli/src/main/python/cli/CLI.py index 554ba49..deaf90c 100755 --- a/components/org.apache.stratos.python.cli/src/main/python/cli/CLI.py +++ b/components/org.apache.stratos.python.cli/src/main/python/cli/CLI.py @@ -2,6 +2,7 @@ from cmd2 import * from Utils import * from Stratos import * import Configs +from cli.exceptions import AuthenticationError class CLI(Cmd): @@ -9,12 +10,19 @@ class CLI(Cmd): prompt = Configs.stratos_prompt # resolving the '-' issue - Cmd.legalChars += '-' - Cmd.shortcuts.update({'list-user': 'list_user'}) + Cmd.legalChars = '-' + Cmd.legalChars + + def __init__(self): + # resolving the '-' issue + [Cmd.shortcuts.update({a[3:].replace('_', '-'): a[3:]}) for a in self.get_names() if a.startswith('do_')] + Cmd.__init__(self) def completenames(self, text, *ignored): + # resolving the '-' issue return [a[3:].replace('_', '-') for a in self.get_names() if a.replace('_', '-').startswith('do-'+text)] + + @options([ make_option('-u', '--username', type="str", help="Username of the user"), make_option('-p', '--password', type="str", help="Password of the user") @@ -49,15 +57,42 @@ class CLI(Cmd): @auth def do_list_users(self, line , opts=None): """Illustrate the base class method use.""" - r = requests.get(Configs.stratos_api_url + 'users', - auth=(Configs.stratos_username, Configs.stratos_password), verify=False) - users = r.json() + try: + users = Stratos.list_users() + table = PrintableTable() + rows = [["Name", "language"]] + table.set_cols_align(["l", "r"]) + table.set_cols_valign(["t", "m"]) + for user in users: + rows.append([user['role'], user['userName']]) + table.add_rows(rows) + table.print_table() + except AuthenticationError as e: + self.perror("sdc") + + @options([ + make_option('-u', '--username', type="str", help="Username of the user"), + make_option('-p', '--password', type="str", help="Password of the user") + ]) + @auth + def do_list_network_partitions(self, line , opts=None): + """Illustrate the base class method use.""" + repositories = Stratos.list_network_partitions() + tree = PrintableTree(repositories) + tree.print_tree() + + @options([ + make_option('-u', '--username', type="str", help="Username of the user"), + make_option('-p', '--password', type="str", help="Password of the user") + ]) + @auth + def do_list_cartridges(self, line , opts=None): + """Illustrate the base class method use.""" + cartridges = Stratos.list_cartridges() table = PrintableTable() - rows = [["Name", "language"]] - table.set_cols_align(["l", "r"]) - table.set_cols_valign(["t", "m"]) - for user in users: - rows.append([user['role'], user['userName']]) + rows = [["Type", "Category", "Name", "Description", "Version", "Multi-Tenant"]] + for cartridge in cartridges: + rows.append([cartridge['type'], cartridge['category'], cartridge['displayName'], cartridge['description'], cartridge['version'], cartridge['multiTenant']]) table.add_rows(rows) table.print_table() @@ -66,16 +101,39 @@ class CLI(Cmd): make_option('-p', '--password', type="str", help="Password of the user") ]) @auth - def do_networkpartitions(self, line , opts=None): + def do_list_cartridges_group(self, line , opts=None): """Illustrate the base class method use.""" - r = requests.get(Configs.stratos_api_url + 'networkPartitions', - auth=(Configs.stratos_username, Configs.stratos_password), verify=False) - print(r) - print(r.text) - repositories = r.json() - tree = PrintableTree(repositories) - tree.print_tree() + cartridges_groups = Stratos.list_cartridges_group() + table = PrintableTable() + rows = [["Name", "No. of cartridges", "No of groups", "Dependency scaling"]] + for cartridges_group in cartridges_groups: + rows.append([cartridges_group['name'], cartridges_group['category'], cartridges_group['displayName'], cartridge['description'], cartridge['version'], cartridge['multiTenant']]) + table.add_rows(rows) + table.print_table() + + @options([ + make_option('-u', '--username', type="str", help="Username of the user"), + make_option('-p', '--password', type="str", help="Password of the user") + ]) + @auth + def do_list_applications(self, line , opts=None): + """Illustrate the base class method use.""" + applications = Stratos.list_applications() + if not applications: + print("No applications found") + else: + table = PrintableTable() + rows = [["Type", "Category", "Name", "Description", "Version", "Multi-Tenant"]] + for application in applications: + rows.append([application['type'], application['category'], application['displayName'], application['description'], application['version'], application['multiTenant']]) + table.add_rows(rows) + table.print_table() + @options([]) def do_deploy_user(self, line , opts=None): """Illustrate the base class method use.""" - print("hello User") \ No newline at end of file + print("hello User") + try: + Stratos.deploy_user() + except ValueError as e: + self.perror("sdc") \ No newline at end of file http://git-wip-us.apache.org/repos/asf/stratos/blob/7a78a988/components/org.apache.stratos.python.cli/src/main/python/cli/Stratos.py ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.python.cli/src/main/python/cli/Stratos.py b/components/org.apache.stratos.python.cli/src/main/python/cli/Stratos.py index 360353d..494bc21 100755 --- a/components/org.apache.stratos.python.cli/src/main/python/cli/Stratos.py +++ b/components/org.apache.stratos.python.cli/src/main/python/cli/Stratos.py @@ -1,5 +1,7 @@ import requests import Configs +from cli.exceptions.AuthenticationError import AuthenticationError + class Stratos: @@ -10,17 +12,63 @@ class Stratos: @staticmethod def list_users(): - r = requests.get(Configs.stratos_url + 'users', + r = requests.get(Configs.stratos_api_url + 'users', auth=(Configs.stratos_username, Configs.stratos_password), verify=False) - if r.status_code is 200: + + if r.status_code == 200: return r.json() + elif r.status_code == 400: + raise requests.HTTPError() + elif r.status_code == 401: + raise AuthenticationError() - elif r.status_code is 400: + @staticmethod + def list_network_partitions(): + r = requests.get(Configs.stratos_api_url + 'networkPartitions', + auth=(Configs.stratos_username, Configs.stratos_password), verify=False) + return r.json() + + @staticmethod + def list_applications(): + r = requests.get(Configs.stratos_api_url + 'applications', + auth=(Configs.stratos_username, Configs.stratos_password), verify=False) + if r.status_code == 200: + return r.json() + elif r.status_code == 400: raise requests.HTTPError() + elif r.status_code == 401: + raise AuthenticationError() + elif r.status_code == 404: + if r.json() and r.json()['errorMessage'] == "No applications found": + return [] + else: + raise requests.HTTPError() + @staticmethod - def network_partitions(): - pass + def list_cartridges(): + r = requests.get(Configs.stratos_api_url + 'cartridges', + auth=(Configs.stratos_username, Configs.stratos_password), verify=False) + return r.json() + @staticmethod + def list_cartridges_groups(): + r = requests.get(Configs.stratos_api_url + 'cartridgeGroups', + auth=(Configs.stratos_username, Configs.stratos_password), verify=False) + if r.status_code == 200: + return r.json() + elif r.status_code == 400: + raise requests.HTTPError() + elif r.status_code == 401: + raise AuthenticationError() + elif r.status_code == 404: + if r.json() and r.json()['errorMessage'] == "No cartridges found": + return [] + else: + raise requests.HTTPError() + + @staticmethod + def deploy_user(): + raise ValueError
