Skip to content
Closed
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
6 changes: 5 additions & 1 deletion src/aks-preview/azext_aks_preview/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,11 @@ def __init__(self, cli_ctx=None):
CUSTOM_MGMT_AKS_PREVIEW,
SDKProfile("2021-08-01", {"container_services": "2017-07-01"}),
)

register_resource_type(
"2020-09-01-hybrid",
CUSTOM_MGMT_AKS_PREVIEW,
SDKProfile("2020-11-01", {"container_services": "2017-07-01"}),
)
acs_custom = CliCommandType(operations_tmpl='azext_aks_preview.custom#{}')
super(ContainerServiceCommandsLoader, self).__init__(cli_ctx=cli_ctx,
custom_command_type=acs_custom,
Expand Down
5 changes: 4 additions & 1 deletion src/aks-preview/azext_aks_preview/_completers.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from azure.cli.core.decorators import Completer

# pylint: disable=line-too-long
from azext_aks_preview.vendored_sdks.azure_mgmt_preview_aks.v2021_08_01.models import ContainerServiceVMSizeTypes
from azure.cli.core.profiles import ResourceType


@Completer
Expand Down Expand Up @@ -48,6 +48,9 @@ def get_vm_size_completion_list(cmd, prefix, namespace, **kwargs): # pylint: di

location = _get_location(cmd.cli_ctx, namespace)
result = get_vm_sizes(cmd.cli_ctx, location)
ContainerServiceVMSizeTypes = cmd.get_models('ContainerServiceVMSizeTypes',
resource_type=ResourceType.MGMT_CONTAINERSERVICE,
operation_group='managed_clusters')
return set(r.name for r in result) & set(c.value for c in ContainerServiceVMSizeTypes)


Expand Down
7 changes: 5 additions & 2 deletions src/aks-preview/azext_aks_preview/_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,17 @@
from azure.cli.core.azclierror import ArgumentUsageError

# pylint: disable=no-name-in-module,import-error
from .vendored_sdks.azure_mgmt_preview_aks.v2021_08_01.models import ManagedClusterAPIServerAccessProfile
from azure.cli.core.profiles import ResourceType
from ._consts import CONST_CONTAINER_NAME_MAX_LENGTH
from ._consts import CONST_OUTBOUND_TYPE_LOAD_BALANCER, CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING, \
CONST_OUTBOUND_TYPE_MANAGED_NAT_GATEWAY, CONST_OUTBOUND_TYPE_USER_ASSIGNED_NAT_GATEWAY


def _populate_api_server_access_profile(api_server_authorized_ip_ranges, instance=None):
def _populate_api_server_access_profile(cmd, api_server_authorized_ip_ranges, instance=None):
if instance is None or instance.api_server_access_profile is None:
ManagedClusterAPIServerAccessProfile = cmd.get_models('ManagedClusterAPIServerAccessProfile',
resource_type=ResourceType.MGMT_CONTAINERSERVICE,
operation_group='managed_clusters')
profile = ManagedClusterAPIServerAccessProfile()
else:
profile = instance.api_server_access_profile
Expand Down
42 changes: 28 additions & 14 deletions src/aks-preview/azext_aks_preview/_loadbalancer.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,7 @@
from distutils.version import StrictVersion # pylint: disable=no-name-in-module,import-error
from knack.log import get_logger

from .vendored_sdks.azure_mgmt_preview_aks.v2021_08_01.models import ManagedClusterLoadBalancerProfile
from .vendored_sdks.azure_mgmt_preview_aks.v2021_08_01.models import ManagedClusterLoadBalancerProfileManagedOutboundIPs
from .vendored_sdks.azure_mgmt_preview_aks.v2021_08_01.models import ManagedClusterLoadBalancerProfileOutboundIPPrefixes
from .vendored_sdks.azure_mgmt_preview_aks.v2021_08_01.models import ManagedClusterLoadBalancerProfileOutboundIPs
from .vendored_sdks.azure_mgmt_preview_aks.v2021_08_01.models import ResourceReference
from azure.cli.core.profiles import ResourceType

logger = get_logger(__name__)

Expand All @@ -26,36 +22,38 @@ def set_load_balancer_sku(sku, kubernetes_version):
return "standard"


def update_load_balancer_profile(managed_outbound_ip_count, outbound_ips, outbound_ip_prefixes,
def update_load_balancer_profile(cmd, managed_outbound_ip_count, outbound_ips, outbound_ip_prefixes,
outbound_ports, idle_timeout, profile):
"""parse and update an existing load balancer profile"""
if not is_load_balancer_profile_provided(managed_outbound_ip_count, outbound_ips, outbound_ip_prefixes,
outbound_ports, idle_timeout):
return profile
return configure_load_balancer_profile(managed_outbound_ip_count, outbound_ips, outbound_ip_prefixes,
return configure_load_balancer_profile(cmd, managed_outbound_ip_count, outbound_ips, outbound_ip_prefixes,
outbound_ports, idle_timeout, profile)


def create_load_balancer_profile(managed_outbound_ip_count, outbound_ips, outbound_ip_prefixes,
def create_load_balancer_profile(cmd, managed_outbound_ip_count, outbound_ips, outbound_ip_prefixes,
outbound_ports, idle_timeout):
"""parse and build load balancer profile"""
if not is_load_balancer_profile_provided(managed_outbound_ip_count, outbound_ips, outbound_ip_prefixes,
outbound_ports, idle_timeout):
return None

ManagedClusterLoadBalancerProfile = cmd.get_models('ManagedClusterLoadBalancerProfile',
resource_type=ResourceType.MGMT_CONTAINERSERVICE,
operation_group='managed_clusters')
profile = ManagedClusterLoadBalancerProfile()
return configure_load_balancer_profile(managed_outbound_ip_count, outbound_ips, outbound_ip_prefixes,
outbound_ports, idle_timeout, profile)


def configure_load_balancer_profile(managed_outbound_ip_count, outbound_ips, outbound_ip_prefixes, outbound_ports,
def configure_load_balancer_profile(cmd, managed_outbound_ip_count, outbound_ips, outbound_ip_prefixes, outbound_ports,
idle_timeout, profile):
"""configure a load balancer with customer supplied values"""
if not profile:
return profile

outbound_ip_resources = _get_load_balancer_outbound_ips(outbound_ips)
outbound_ip_prefix_resources = _get_load_balancer_outbound_ip_prefixes(outbound_ip_prefixes)
outbound_ip_resources = _get_load_balancer_outbound_ips(cmd, outbound_ips)
outbound_ip_prefix_resources = _get_load_balancer_outbound_ip_prefixes(cmd, outbound_ip_prefixes)

if managed_outbound_ip_count or outbound_ip_resources or outbound_ip_prefix_resources:
# ips -> i_ps due to track 2 naming issue
Expand All @@ -65,15 +63,27 @@ def configure_load_balancer_profile(managed_outbound_ip_count, outbound_ips, out
profile.outbound_ip_prefixes = None
if managed_outbound_ip_count:
# ips -> i_ps due to track 2 naming issue
ManagedClusterLoadBalancerProfileManagedOutboundIPs = cmd.get_models(
'ManagedClusterLoadBalancerProfileManagedOutboundIPs',
resource_type=ResourceType.MGMT_CONTAINERSERVICE,
operation_group='managed_clusters')
profile.managed_outbound_i_ps = ManagedClusterLoadBalancerProfileManagedOutboundIPs(
count=managed_outbound_ip_count
)
if outbound_ip_resources:
# ips -> i_ps due to track 2 naming issue
ManagedClusterLoadBalancerProfileOutboundIPs = cmd.get_models(
'ManagedClusterLoadBalancerProfileOutboundIPs',
resource_type=ResourceType.MGMT_CONTAINERSERVICE,
operation_group='managed_clusters')
profile.outbound_i_ps = ManagedClusterLoadBalancerProfileOutboundIPs(
public_i_ps=outbound_ip_resources
)
if outbound_ip_prefix_resources:
ManagedClusterLoadBalancerProfileOutboundIPPrefixes = cmd.get_models(
'ManagedClusterLoadBalancerProfileOutboundIPPrefixes',
resource_type=ResourceType.MGMT_CONTAINERSERVICE,
operation_group='managed_clusters')
profile.outbound_ip_prefixes = ManagedClusterLoadBalancerProfileOutboundIPPrefixes(
public_ip_prefixes=outbound_ip_prefix_resources
)
Expand All @@ -93,19 +103,23 @@ def is_load_balancer_profile_provided(managed_outbound_ip_count, outbound_ips, i
idle_timeout])


def _get_load_balancer_outbound_ips(load_balancer_outbound_ips):
def _get_load_balancer_outbound_ips(cmd, load_balancer_outbound_ips):
"""parse load balancer profile outbound IP ids and return an array of references to the outbound IP resources"""
load_balancer_outbound_ip_resources = None
ResourceReference = cmd.get_models('ResourceReference', resource_type=ResourceType.MGMT_CONTAINERSERVICE,
operation_group='managed_clusters')
if load_balancer_outbound_ips:
load_balancer_outbound_ip_resources = \
[ResourceReference(id=x.strip()) for x in load_balancer_outbound_ips.split(',')]
return load_balancer_outbound_ip_resources


def _get_load_balancer_outbound_ip_prefixes(load_balancer_outbound_ip_prefixes):
def _get_load_balancer_outbound_ip_prefixes(cmd, load_balancer_outbound_ip_prefixes):
"""parse load balancer profile outbound IP prefix ids and return an array \
of references to the outbound IP prefix resources"""
load_balancer_outbound_ip_prefix_resources = None
ResourceReference = cmd.get_models('ResourceReference', resource_type=ResourceType.MGMT_CONTAINERSERVICE,
operation_group='managed_clusters')
if load_balancer_outbound_ip_prefixes:
load_balancer_outbound_ip_prefix_resources = \
[ResourceReference(id=x.strip()) for x in load_balancer_outbound_ip_prefixes.split(',')]
Expand Down
4 changes: 2 additions & 2 deletions src/aks-preview/azext_aks_preview/_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,8 @@ def load_arguments(self, _):
c.argument('load_balancer_outbound_ip_prefixes', type=str, validator=validate_load_balancer_outbound_ip_prefixes)
c.argument('load_balancer_outbound_ports', type=int, validator=validate_load_balancer_outbound_ports)
c.argument('load_balancer_idle_timeout', type=int, validator=validate_load_balancer_idle_timeout)
c.argument('nat_gateway_managed_outbound_ip_count', type=int, validator=validate_nat_gateway_managed_outbound_ip_count)
c.argument('nat_gateway_idle_timeout', type=int, validator=validate_nat_gateway_idle_timeout)
c.argument('nat_gateway_managed_outbound_ip_count', min_api='2021-07-01', type=int, validator=validate_nat_gateway_managed_outbound_ip_count)
c.argument('nat_gateway_idle_timeout', min_api='2021-07-01', type=int, validator=validate_nat_gateway_idle_timeout)
c.argument('outbound_type', arg_type=get_enum_type([CONST_OUTBOUND_TYPE_LOAD_BALANCER,
CONST_OUTBOUND_TYPE_USER_DEFINED_ROUTING,
CONST_OUTBOUND_TYPE_MANAGED_NAT_GATEWAY,
Expand Down
11 changes: 7 additions & 4 deletions src/aks-preview/azext_aks_preview/_validators.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from azure.cli.core.util import CLIError
import azure.cli.core.keys as keys

from .vendored_sdks.azure_mgmt_preview_aks.v2021_08_01.models import ManagedClusterPropertiesAutoScalerProfile
from azure.cli.core.profiles import ResourceType

from ._helpers import (_fuzzy_match)

Expand Down Expand Up @@ -289,7 +289,7 @@ def validate_nodepool_tags(ns):
ns.nodepool_tags = tags_dict


def validate_cluster_autoscaler_profile(namespace):
def validate_cluster_autoscaler_profile(cmd, namespace):
""" Validates that cluster autoscaler profile is acceptable by:
1. Extracting the key[=value] format to map
2. Validating that the key isn't empty and that the key is valid
Expand All @@ -298,12 +298,15 @@ def validate_cluster_autoscaler_profile(namespace):
_extract_cluster_autoscaler_params(namespace)
if namespace.cluster_autoscaler_profile is not None:
for key in namespace.cluster_autoscaler_profile.keys():
_validate_cluster_autoscaler_key(key)
_validate_cluster_autoscaler_key(cmd, key)


def _validate_cluster_autoscaler_key(key):
def _validate_cluster_autoscaler_key(cmd, key):
if not key:
raise CLIError('Empty key specified for cluster-autoscaler-profile')
ManagedClusterPropertiesAutoScalerProfile = cmd.get_models('ManagedClusterPropertiesAutoScalerProfile',
resource_type=ResourceType.MGMT_CONTAINERSERVICE,
operation_group='managed_clusters')
valid_keys = list(k.replace("_", "-") for k, v in ManagedClusterPropertiesAutoScalerProfile._attribute_map.items()) # pylint: disable=protected-access
if key not in valid_keys:
raise CLIError('Invalid key specified for cluster-autoscaler-profile: %s' % key)
Expand Down
Loading