@@ -7691,6 +7691,31 @@ def _build_onedeploy_url(params, instance_id=None):
76917691 return _build_onedeploy_scm_url (params )
76927692
76937693
7694+ def _build_kudu_warmup_scm_url (params ):
7695+ scm_url = _get_scm_url (params .cmd , params .resource_group_name , params .webapp_name , params .slot )
7696+ return scm_url + '/api/deployments?warmup=true'
7697+
7698+
7699+ def _build_kudu_warmup_arm_url (params , instance_id = None ):
7700+ from azure .cli .core .commands .client_factory import get_subscription_id
7701+ client = web_client_factory (params .cmd .cli_ctx )
7702+ sub_id = get_subscription_id (params .cmd .cli_ctx )
7703+ instances_segment = f"/instances/{ instance_id } " if instance_id is not None else ""
7704+ if not params .slot :
7705+ base_url = (
7706+ f"subscriptions/{ sub_id } /resourceGroups/{ params .resource_group_name } /providers/Microsoft.Web/sites/"
7707+ f"{ params .webapp_name } { instances_segment } /deployments?api-version={ client .DEFAULT_API_VERSION } "
7708+ f"&warmup=true"
7709+ )
7710+ else :
7711+ base_url = (
7712+ f"subscriptions/{ sub_id } /resourceGroups/{ params .resource_group_name } /providers/Microsoft.Web/sites/"
7713+ f"{ params .webapp_name } /slots/{ params .slot } { instances_segment } /deployments"
7714+ f"?api-version={ client .DEFAULT_API_VERSION } &warmup=true"
7715+ )
7716+ return params .cmd .cli_ctx .cloud .endpoints .resource_manager + base_url
7717+
7718+
76947719def _build_onedeploy_scm_url (params ):
76957720 scm_url = _get_scm_url (params .cmd , params .resource_group_name , params .webapp_name , params .slot )
76967721 deploy_url = scm_url + '/api/publish?type=' + params .artifact_type
@@ -7856,10 +7881,10 @@ def _get_instance_id_internal(cmd, resource_group_name, webapp_name, slot):
78567881 return None
78577882
78587883
7859- def _warmup_kudu_and_get_cookie_internal (cmd , resource_group_name , webapp_name , slot ):
7884+ def _warmup_kudu_and_get_cookie_internal (params ):
78607885 import requests
7861- scm_url = _get_scm_url ( cmd , resource_group_name , webapp_name , slot )
7862- instance_id = _get_instance_id_internal ( cmd , resource_group_name , webapp_name , slot )
7886+ instance_id = _get_instance_id_internal ( params . cmd , params . resource_group_name , params . webapp_name , params . slot )
7887+
78637888 if instance_id is None :
78647889 logger .info ("Failed to get a Kudu instance id..." )
78657890 return None
@@ -7869,16 +7894,21 @@ def _warmup_kudu_and_get_cookie_internal(cmd, resource_group_name, webapp_name,
78697894
78707895 for _ in range (max_retries ):
78717896 try :
7872- headers = get_scm_site_headers (cmd .cli_ctx , webapp_name , resource_group_name )
7873- response = requests .get (scm_url + '/api/deployments?warmup=true' ,
7874- headers = headers , cookies = cookies , timeout = time_out )
7897+ if not params .src_url : # use SCM endpoint for Kudu warmup
7898+ kudu_warmup_url = _build_kudu_warmup_scm_url (params )
7899+ headers = get_scm_site_headers (params .cmd .cli_ctx , params .webapp_name , params .resource_group_name )
7900+ response = requests .get (kudu_warmup_url , headers = headers , cookies = cookies , timeout = time_out )
7901+ else : # use ARM endpoint for Kudu warmup
7902+ kudu_warmup_url = _build_kudu_warmup_arm_url (params , instance_id )
7903+ response = send_raw_request (params .cmd .cli_ctx , "GET" , kudu_warmup_url )
7904+
78757905 if response .status_code in (200 , 201 , 202 ):
78767906 logger .warning ("Warmed up Kudu instance successfully." )
78777907 return cookies
78787908 time_out = 300
78797909 except Exception as ex : # pylint: disable=broad-except
78807910 logger .info ("Error while warming-up Kudu with instanceid: %s, ex: %s" , instance_id , ex )
7881- return False
7911+ time_out = 300
78827912 logger .warning ("Failed to warm-up Kudu with instanceid: %s, "
78837913 "the deployment will proceed without pre-warmup." , instance_id )
78847914 return None
@@ -7905,8 +7935,7 @@ def _make_onedeploy_request(params):
79057935 if params .is_linux_webapp and not params .is_functionapp and params .enable_kudu_warmup :
79067936 try :
79077937 logger .warning ("Warming up Kudu before deployment." )
7908- cookies = _warmup_kudu_and_get_cookie_internal (params .cmd , params .resource_group_name ,
7909- params .webapp_name , params .slot )
7938+ cookies = _warmup_kudu_and_get_cookie_internal (params )
79107939 if cookies is None :
79117940 logger .info ("Failed to fetch affinity cookie for Kudu. "
79127941 "Deployment will proceed without pre-warming a Kudu instance." )
@@ -7928,8 +7957,7 @@ def _make_onedeploy_request(params):
79287957 if params .is_linux_webapp and not params .is_functionapp and params .enable_kudu_warmup :
79297958 try :
79307959 logger .warning ("Warming up Kudu before deployment." )
7931- cookies = _warmup_kudu_and_get_cookie_internal (params .cmd , params .resource_group_name ,
7932- params .webapp_name , params .slot )
7960+ cookies = _warmup_kudu_and_get_cookie_internal (params )
79337961 if cookies is None :
79347962 logger .info ("Failed to fetch affinity cookie for Kudu. "
79357963 "Deployment will proceed without pre-warming a Kudu instance." )
0 commit comments