Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 54 additions & 7 deletions src/azure-cli/azure/cli/command_modules/acs/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -1637,10 +1637,18 @@ def aks_check_acr(cmd, client, resource_group_name, name, acr):


# pylint: disable=too-many-statements,too-many-branches
def aks_browse(cmd, client, resource_group_name, name, disable_browser=False,
listen_address='127.0.0.1', listen_port='8001'):
def _aks_browse(
cmd,
client,
resource_group_name,
name,
disable_browser=False,
listen_address="127.0.0.1",
listen_port="8001",
resource_type=ResourceType.MGMT_CONTAINERSERVICE,
):
ManagedClusterAddonProfile = cmd.get_models('ManagedClusterAddonProfile',
resource_type=ResourceType.MGMT_CONTAINERSERVICE,
resource_type=resource_type,
operation_group='managed_clusters')
# verify the kube-dashboard addon was not disabled
instance = client.get(resource_group_name, name)
Expand All @@ -1650,6 +1658,7 @@ def aks_browse(cmd, client, resource_group_name, name, disable_browser=False,
if k.lower() == CONST_KUBE_DASHBOARD_ADDON_NAME.lower()),
ManagedClusterAddonProfile(enabled=False))

return_msg = None
# open portal view if addon is not enabled or k8s version >= 1.19.0
if StrictVersion(instance.kubernetes_version) >= StrictVersion('1.19.0') or (not addon_profile.enabled):
subscription_id = get_subscription_id(cmd.cli_ctx)
Expand All @@ -1665,10 +1674,11 @@ def aks_browse(cmd, client, resource_group_name, name, disable_browser=False,
'To view the Kubernetes resources view, please open %s in a new tab', dashboardURL)
else:
logger.warning('Kubernetes resources view on %s', dashboardURL)
return_msg = "Kubernetes resources view on {}".format(dashboardURL)

if not disable_browser:
webbrowser.open_new_tab(dashboardURL)
return
return return_msg

# otherwise open the kube-dashboard addon
if not which('kubectl'):
Expand Down Expand Up @@ -1730,28 +1740,65 @@ def aks_browse(cmd, client, resource_group_name, name, disable_browser=False,
else:
logger.warning('Proxy running on %s', proxy_url)

timeout = None
if os.getenv("PYTEST_CURRENT_TEST", None):
timeout = 10
logger.warning('Press CTRL+C to close the tunnel...')
if not disable_browser:
wait_then_open_async(dashboardURL)
try:
try:
subprocess.check_output(["kubectl", "--kubeconfig", browse_path, "proxy", "--address",
listen_address, "--port", listen_port], stderr=subprocess.STDOUT)
listen_address, "--port", listen_port], stderr=subprocess.STDOUT, timeout=timeout)
except subprocess.CalledProcessError as err:
if err.output.find(b'unknown flag: --address'):
return_msg = "Test Invalid Address! "
if listen_address != '127.0.0.1':
logger.warning(
'"--address" is only supported in kubectl v1.13 and later.')
logger.warning(
'The "--listen-address" argument will be ignored.')
subprocess.call(["kubectl", "--kubeconfig",
browse_path, "proxy", "--port", listen_port])
try:
subprocess.call(["kubectl", "--kubeconfig",
browse_path, "proxy", "--port", listen_port], timeout=timeout)
except subprocess.TimeoutExpired:
logger.warning("Currently in a test environment, the proxy is closed due to a preset timeout!")
return_msg = return_msg if return_msg else ""
return_msg += "Test Passed!"
except subprocess.TimeoutExpired:
logger.warning("Currently in a test environment, the proxy is closed due to a preset timeout!")
return_msg = return_msg if return_msg else ""
return_msg += "Test Passed!"
except KeyboardInterrupt:
# Let command processing finish gracefully after the user presses [Ctrl+C]
pass
finally:
if in_cloud_console():
requests.post('http://localhost:8888/closeport/8001')
return return_msg


# pylint: disable=too-many-statements,too-many-branches
def aks_browse(
cmd,
client,
resource_group_name,
name,
disable_browser=False,
listen_address="127.0.0.1",
listen_port="8001",
):

return _aks_browse(
cmd,
client,
resource_group_name,
name,
disable_browser=disable_browser,
listen_address=listen_address,
listen_port=listen_port,
resource_type=ResourceType.MGMT_CONTAINERSERVICE,
)


def _trim_nodepoolname(nodepool_name):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ def __init__(
dev_setting_location="AZURE_CLI_TEST_DEV_RESOURCE_GROUP_LOCATION",
random_name_length=75,
key="rg",
preserve_default_location=False,
):
super(AKSCustomResourceGroupPreparer, self).__init__(
name_prefix,
Expand All @@ -39,7 +40,7 @@ def __init__(

# use environment variable to modify the default value of location
self.dev_setting_location = os.environ.get(dev_setting_location, None)
if self.dev_setting_location:
if not preserve_default_location and self.dev_setting_location:
self.location = self.dev_setting_location
else:
self.dev_setting_location = location
Expand Down
Loading