@@ -3918,12 +3918,12 @@ def update_functionapp_polling(cmd, resource_group_name, name, functionapp):
3918
3918
updated_functionapp = json .dumps (
3919
3919
{
3920
3920
"properties" : {
3921
- "daprConfig" : {
3921
+ "daprConfig" : {"enabled" : False } if functionapp . dapr_config is None else {
3922
3922
"enabled" : functionapp .dapr_config .enabled ,
3923
3923
"appId" : functionapp .dapr_config .app_id ,
3924
3924
"appPort" : functionapp .dapr_config .app_port ,
3925
- "httpReadBufferSize" : functionapp .dapr_config .http_read_buffer_size ,
3926
- "httpMaxRequestSize" : functionapp .dapr_config .http_max_request_size ,
3925
+ "httpReadBufferSize" : functionapp .dapr_config .http_read_buffer_size or 4 ,
3926
+ "httpMaxRequestSize" : functionapp .dapr_config .http_max_request_size or 4 ,
3927
3927
"logLevel" : functionapp .dapr_config .log_level ,
3928
3928
"enableApiLogging" : functionapp .dapr_config .enable_api_logging
3929
3929
},
@@ -3956,19 +3956,37 @@ def update_dapr_and_workload_config(cmd, resource_group_name, name, enabled=None
3956
3956
enable_api_logging = None , workload_profile_name = None , cpu = None , memory = None ):
3957
3957
site = _generic_site_operation (cmd .cli_ctx , resource_group_name , name , 'get' )
3958
3958
DaprConfig = cmd .get_models ('DaprConfig' )
3959
- if site .dapr_config is None :
3960
- site .dapr_config = DaprConfig ()
3961
3959
3962
- import inspect
3963
- frame = inspect .currentframe ()
3964
- bool_flags = ['enabled' , 'enable_api_logging' ]
3965
- int_flags = ['app_port' , 'http_max_request_size' , 'http_read_buffer_size' ]
3966
- args , _ , _ , values = inspect .getargvalues (frame ) # pylint: disable=deprecated-method
3967
- for arg in args [3 :10 ]:
3968
- if arg in int_flags and values [arg ] is not None :
3969
- values [arg ] = validate_and_convert_to_int (arg , values [arg ])
3970
- if values .get (arg , None ):
3971
- setattr (site .dapr_config , arg , values [arg ] if arg not in bool_flags else values [arg ] == 'true' )
3960
+ if enabled is None :
3961
+ if site .dapr_config and site .dapr_config .enabled is False :
3962
+ site .dapr_config = None
3963
+ elif enabled == "false" :
3964
+ site .dapr_config = None
3965
+ elif enabled == "true" :
3966
+ if site .dapr_config is None :
3967
+ site .dapr_config = DaprConfig ()
3968
+ site .dapr_config .enabled = True
3969
+ elif site .dapr_config and site .dapr_config .enabled is False :
3970
+ site .dapr_config .enabled = True
3971
+
3972
+ if any ([app_id , app_port , http_max_request_size , http_read_buffer_size , log_level , enable_api_logging ]) \
3973
+ and site .dapr_config is None :
3974
+ raise ArgumentUsageError ("usage error: parameters --dapr-app-id, "
3975
+ "--dapr-app-port, --dapr-http-max-request-size, "
3976
+ "--dapr-http-read-buffer-size, --dapr-log-level and "
3977
+ "--dapr-enable-api-logging must be used with parameter --enable-dapr true." )
3978
+
3979
+ if site .dapr_config is not None :
3980
+ import inspect
3981
+ frame = inspect .currentframe ()
3982
+ bool_flags = ['enabled' , 'enable_api_logging' ]
3983
+ int_flags = ['app_port' , 'http_max_request_size' , 'http_read_buffer_size' ]
3984
+ args , _ , _ , values = inspect .getargvalues (frame ) # pylint: disable=deprecated-method
3985
+ for arg in args [3 :10 ]:
3986
+ if arg in int_flags and values [arg ] is not None :
3987
+ values [arg ] = validate_and_convert_to_int (arg , values [arg ])
3988
+ if values .get (arg , None ):
3989
+ setattr (site .dapr_config , arg , values [arg ] if arg not in bool_flags else values [arg ] == 'true' )
3972
3990
3973
3991
if cpu is not None and memory is not None :
3974
3992
setattr (site .resource_config , 'cpu' , cpu )
@@ -3996,6 +4014,7 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non
3996
4014
if functions_version is None :
3997
4015
logger .warning ("No functions version specified so defaulting to 4." )
3998
4016
functions_version = '4'
4017
+ enable_dapr = (enable_dapr == "true" )
3999
4018
if deployment_source_url and deployment_local_git :
4000
4019
raise MutuallyExclusiveArgumentError ('usage error: --deployment-source-url <url> | --deployment-local-git' )
4001
4020
if any ([cpu , memory , workload_profile_name ]) and environment is None :
@@ -4017,6 +4036,13 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non
4017
4036
"dapr-enable-api-logging must be used with parameter --environment,"
4018
4037
"please provide the name of the container app environment using "
4019
4038
"--environment." )
4039
+ if any ([dapr_app_id , dapr_app_port , dapr_http_max_request_size , dapr_http_read_buffer_size ,
4040
+ dapr_log_level , dapr_enable_api_logging ]) and not enable_dapr :
4041
+ raise ArgumentUsageError ("usage error: parameters --dapr-app-id, "
4042
+ "--dapr-app-port, --dapr-http-max-request-size, "
4043
+ "--dapr-http-read-buffer-size, --dapr-log-level and "
4044
+ "dapr-enable-api-logging must be used with parameter --enable-dapr true." )
4045
+
4020
4046
from azure .mgmt .web .models import Site
4021
4047
SiteConfig , NameValuePair , DaprConfig , ResourceConfig = cmd .get_models ('SiteConfig' , 'NameValuePair' ,
4022
4048
'DaprConfig' , 'ResourceConfig' )
@@ -4025,8 +4051,6 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non
4025
4051
site_config = SiteConfig (app_settings = [])
4026
4052
client = web_client_factory (cmd .cli_ctx )
4027
4053
4028
- dapr_config = DaprConfig ()
4029
-
4030
4054
if vnet or subnet :
4031
4055
if plan :
4032
4056
if is_valid_resource_id (plan ):
@@ -4056,7 +4080,7 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non
4056
4080
subnet_resource_id = None
4057
4081
vnet_route_all_enabled = None
4058
4082
4059
- functionapp_def = Site (location = None , site_config = site_config , dapr_config = dapr_config , tags = tags ,
4083
+ functionapp_def = Site (location = None , site_config = site_config , tags = tags ,
4060
4084
virtual_network_subnet_id = subnet_resource_id , https_only = https_only ,
4061
4085
vnet_route_all_enabled = vnet_route_all_enabled )
4062
4086
@@ -4225,13 +4249,16 @@ def create_functionapp(cmd, resource_group_name, name, storage_account, plan=Non
4225
4249
if enable_dapr :
4226
4250
logger .warning ("Please note while using Dapr Extension for Azure Functions, app port is "
4227
4251
"mandatory when using Dapr triggers and should be empty when using only Dapr bindings." )
4252
+ dapr_enable_api_logging = (dapr_enable_api_logging == "true" )
4253
+ dapr_config = DaprConfig ()
4228
4254
dapr_config .enabled = True
4229
4255
dapr_config .app_id = dapr_app_id
4230
4256
dapr_config .app_port = dapr_app_port
4231
- dapr_config .http_max_request_size = dapr_http_max_request_size
4232
- dapr_config .http_read_buffer_size = dapr_http_read_buffer_size
4257
+ dapr_config .http_max_request_size = dapr_http_max_request_size or 4
4258
+ dapr_config .http_read_buffer_size = dapr_http_read_buffer_size or 4
4233
4259
dapr_config .log_level = dapr_log_level
4234
4260
dapr_config .enable_api_logging = dapr_enable_api_logging
4261
+ functionapp_def .dapr_config = dapr_config
4235
4262
4236
4263
managed_environment = get_managed_environment (cmd , resource_group_name , environment )
4237
4264
location = managed_environment .location
0 commit comments