X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osmclient%2Fscripts%2Fosm.py;h=1df00d680df0c86034362233bf5082a259949805;hb=54887b0f2caac06a58e6467ef917d2111696c1d3;hp=0ff195f76836770e54aa2a8157711b675e3e45e9;hpb=18f1fed0d116ffc4fd87296a358ab70d027305da;p=osm%2Fosmclient.git diff --git a/osmclient/scripts/osm.py b/osmclient/scripts/osm.py index 0ff195f..1df00d6 100755 --- a/osmclient/scripts/osm.py +++ b/osmclient/scripts/osm.py @@ -69,6 +69,21 @@ def check_client_version(obj, what, version='sol005'): return +def get_project(project_list, item): + # project_list = ctx.obj.project.list() + item_project_list = item.get('_admin').get('projects_read') + project_id = 'None' + project_name = 'None' + if item_project_list: + for p1 in item_project_list: + project_id = p1 + for p2 in project_list: + if p2['_id'] == project_id: + project_name = p2['name'] + return project_id, project_name + return project_id, project_name + + @click.group(context_settings=dict(help_option_names=['-h', '--help'], max_content_width=160)) @click.option('--hostname', default="127.0.0.1", @@ -2573,29 +2588,22 @@ def vim_list(ctx, filter, long): # resp = ctx.obj.vim.list(ro_update) if long: table = PrettyTable(['vim name', 'uuid', 'project', 'operational state', 'error details']) + project_list = ctx.obj.project.list() else: table = PrettyTable(['vim name', 'uuid', 'operational state']) for vim in resp: if long: - vim_details = ctx.obj.vim.get(vim['uuid']) - if 'vim_password' in vim_details: - vim_details['vim_password']='********' - logger.debug('VIM details: {}'.format(yaml.safe_dump(vim_details))) - vim_state = vim_details['_admin'].get('operationalState', '-') + if 'vim_password' in vim: + vim['vim_password']='********' + logger.debug('VIM details: {}'.format(yaml.safe_dump(vim))) + vim_state = vim['_admin'].get('operationalState', '-') error_details = 'N/A' if vim_state == 'ERROR': - error_details = vim_details['_admin'].get('detailed-status', 'Not found') - project_list = ctx.obj.project.list() - vim_project_list = vim_details.get('_admin').get('projects_read') - project_id = 'None' - project_name = 'None' - if vim_project_list: - project_id = vim_project_list[0] - for p in project_list: - if p['_id'] == project_id: - project_name = p['name'] - break - table.add_row([vim['name'], vim['uuid'], '{} ({})'.format(project_name, project_id), + error_details = vim['_admin'].get('detailed-status', 'Not found') + project_id, project_name = get_project(project_list, vim) + #project_info = '{} ({})'.format(project_name, project_id) + project_info = project_name + table.add_row([vim['name'], vim['uuid'], project_info, vim_state, wrap_text(text=error_details, width=80)]) else: table.add_row([vim['name'], vim['uuid'], vim['_admin'].get('operationalState', '-')]) @@ -3129,8 +3137,9 @@ def k8scluster_delete(ctx, name, force): help='restricts the list to the K8s clusters matching the filter') @click.option('--literal', is_flag=True, help='print literally, no pretty table') +@click.option('--long', is_flag=True, help='get more details') @click.pass_context -def k8scluster_list(ctx, filter, literal): +def k8scluster_list(ctx, filter, literal, long): """list all K8s clusters""" # try: check_client_version(ctx.obj, ctx.command.name) @@ -3140,11 +3149,30 @@ def k8scluster_list(ctx, filter, literal): if literal: print(yaml.safe_dump(resp, indent=4, default_flow_style=False)) return - table = PrettyTable(['Name', 'Id', 'Version', 'VIM', 'K8s-nets', 'Operational State', 'Description']) + if long: + table = PrettyTable(['Name', 'Id', 'Project', 'Version', 'VIM', 'K8s-nets', + 'Operational State', 'Op. state (details)', 'Description', 'Detailed status']) + project_list = ctx.obj.project.list() + else: + table = PrettyTable(['Name', 'Id', 'VIM', 'Operational State', 'Op. state details']) for cluster in resp: - table.add_row([cluster['name'], cluster['_id'], cluster['k8s_version'], cluster['vim_account'], - json.dumps(cluster['nets']), cluster["_admin"]["operationalState"], - trunc_text(cluster.get('description') or '', 40)]) + op_state_details = "Helm: {}\nJuju: {}".format( + cluster["_admin"].get("helm-chart", "-").get("operationalState", "-"), + cluster["_admin"].get("juju-bundle", "-").get("operationalState", "-")) + if long: + logger.debug('Cluster details: {}'.format(yaml.safe_dump(cluster))) + project_id, project_name = get_project(project_list, cluster) + #project_info = '{} ({})'.format(project_name, project_id) + project_info = project_name + detailed_status = cluster["_admin"].get("detailed-status","-") + table.add_row([cluster['name'], cluster['_id'], project_info, + cluster['k8s_version'], cluster['vim_account'], + json.dumps(cluster['nets']), cluster["_admin"]["operationalState"], + op_state_details, trunc_text(cluster.get('description') or '', 40), + wrap_text(text=detailed_status, width=40)]) + else: + table.add_row([cluster['name'], cluster['_id'], cluster['vim_account'], + cluster["_admin"]["operationalState"], op_state_details]) table.align = 'l' print(table) # except ClientException as e: