Skip to content
Closed
4 changes: 4 additions & 0 deletions src/azure-cli-core/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@
Release History
===============

2.72.0
++++++
* Minor fixes

2.71.0
++++++
* PREVIEW: Support managed identity authentication with MSAL. Run `az config set core.use_msal_managed_identity=true` or set environment variable `AZURE_CORE_USE_MSAL_MANAGED_IDENTITY` to enable it (#31092)
Expand Down
2 changes: 1 addition & 1 deletion src/azure-cli-core/azure/cli/core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# --------------------------------------------------------------------------------------------
# pylint: disable=line-too-long

__version__ = "2.71.0"
__version__ = "2.72.0"

import os
import sys
Expand Down
2 changes: 1 addition & 1 deletion src/azure-cli-core/setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from codecs import open
from setuptools import setup, find_packages

VERSION = "2.71.0"
VERSION = "2.72.0"

# If we have source, validate that our version numbers match
# This should prevent uploading releases with mismatched versions.
Expand Down
91 changes: 91 additions & 0 deletions src/azure-cli/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,97 @@
Release History
===============

2.72.0
++++++

**ACR**

* Fix #31130: `az acr task show`: Fix extra version line in encodedTask created by file (#31153)
* `az acr create/check-name`: Add parameter `--dnl-scope` for domain name label hash (#30638)

**AKS**

* `az aks update`: Make specified version to match current version when turning off autoupgrade (#31018)
* `az aks nodepool add/update`: Add option `Ubuntu2204` to `--os-sku` parameter (#31119)
* `az aks create`: Add `--custom-ca-trust-certificates` parameter to support custom CA trust feature (#31107)
* `az aks nodepool add`: Add `--custom-ca-trust-certificates` parameter to support custom CA trust feature (#31107)
* `az aks nodepool add`: Add GPU driver install options `--gpu-driver install` and `--gpu-driver none` (#31106)

**App Config**

* `az appconfig create/update`: Add developer sku support (#31199)
* `az appconfig feature set`: Update feature name documentation (#31185)

**App Service**

* Fix #20983: `az webapp config ssl import`: Make web app a non-required parameter (#30958)
* `az appservice plan create`: Add Pv4/Pmv4 ASP support (#31021)
* Fix #20209: `az webapp create-remote-connection`: Add ssh command to output (#31155)

**ARM**

* `az deployment`: Fix issue where Bicep is not found in CI environments (#31202)
* Fix #31188: `az lock delete`: Fix the case sensitivity of `--namespace` parameter validation (#31274)

**ARO**

* `az aro update`: Ensure that refreshing cluster service principal credentials is successful when the cluster has an invalid or missing subnet in its resource definition (#31039)

**Compute**

* [BREAKING CHANGE] `az sig image-version`: Change the `--os-vhd-storage-account` parameter mapping to the `properties.storageProfile.osDiskImage.source.storageAccountId` property (#31186)
* [BREAKING CHANGE] `az sig image-version`: Change the `--data-vhds-storage-accounts` parameter mapping to the `properties.storageProfile.dataDiskImages.source.storageAccountId` property (#31186)
* `az vm create`: Add new parameter `--zone-placement-policy` to support setting vm placement to create a zonal VM (#31233)
* `az vm create`: Add new parameter `--include-zones` to support setting vm placement to create a zonal VM (#31233)
* `az vm create`: Add new parameter `--exclude-zones` to support setting vm placement to create a zonal VM (#31233)
* `az vm create/update`: Add new parameter `--align-regional-disks-to-vm-zone` to support setting regional disks attached to the VM to be converted to zonal (#31233)
* `az sig image-version create/update`: Rename shorter alias for `--block-deletion-before-end-of-life` parameter (#31283)
* `az vm create/update`: Add new parameters `--wire-server-mode` and `--wire-server-access-control-profile-reference-id` to support setting wireserver endpoint settings (#31279)
* `az vmss create/update`: Add new parameters `--wire-server-mode` and `--wire-server-access-control-profile-reference-id` to support setting wireserver endpoint settings (#31279)
* `az vm create/update`: Add new parameters `--imds-mode` and `--imds-access-control-profile-reference-id` to support setting IMDS endpoint settings (#31279)
* `az vmss create/update`: Add new parameters `--imds-mode` and `--imds-access-control-profile-reference-id` to support setting IMDS endpoint settings (#31279)
* `az vm create/update`: Add new parameter `--key-incarnation-id` to support setting key incarnation id (#31279)
* `az vmss create/update`: Add new parameter `--key-incarnation-id` to support setting key incarnation id (#31279)
* `az vm/vmss create/update`: Set `--security-type` to `Standard` only if explicitly set by end user (#31282)

**Consumption**

* `az consumption usage list`: Enhance handling of `usageStart` and `usageEnd` when missing (#31128)

**Microsoft Entra ID**

* `az ad sp create-for-rbac`: Add `--service-management-reference` argument (#31212)
* `az ad sp create-for-rbac`: Add `--create-password` argument. Use `--create-password false` to disable creating password credential (#31215)

**MySQL**

* `az mysql flexible-server create`: Add `--backup-interval` parameter to enable setting backup interval (#31298)
* `az mysql flexible-server restore`: Add `--faster-restore` parameter to open auto-iops-scaling when restore (#31298)
* `az mysql flexible-server replica create`: Add `--faster-provisioning` parameter to open auto-iops-scaling when create replica (#31298)

**Network**

* Fix #31129: `az network vnet-gateway create/update`: Refine the logic of `--root-cert-data` (#31166)
* `az network application-gateway waf-policy managed-rule rule-set`: Support rule set type Microsoft_DefaultRuleSet (#31289)

**Profile**

* Fix #29030: `az login`: During interactive login, fall back to `tenantId` if `tenantDisplayName` is missing (#29245)

**RDBMS**

* `az postgres flexible-server upgrade`: Add server capability API check to the `--version` parameter and allow user to upgrade to PG17 when it is available (#31146)

**Role**

* `az role assignment list`: Add `--fill-principal-name` argument. Use `--fill-principal-name false` to omit `principalName` property and bypass Microsoft Graph query (#30693)
* `az role assignment list`: Add `--fill-role-definition-name` argument. Use `--fill-role-definition-name false` to omit `roleDefinitionName` property and bypass the role definitions query (#31152)
* `az role assignment list/delete`: Add `--assignee-object-id` argument. Use this argument instead of `--assignee` to bypass Microsoft Graph query (#30469)

**Service Connector**

* `az webapp connection create`: Clarify that system identity is a flag (#31263)

2.71.0
++++++

Expand Down
2 changes: 1 addition & 1 deletion src/azure-cli/azure/cli/__main__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
from knack.log import get_logger

__author__ = "Microsoft Corporation <python@microsoft.com>"
__version__ = "2.71.0"
__version__ = "2.72.0"


logger = get_logger(__name__)
Expand Down
44 changes: 42 additions & 2 deletions src/azure-cli/azure/cli/command_modules/appservice/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@
import threading
import time
import re
import datetime
import datetime
from xml.etree import ElementTree

from urllib.parse import urlparse
from urllib.request import urlopen

from binascii import hexlify
from os import urandom
import datetime
import json
import ssl
import sys
Expand Down Expand Up @@ -4280,6 +4281,17 @@ def get_stack_names_only(self, delimiter=None, show_runtime_details=False):
linux_auto_updates = [
s.display_name for s in self.stacks if
s.linux and ('java' not in s.display_name.casefold() or s.is_auto_update)]

def is_valid_runtime_name(name):
# Accepts names like "node|18-lts", "python|3.11", but not "NODE:lts" or "node"
parts = name.split(self.DEFAULT_DELIMETER)
return len(parts) == 2 and parts[1] and not parts[1].lower() in ("lts", "default", "stable")

windows_stacks = [n for n in windows_stacks if is_valid_runtime_name(n)]
linux_stacks = [n for n in linux_stacks if is_valid_runtime_name(n)]
windows_auto_updates = [n for n in windows_auto_updates if is_valid_runtime_name(n)]
linux_auto_updates = [n for n in linux_auto_updates if is_valid_runtime_name(n)]

if delimiter is not None:
windows_stacks = [n.replace(self.DEFAULT_DELIMETER, delimiter) for n in windows_stacks]
linux_stacks = [n.replace(self.DEFAULT_DELIMETER, delimiter) for n in linux_stacks]
Expand Down Expand Up @@ -4402,7 +4414,35 @@ def _format_windows_display_text(cls, display_text):

@classmethod
def _is_valid_runtime_setting(cls, runtime_setting):
return runtime_setting is not None and not runtime_setting.is_hidden and not runtime_setting.is_deprecated
# Using datetime module imported at the top level
if runtime_setting is None or getattr(runtime_setting, 'is_hidden', False):
return False
if getattr(runtime_setting, 'is_deprecated', False):
return False
end_of_life = getattr(runtime_setting, 'end_of_life_date', None)
if end_of_life:
try:
if isinstance(end_of_life, str):
try:
end_of_life_dt = datetime.datetime.strptime(
end_of_life, "%Y-%m-%dT%H:%M:%S.%fZ"
).replace(tzinfo=datetime.timezone.utc)
except ValueError:
end_of_life_dt = datetime.datetime.strptime(
end_of_life, "%Y-%m-%dT%H:%M:%SZ"
).replace(tzinfo=datetime.timezone.utc)
else:
# If already a datetime, ensure it's timezone-aware
if end_of_life.tzinfo is None:
end_of_life_dt = end_of_life.replace(tzinfo=datetime.timezone.utc)
else:
end_of_life_dt = end_of_life
now_utc = datetime.datetime.utcnow().replace(tzinfo=datetime.timezone.utc)
if now_utc >= end_of_life_dt:
return False
except (ValueError, AttributeError):
pass
return True

@classmethod
def _get_runtime_setting(cls, minor_version, linux, java):
Expand Down
Loading
Loading