Added AZ command to list install version by location with optional table formatter

This commit is contained in:
Carlo Wisse 2022-08-11 08:49:18 +10:00
Родитель e5453d7718
Коммит 226e60c8cc
5 изменённых файлов: 30 добавлений и 14 удалений

1
.gitignore поставляемый
Просмотреть файл

@ -32,3 +32,4 @@ gomock_reflect_*
.idea* .idea*
/hack/hive-config/crds /hack/hive-config/crds
/hack/hive-config/hive-deployment.yaml /hack/hive-config/hive-deployment.yaml
cmd/aro/__debug_bin

Просмотреть файл

@ -4,7 +4,7 @@
import urllib3 import urllib3
from azext_aro.custom import rp_mode_development from azext_aro.custom import rp_mode_development
from azext_aro.vendored_sdks.azure.mgmt.redhatopenshift.v2022_04_01 import AzureRedHatOpenShiftClient from azext_aro.vendored_sdks.azure.mgmt.redhatopenshift.v2022_09_04 import AzureRedHatOpenShiftClient
from azure.cli.core.commands.client_factory import get_mgmt_service_client from azure.cli.core.commands.client_factory import get_mgmt_service_client
@ -21,6 +21,6 @@ def cf_aro(cli_ctx, *_):
client = get_mgmt_service_client(cli_ctx, client = get_mgmt_service_client(cli_ctx,
AzureRedHatOpenShiftClient, AzureRedHatOpenShiftClient,
**opt_args).open_shift_clusters **opt_args)
return client return client

Просмотреть файл

@ -23,3 +23,11 @@ def aro_show_table_format(result):
WorkerCount=sum(wp['count'] or 0 for wp in worker_profiles), WorkerCount=sum(wp['count'] or 0 for wp in worker_profiles),
URL=result['consoleProfile']['url'], URL=result['consoleProfile']['url'],
) )
def aro_version_table_format(result):
return [aro_build_version_table(r) for r in result]
def aro_build_version_table(result):
return collections.OrderedDict(
Version=result
)

Просмотреть файл

@ -5,12 +5,13 @@ from azure.cli.core.commands import CliCommandType
from azext_aro._client_factory import cf_aro from azext_aro._client_factory import cf_aro
from azext_aro._format import aro_show_table_format from azext_aro._format import aro_show_table_format
from azext_aro._format import aro_list_table_format from azext_aro._format import aro_list_table_format
from azext_aro._format import aro_version_table_format
from azext_aro._help import helps # pylint: disable=unused-import from azext_aro._help import helps # pylint: disable=unused-import
def load_command_table(self, _): def load_command_table(self, _):
aro_sdk = CliCommandType( aro_sdk = CliCommandType(
operations_tmpl='azext_aro.vendored_sdks.azure.mgmt.redhatopenshift.v2022_04_01.operations#OpenShiftClustersOperations.{}', # pylint: disable=line-too-long operations_tmpl='azext_aro.vendored_sdks.azure.mgmt.redhatopenshift.v2022_09_04.operations#OpenShiftClustersOperations.{}', # pylint: disable=line-too-long
client_factory=cf_aro) client_factory=cf_aro)
with self.command_group('aro', aro_sdk, client_factory=cf_aro) as g: with self.command_group('aro', aro_sdk, client_factory=cf_aro) as g:
@ -23,3 +24,5 @@ def load_command_table(self, _):
g.custom_command('list-credentials', 'aro_list_credentials') g.custom_command('list-credentials', 'aro_list_credentials')
g.custom_command('get-admin-kubeconfig', 'aro_list_admin_credentials') g.custom_command('get-admin-kubeconfig', 'aro_list_admin_credentials')
g.custom_command('list-install-versions', 'aro_list_install_versions', table_transformer=aro_version_table_format)

Просмотреть файл

@ -5,7 +5,7 @@ import random
import os import os
from base64 import b64decode from base64 import b64decode
import azext_aro.vendored_sdks.azure.mgmt.redhatopenshift.v2022_04_01.models as openshiftcluster import azext_aro.vendored_sdks.azure.mgmt.redhatopenshift.v2022_09_04.models as openshiftcluster
from azure.cli.command_modules.role import GraphError from azure.cli.command_modules.role import GraphError
from azure.cli.core.commands.client_factory import get_mgmt_service_client from azure.cli.core.commands.client_factory import get_mgmt_service_client
@ -146,7 +146,7 @@ def aro_create(cmd, # pylint: disable=too-many-locals
sp_obj_ids = [client_sp_id, rp_client_sp_id] sp_obj_ids = [client_sp_id, rp_client_sp_id]
ensure_resource_permissions(cmd.cli_ctx, oc, True, sp_obj_ids) ensure_resource_permissions(cmd.cli_ctx, oc, True, sp_obj_ids)
return sdk_no_wait(no_wait, client.begin_create_or_update, return sdk_no_wait(no_wait, client.open_shift_clusters.begin_create_or_update,
resource_group_name=resource_group_name, resource_group_name=resource_group_name,
resource_name=resource_name, resource_name=resource_name,
parameters=oc) parameters=oc)
@ -157,7 +157,7 @@ def aro_delete(cmd, client, resource_group_name, resource_name, no_wait=False):
rp_client_sp_id = None rp_client_sp_id = None
try: try:
oc = client.get(resource_group_name, resource_name) oc = client.open_shift_clusters.get(resource_group_name, resource_name)
except CloudError as e: except CloudError as e:
if e.status_code == 404: if e.status_code == 404:
raise ResourceNotFoundError(e.message) from e raise ResourceNotFoundError(e.message) from e
@ -180,23 +180,23 @@ def aro_delete(cmd, client, resource_group_name, resource_name, no_wait=False):
if rp_client_sp_id: if rp_client_sp_id:
ensure_resource_permissions(cmd.cli_ctx, oc, False, [rp_client_sp_id]) ensure_resource_permissions(cmd.cli_ctx, oc, False, [rp_client_sp_id])
return sdk_no_wait(no_wait, client.begin_delete, return sdk_no_wait(no_wait, client.open_shift_clusters.begin_delete,
resource_group_name=resource_group_name, resource_group_name=resource_group_name,
resource_name=resource_name) resource_name=resource_name)
def aro_list(client, resource_group_name=None): def aro_list(client, resource_group_name=None):
if resource_group_name: if resource_group_name:
return client.list_by_resource_group(resource_group_name) return client.open_shift_clusters.list_by_resource_group(resource_group_name)
return client.list() return client.open_shift_clusters.list()
def aro_show(client, resource_group_name, resource_name): def aro_show(client, resource_group_name, resource_name):
return client.get(resource_group_name, resource_name) return client.open_shift_clusters.get(resource_group_name, resource_name)
def aro_list_credentials(client, resource_group_name, resource_name): def aro_list_credentials(client, resource_group_name, resource_name):
return client.list_credentials(resource_group_name, resource_name) return client.open_shift_clusters.list_credentials(resource_group_name, resource_name)
def aro_list_admin_credentials(cmd, client, resource_group_name, resource_name, file="kubeconfig"): def aro_list_admin_credentials(cmd, client, resource_group_name, resource_name, file="kubeconfig"):
@ -210,7 +210,7 @@ def aro_list_admin_credentials(cmd, client, resource_group_name, resource_name,
if feature.properties.state not in accepted_states: if feature.properties.state not in accepted_states:
logger.warning("This operation requires the Microsoft.RedHatOpenShift/AdminKubeconfig feature to be registered") logger.warning("This operation requires the Microsoft.RedHatOpenShift/AdminKubeconfig feature to be registered")
logger.warning("To register run: az feature register --namespace Microsoft.RedHatOpenShift -n AdminKubeconfig") logger.warning("To register run: az feature register --namespace Microsoft.RedHatOpenShift -n AdminKubeconfig")
query_result = client.list_admin_credentials(resource_group_name, resource_name) query_result = client.open_shift_clusters.list_admin_credentials(resource_group_name, resource_name)
file_mode = "x" file_mode = "x"
yaml_data = b64decode(query_result.kubeconfig).decode('UTF-8') yaml_data = b64decode(query_result.kubeconfig).decode('UTF-8')
try: try:
@ -221,6 +221,10 @@ def aro_list_admin_credentials(cmd, client, resource_group_name, resource_name,
logger.info("Kubeconfig written to file: %s", file) logger.info("Kubeconfig written to file: %s", file)
def aro_list_install_versions(client, location):
return client.list.install_versions(location)
def aro_update(cmd, def aro_update(cmd,
client, client,
resource_group_name, resource_group_name,
@ -230,7 +234,7 @@ def aro_update(cmd,
client_secret=None, client_secret=None,
no_wait=False): no_wait=False):
# if we can't read cluster spec, we will not be able to do much. Fail. # if we can't read cluster spec, we will not be able to do much. Fail.
oc = client.get(resource_group_name, resource_name) oc = client.open_shift_clusters.get(resource_group_name, resource_name)
ocUpdate = openshiftcluster.OpenShiftClusterUpdate() ocUpdate = openshiftcluster.OpenShiftClusterUpdate()
@ -246,7 +250,7 @@ def aro_update(cmd,
if client_id is not None: if client_id is not None:
ocUpdate.service_principal_profile.client_id = client_id ocUpdate.service_principal_profile.client_id = client_id
return sdk_no_wait(no_wait, client.begin_update, return sdk_no_wait(no_wait, client.open_shift_clusters.begin_update,
resource_group_name=resource_group_name, resource_group_name=resource_group_name,
resource_name=resource_name, resource_name=resource_name,
parameters=ocUpdate) parameters=ocUpdate)