azure-devops/azext_devops/dev/team/_format.py (273 lines of code) (raw):
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
from __future__ import print_function
from collections import OrderedDict
from knack.util import CLIError
from azext_devops.dev.common.format import trim_for_display, date_time_to_only_date
def transform_extension_search_results_table_output(result):
table_output = []
for item in result:
table_output.append(_transform_extension_search_result_row(item))
return table_output
def _transform_extension_search_result_row(row):
table_row = OrderedDict()
table_row['Publisher Name'] = row['publisher']['publisherName']
table_row['Extension Name'] = row['extensionName']
table_row['Name'] = row['displayName']
return table_row
def transform_extension_table_output(result):
table_output = [_transform_extension_row(result)]
return table_output
def transform_extensions_table_output(result):
table_output = []
for item in sorted(result, key=_get_extension_key):
table_output.append(_transform_extension_row(item))
return table_output
def _transform_extension_row(row):
table_row = OrderedDict()
table_row['Publisher Id'] = trim_for_display(row['publisherId'], 10)
table_row['Extension Id'] = trim_for_display(row['extensionId'], 20)
table_row['Name'] = trim_for_display(row['extensionName'], 20)
table_row['Version '] = trim_for_display(row['version'], 20)
table_row['Last Updated '] = date_time_to_only_date(row['lastPublished'])
table_row['States'] = trim_for_display(row['installState']['flags'], 20)
table_row['Flags'] = trim_for_display(row['flags'], 20)
return table_row
def transform_projects_table_output(result):
table_output = []
for item in sorted(result['value'], key=_get_project_key):
table_output.append(_transform_project_row(item))
return table_output
def transform_project_table_output(result):
table_output = [_transform_project_row(result)]
return table_output
def _transform_project_row(row):
from .project import (PROCESS_TEMPLATE_CAPABILITY_NAME,
VERSION_CONTROL_CAPABILITY_NAME,
VERSION_CONTROL_CAPABILITY_ATTRIBUTE_NAME)
table_row = OrderedDict()
table_row['ID'] = row['id']
table_row['Name'] = row['name']
table_row['Visibility'] = row['visibility'].capitalize()
if 'capabilities' in row:
capabilities = row['capabilities']
if PROCESS_TEMPLATE_CAPABILITY_NAME in capabilities:
process_capabilities = capabilities[PROCESS_TEMPLATE_CAPABILITY_NAME]
if 'templateName' in process_capabilities:
table_row['Process'] = process_capabilities['templateName']
if VERSION_CONTROL_CAPABILITY_NAME in capabilities:
version_capabilities = capabilities[VERSION_CONTROL_CAPABILITY_NAME]
if VERSION_CONTROL_CAPABILITY_ATTRIBUTE_NAME in version_capabilities:
table_row['Source Control'] = version_capabilities[VERSION_CONTROL_CAPABILITY_ATTRIBUTE_NAME]
return table_row
def transform_service_endpoints_table_output(result):
table_output = []
for item in sorted(result, key=_get_service_endpoint_key):
table_output.append(_transform_service_endpoint_row(item))
return table_output
def _transform_service_endpoint_row(row):
table_row = OrderedDict()
table_row['ID'] = row['id']
table_row['Name'] = row['name']
table_row['Type'] = row['type']
table_row['Is Ready'] = row['isReady']
table_row['Created By'] = row['createdBy']['displayName']
return table_row
def transform_authorized_service_endpoint_table_output(result):
table_output = []
table_output.append(_transform_authorized_service_endpoint_row(result))
return table_output
def _transform_authorized_service_endpoint_row(row):
table_row = OrderedDict()
table_row['ID'] = row['id']
table_row['Allow Pipelines'] = row['authorized']
table_row['Name'] = row['name']
table_row['Type'] = row['type']
table_row['Is Ready'] = row['isReady']
table_row['Created By'] = row['createdBy']['displayName']
return table_row
def transform_groups_table_output(result):
table_output = []
if result['continuationToken'] is not None:
print('Showing only 500 groups. ' +
'To list next set of groups use this token as --continuation-token argument and run the command again.' +
' TOKEN:', result['continuationToken'])
for item in result['graphGroups']:
table_output.append(_transform_group_row(item))
return table_output
def transform_group_table_output(result):
table_output = [_transform_group_show_table_output(result)]
return table_output
def _transform_group_show_table_output(row):
table_row = OrderedDict()
table_row['Name'] = row['principalName']
table_row['Description'] = row['description']
return table_row
def _transform_group_row(row):
table_row = OrderedDict()
table_row['Name'] = row['principalName']
table_row['Descriptor'] = row['descriptor']
return table_row
def transform_memberships_table_output(result):
table_output = []
for item in result:
table_output.append(_transform_membership_row(result[item]))
return table_output
def transform_membership_table_output(result):
table_output = []
for item in result:
table_row = OrderedDict()
row = result[item]
if row['subjectKind'] == 'user':
table_row['Name'] = row['displayName']
else:
table_row['Name'] = row['principalName']
table_row['Type'] = row['subjectKind']
table_row['Email'] = row['mailAddress']
table_output.append(table_row)
return table_output
def _transform_membership_row(row):
table_row = OrderedDict()
if row['subjectKind'] == 'user':
table_row['Name'] = row['displayName']
else:
table_row['Name'] = row['principalName']
table_row['Type'] = row['subjectKind']
table_row['Email'] = row['mailAddress']
table_row['Descriptor'] = row['descriptor']
return table_row
def transform_namespaces_table_output(result):
table_output = []
for item in result:
table_output.append(_transform_namespace_row(item))
return table_output
def _transform_namespace_row(row):
table_row = OrderedDict()
table_row['Id'] = row['namespaceId']
table_row['Name'] = row['name']
return table_row
def transform_namespace_table_output(result):
table_output = []
for item in result[0]['actions']:
table_output.append(_transform_namespace_details_row(item))
return table_output
def _transform_namespace_details_row(row):
table_row = OrderedDict()
table_row['Name'] = row['name']
table_row['Permission Description'] = row['displayName']
table_row['Permission Bit'] = row['bit']
return table_row
def transform_acl_output(result):
table_output = []
for item in result:
table_output.append(_transform_acl_details_row(item))
return table_output
def _transform_acl_details_row(row):
if len(row['acesDictionary']) > 1:
raise CLIError('More than one entry found in Aces dictionary for this user/group.')
table_row = OrderedDict()
table_row['token'] = row['token']
ace = list(row['acesDictionary'].values())[0]
if row['includeExtendedInfo']:
if ace['extendedInfo']['effectiveAllow'] is not None:
table_row['Effective Allow'] = ace['extendedInfo']['effectiveAllow']
else:
table_row['Effective Allow'] = 0
if ace['extendedInfo']['effectiveDeny'] is not None:
table_row['Effective Deny'] = ace['extendedInfo']['effectiveDeny']
else:
table_row['Effective Deny'] = 0
return table_row
def transform_resolve_permission_bits(result):
table_output = []
ace_entry = list(result[0]['acesDictionary'].values())[0]
permissions = ace_entry['resolvedPermissions']
for permission in permissions:
table_output.append(_transform_resolve_bits_row(permission))
return table_output
def _transform_resolve_bits_row(row):
table_row = OrderedDict()
table_row['Name'] = row['name']
table_row['Bit'] = row['bit']
table_row['Permission Description'] = row['displayName']
table_row['Permission Value'] = row['effectivePermission']
return table_row
def transform_teams_table_output(result):
table_output = []
for item in sorted(result, key=_get_team_key):
table_output.append(_transform_team_row(item))
return table_output
def transform_team_table_output(result):
table_output = [_transform_team_row(result)]
return table_output
def _transform_team_row(row):
table_row = OrderedDict()
table_row['ID'] = row['id']
table_row['Name'] = row['name']
table_row['Description'] = row['description']
return table_row
def transform_wikis_table_output(result):
table_output = []
for item in sorted(result, key=_get_wiki_key):
table_output.append(_transform_wiki_row(item))
return table_output
def transform_wiki_table_output(result):
table_output = [_transform_wiki_row(result)]
return table_output
def _transform_wiki_row(row):
table_row = OrderedDict()
table_row['ID'] = row['id']
table_row['Name'] = row['name']
table_row['Type'] = row['type']
return table_row
def transform_wiki_page_table_output(result):
table_output = [_transform_wiki_page_row(result)]
return table_output
def _transform_wiki_page_row(row):
table_row = OrderedDict()
table_row['ETag'] = row['eTag']
table_row['Page Path'] = '\'{}\''.format(row['page']['path'])
table_row['Is Parent'] = row['page']['isParentPage']
table_row['order'] = row['page']['order']
return table_row
def transform_team_members_table_output(result):
table_output = []
for item in sorted(result, key=_get_member_key):
table_output.append(_transform_team_member_row(item))
return table_output
def _transform_team_member_row(row):
table_row = OrderedDict()
table_row['ID'] = row['identity']['id']
table_row['Name'] = row['identity']['displayName']
table_row['Email'] = row['identity']['uniqueName']
return table_row
def transform_users_table_output(result):
members = result['members']
table_output = []
for item in members:
table_output.append(_transform_user_row(item))
return table_output
def transform_user_table_output(result):
table_output = [_transform_user_row(result)]
return table_output
def _transform_user_row(row):
table_row = OrderedDict()
table_row['ID'] = row['id']
table_row['Display Name'] = row['user']['displayName']
table_row['Email'] = row['user']['mailAddress']
table_row['License Type'] = row['accessLevel']['accountLicenseType']
table_row['Access Level'] = row['accessLevel']['licenseDisplayName']
table_row['Status'] = row['accessLevel']['status']
return table_row
def _get_extension_key(extension):
return extension['extensionName'].lower()
def _get_permission_key(permission_row):
return permission_row['displayName'].lower()
def _get_service_endpoint_key(service_endpoint_row):
return service_endpoint_row['name'].lower()
def _get_project_key(project_row):
return project_row['name'].lower()
def _get_team_key(team_row):
return team_row['name'].lower()
def _get_wiki_key(wiki_row):
return wiki_row['name'].lower()
def _get_member_key(member_row):
return member_row['identity']['uniqueName'].lower()