Skip to content

Commit 6a6a803

Browse files
committed
added unique domain feature in functionapp create
1 parent 478da82 commit 6a6a803

File tree

9 files changed

+1725
-8
lines changed

9 files changed

+1725
-8
lines changed

src/azure-cli-core/azure/cli/core/profiles/_shared.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ def default_api_version(self):
254254
'subscription_diagnostic_settings': '2017-05-01-preview'
255255
}),
256256
ResourceType.MGMT_MSI: '2023-01-31',
257-
ResourceType.MGMT_APPSERVICE: '2023-01-01',
257+
ResourceType.MGMT_APPSERVICE: '2024-04-01',
258258
ResourceType.MGMT_IOTHUB: '2023-06-30-preview',
259259
ResourceType.MGMT_IOTDPS: '2021-10-15',
260260
ResourceType.MGMT_IOTCENTRAL: '2021-11-01-preview',

src/azure-cli/azure/cli/command_modules/appservice/_params.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -875,6 +875,7 @@ def load_arguments(self, _):
875875
help='Enable zone redundancy for high availability. Applies to Flex Consumption SKU only.', is_preview=True)
876876
c.argument('configure_networking_later', options_list=['--configure-networking-later', '--cnl'], arg_type=get_three_state_flag(),
877877
help='Use this option if you want to configure networking later for an app using network-restricted storage.')
878+
c.argument('auto_generated_domain_name_label_scope', options_list=['--domain-name-scope'], help="Specify the scope of uniqueness for the default hostname during resource creation. ", choices=['TenantReuse', 'SubscriptionReuse', 'ResourceGroupReuse', 'NoReuse'])
878879

879880
with self.argument_context('functionapp deployment config set') as c:
880881
c.argument('deployment_storage_name', options_list=['--deployment-storage-name', '--dsn'], help="The deployment storage account name.", is_preview=True)

src/azure-cli/azure/cli/command_modules/appservice/custom.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5159,7 +5159,8 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non
51595159
always_ready_instances=None, maximum_instance_count=None, instance_memory=None,
51605160
flexconsumption_location=None, deployment_storage_name=None,
51615161
deployment_storage_container_name=None, deployment_storage_auth_type=None,
5162-
deployment_storage_auth_value=None, zone_redundant=False, configure_networking_later=None):
5162+
deployment_storage_auth_value=None, zone_redundant=False, configure_networking_later=None,
5163+
auto_generated_domain_name_label_scope=None):
51635164
# pylint: disable=too-many-statements, too-many-branches
51645165

51655166
if functions_version is None and flexconsumption_location is None:
@@ -5251,7 +5252,8 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non
52515252

52525253
disable_app_insights = disable_app_insights == "true"
52535254

5254-
site_config = SiteConfig(app_settings=[])
5255+
settings = []
5256+
site_config = SiteConfig(app_settings=settings)
52555257
client = web_client_factory(cmd.cli_ctx)
52565258

52575259
if vnet or subnet:
@@ -5290,7 +5292,8 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non
52905292

52915293
functionapp_def = Site(location=None, site_config=site_config, tags=tags,
52925294
virtual_network_subnet_id=subnet_resource_id, https_only=https_only,
5293-
vnet_route_all_enabled=vnet_route_all_enabled)
5295+
vnet_route_all_enabled=vnet_route_all_enabled,
5296+
auto_generated_domain_name_label_scope=auto_generated_domain_name_label_scope)
52945297

52955298
plan_info = None
52965299
if runtime is not None:

src/azure-cli/azure/cli/command_modules/appservice/tests/latest/recordings/test_functionapp_unique_domain_name.yaml

Lines changed: 1694 additions & 0 deletions
Large diffs are not rendered by default.

src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_functionapp_commands.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import unittest
77
from unittest import mock
88
import os
9+
import re
910
import time
1011
import tempfile
1112
import requests
@@ -1498,6 +1499,24 @@ def test_functionapp_windows_runtime_version(self, resource_group, storage_accou
14981499
self.cmd(
14991500
'functionapp delete -g {} -n {}'.format(resource_group, functionapp_name))
15001501

1502+
@ResourceGroupPreparer(location=WINDOWS_ASP_LOCATION_FUNCTIONAPP)
1503+
@StorageAccountPreparer()
1504+
def test_functionapp_unique_domain_name(self, resource_group, storage_account):
1505+
functionapp_name = self.create_random_name(
1506+
'functionappudom', 24)
1507+
1508+
result = self.cmd('functionapp create -g {} -n {} -c {} -s {} --os-type Windows --functions-version 4 --runtime node --runtime-version 22 --domain-name-scope SubscriptionReuse'
1509+
.format(resource_group, functionapp_name, WINDOWS_ASP_LOCATION_FUNCTIONAPP, storage_account)).get_output_in_json()
1510+
1511+
default_hostname = result.get('defaultHostName')
1512+
pattern = r'^([a-zA-Z0-9\-]+)-([a-z0-9]{16})\.([a-z]+-\d{2})\.azurewebsites\.net$'
1513+
match = re.match(pattern, default_hostname)
1514+
self.assertIsNotNone(match, "defaultHostName '{}' does not match expected pattern".format(default_hostname))
1515+
app_name, hash_part, region = match.groups()
1516+
self.assertTrue(len(hash_part) == 16 and hash_part.islower(), "Hash is not 16 chars or not lowercase.")
1517+
self.assertIn('-', region, "Region part does not have '-' separator.")
1518+
self.assertEqual(app_name, functionapp_name, "App name and defaultHostName app name do not match.")
1519+
15011520

15021521
@ResourceGroupPreparer(location=WINDOWS_ASP_LOCATION_FUNCTIONAPP)
15031522
@StorageAccountPreparer()

src/azure-cli/requirements.py3.Darwin.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ azure-mgmt-sqlvirtualmachine==1.0.0b5
7878
azure-mgmt-storage==22.1.0
7979
azure-mgmt-synapse==2.1.0b5
8080
azure-mgmt-trafficmanager==1.0.0
81-
azure-mgmt-web==7.3.1
81+
azure-mgmt-web==8.0.0
8282
azure-monitor-query==1.2.0
8383
azure-multiapi-storage==1.4.0
8484
azure-nspkg==3.0.2

src/azure-cli/requirements.py3.Linux.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ azure-mgmt-sqlvirtualmachine==1.0.0b5
7878
azure-mgmt-storage==22.1.0
7979
azure-mgmt-synapse==2.1.0b5
8080
azure-mgmt-trafficmanager==1.0.0
81-
azure-mgmt-web==7.3.1
81+
azure-mgmt-web==8.0.0
8282
azure-monitor-query==1.2.0
8383
azure-multiapi-storage==1.4.0
8484
azure-nspkg==3.0.2

src/azure-cli/requirements.py3.windows.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ azure-mgmt-sqlvirtualmachine==1.0.0b5
7878
azure-mgmt-storage==22.1.0
7979
azure-mgmt-synapse==2.1.0b5
8080
azure-mgmt-trafficmanager==1.0.0
81-
azure-mgmt-web==7.3.1
81+
azure-mgmt-web==8.0.0
8282
azure-monitor-query==1.2.0
8383
azure-multiapi-storage==1.4.0
8484
azure-nspkg==3.0.2

src/azure-cli/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@
121121
'azure-mgmt-storage==22.1.0',
122122
'azure-mgmt-synapse==2.1.0b5',
123123
'azure-mgmt-trafficmanager~=1.0.0',
124-
'azure-mgmt-web==7.3.1',
124+
'azure-mgmt-web==8.0.0',
125125
'azure-monitor-query==1.2.0',
126126
'azure-multiapi-storage==1.4.0',
127127
'azure-storage-common~=1.4',

0 commit comments

Comments
 (0)