Skip to content

Commit

Permalink
feat(acns): add advanced network observability enable/disable for az … (
Browse files Browse the repository at this point in the history
#7562)

* feat(acns): add advanced network observability enable/disable for az aks create and update commands

* Update HISTORY.rst

---------

Co-authored-by: FumingZhang <[email protected]>
  • Loading branch information
snguyen64 and FumingZhang committed May 6, 2024
1 parent b7ed781 commit 83a18a5
Show file tree
Hide file tree
Showing 10 changed files with 3,153 additions and 0 deletions.
9 changes: 9 additions & 0 deletions linter_exclusions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,9 @@ aks create:
enable_network_observability:
rule_exclusions:
- option_length_too_long
enable_advanced_network_observability:
rule_exclusions:
- option_length_too_long
cluster_service_load_balancer_health_probe_mode:
rule_exclusions:
- option_length_too_long
Expand Down Expand Up @@ -207,6 +210,12 @@ aks update:
disable_network_observability:
rule_exclusions:
- option_length_too_long
enable_advanced_network_observability:
rule_exclusions:
- option_length_too_long
disable_advanced_network_observability:
rule_exclusions:
- option_length_too_long
cluster_service_load_balancer_health_probe_mode:
rule_exclusions:
- option_length_too_long
Expand Down
1 change: 1 addition & 0 deletions src/aks-preview/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ To release a new version, please select a new version number (usually plus 1 to

Pending
+++++++
* Add option `--enable-advanced-network-observability`, `--disable-advanced-network-observability` to `az aks create/update`

3.0.0b12
++++++++
Expand Down
6 changes: 6 additions & 0 deletions src/aks-preview/azext_aks_preview/_help.py
Original file line number Diff line number Diff line change
Expand Up @@ -1196,6 +1196,12 @@
- name: --disable-network-observability
type: bool
short-summary: Disable network observability on a cluster
- name: --enable-advanced-network-observability
type: bool
short-summary: Enable advanced network observability functionalities on a cluster.
- name: --disable-advanced-network-observability
type: bool
short-summary: Disable advanced network observability functionalities on a cluster
- name: --enable-cost-analysis
type: bool
short-summary: Enable exporting Kubernetes Namespace and Deployment details to the Cost Analysis views in the Azure portal. For more information see aka.ms/aks/docs/cost-analysis.
Expand Down
18 changes: 18 additions & 0 deletions src/aks-preview/azext_aks_preview/_params.py
Original file line number Diff line number Diff line change
Expand Up @@ -796,6 +796,12 @@ def load_arguments(self, _):
is_preview=True,
help="enable network observability for cluster",
)
c.argument(
"enable_advanced_network_observability",
action="store_true",
is_preview=True,
help="enable advanced network observability functionalities for cluster",
)
c.argument(
"custom_ca_trust_certificates",
options_list=["--custom-ca-trust-certificates", "--ca-certs"],
Expand Down Expand Up @@ -1279,6 +1285,18 @@ def load_arguments(self, _):
is_preview=True,
help="disable network observability for cluster",
)
c.argument(
"enable_advanced_network_observability",
action="store_true",
is_preview=True,
help="enable advanced network observability functionalities for cluster",
)
c.argument(
"disable_advanced_network_observability",
action="store_true",
is_preview=True,
help="disable advanced network observability functionalities for cluster",
)
c.argument("enable_cost_analysis", is_preview=True, action="store_true")
c.argument("disable_cost_analysis", is_preview=True, action="store_true")
c.argument('enable_ai_toolchain_operator', is_preview=True, action='store_true')
Expand Down
3 changes: 3 additions & 0 deletions src/aks-preview/azext_aks_preview/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -603,6 +603,7 @@ def aks_create(
enable_cilium_dataplane=False,
custom_ca_trust_certificates=None,
enable_network_observability=None,
enable_advanced_network_observability=None,
# nodepool
crg_id=None,
message_of_the_day=None,
Expand Down Expand Up @@ -827,6 +828,8 @@ def aks_update(
safeguards_excluded_ns=None,
enable_network_observability=None,
disable_network_observability=None,
enable_advanced_network_observability=None,
disable_advanced_network_observability=None,
# metrics profile
enable_cost_analysis=False,
disable_cost_analysis=False,
Expand Down
45 changes: 45 additions & 0 deletions src/aks-preview/azext_aks_preview/managed_cluster_decorator.py
Original file line number Diff line number Diff line change
Expand Up @@ -687,6 +687,26 @@ def get_enable_network_observability(self) -> Optional[bool]:
return not disable_network_observability
return None

def get_enable_advanced_network_observability(self) -> Optional[bool]:
"""Get the value of enable_advanced_network_observability
:return: bool or None
"""
enable_advanced_network_observability = self.raw_param.get("enable_advanced_network_observability")
disable_advanced_network_observability = self.raw_param.get("disable_advanced_network_observability")
if enable_advanced_network_observability and disable_advanced_network_observability:
raise MutuallyExclusiveArgumentError(
"Cannot specify --enable-advanced-network-observability and "
"--disable-advanced-network-observability at the same time."
)
if enable_advanced_network_observability is False and disable_advanced_network_observability is False:
return None
if enable_advanced_network_observability is not None:
return enable_advanced_network_observability
if disable_advanced_network_observability is not None:
return not disable_advanced_network_observability
return None

def get_load_balancer_managed_outbound_ip_count(self) -> Union[int, None]:
"""Obtain the value of load_balancer_managed_outbound_ip_count.
Expand Down Expand Up @@ -2917,6 +2937,13 @@ def set_up_network_profile(self, mc: ManagedCluster) -> ManagedCluster:
network_profile.monitoring = self.models.NetworkMonitoring( # pylint: disable=no-member
enabled=network_observability
)
advanced_network_observability = self.context.get_enable_advanced_network_observability()
if advanced_network_observability is not None:
network_profile.advanced_networking = self.models.AdvancedNetworking( # pylint: disable=no-member
observability=self.models.AdvancedNetworkingObservability( # pylint: disable=no-member
enabled=advanced_network_observability
)
)
return mc

def set_up_api_server_access_profile(self, mc: ManagedCluster) -> ManagedCluster:
Expand Down Expand Up @@ -3940,6 +3967,22 @@ def update_enable_network_observability_in_network_profile(self, mc: ManagedClus
)
return mc

def update_enable_advanced_network_observability_in_network_profile(self, mc: ManagedCluster) -> ManagedCluster:
"""Update enable advanced network observability of network profile for the ManagedCluster object.
:return: the ManagedCluster object
"""
self._ensure_mc(mc)

advanced_network_observability = self.context.get_enable_advanced_network_observability()
if advanced_network_observability is not None:
mc.network_profile.advanced_networking = self.models.AdvancedNetworking( # pylint: disable=no-member
observability=self.models.AdvancedNetworkingObservability( # pylint: disable=no-member
enabled=advanced_network_observability
)
)
return mc

# pylint: disable=too-many-statements,too-many-locals,too-many-branches
def update_azure_container_storage(self, mc: ManagedCluster) -> ManagedCluster:
"""Update azure container storage for the Managed Cluster object
Expand Down Expand Up @@ -5156,6 +5199,8 @@ def update_mc_profile_preview(self) -> ManagedCluster:
mc = self.update_nodepool_initialization_taints_mc(mc)
# update network_observability in network_profile
mc = self.update_enable_network_observability_in_network_profile(mc)
# update advanced_network_observability in network_profile
mc = self.update_enable_advanced_network_observability_in_network_profile(mc)
# update kubernetes support plan
mc = self.update_k8s_support_plan(mc)
# update metrics profile
Expand Down
Loading

0 comments on commit 83a18a5

Please sign in to comment.