@@ -7696,6 +7696,36 @@ def _build_onedeploy_url(params, instance_id=None):
76967696 return _build_onedeploy_arm_url (params , instance_id )
76977697 return _build_onedeploy_scm_url (params )
76987698
7699+ def _build_kudu_warmup_url (params , instance_id = None ):
7700+ if params .src_url :
7701+ return _build_kudu_warmup_arm_url (params , instance_id )
7702+ return _build_kudu_warmup_scm_url (params )
7703+
7704+
7705+ def _build_kudu_warmup_scm_url (params ):
7706+ scm_url = _get_scm_url (params .cmd , params .resource_group_name , params .webapp_name , params .slot )
7707+ return scm_url + '/api/deployments?warmup=true'
7708+
7709+
7710+ def _build_kudu_warmup_arm_url (params , instance_id = None ):
7711+ from azure .cli .core .commands .client_factory import get_subscription_id
7712+ client = web_client_factory (params .cmd .cli_ctx )
7713+ sub_id = get_subscription_id (params .cmd .cli_ctx )
7714+ instances_param = f"/instances/{ instance_id } " if instance_id is not None else ""
7715+ if not params .slot :
7716+ base_url = (
7717+ f"subscriptions/{ sub_id } /resourceGroups/{ params .resource_group_name } /providers/Microsoft.Web/sites/"
7718+ f"{ params .webapp_name } { instances_param } /deployments?api-version={ client .DEFAULT_API_VERSION } "
7719+ f"&warmup=true"
7720+ )
7721+ else :
7722+ base_url = (
7723+ f"subscriptions/{ sub_id } /resourceGroups/{ params .resource_group_name } /providers/Microsoft.Web/sites/"
7724+ f"{ params .webapp_name } /slots/{ params .slot } { instances_param } /deployments"
7725+ f"?api-version={ client .DEFAULT_API_VERSION } &warmup=true"
7726+ )
7727+ return params .cmd .cli_ctx .cloud .endpoints .resource_manager + base_url
7728+
76997729
77007730def _build_onedeploy_scm_url (params ):
77017731 scm_url = _get_scm_url (params .cmd , params .resource_group_name , params .webapp_name , params .slot )
@@ -7862,10 +7892,10 @@ def _get_instance_id_internal(cmd, resource_group_name, webapp_name, slot):
78627892 return None
78637893
78647894
7865- def _warmup_kudu_and_get_cookie_internal (cmd , resource_group_name , webapp_name , slot ):
7895+ def _warmup_kudu_and_get_cookie_internal (params ):
78667896 import requests
7867- scm_url = _get_scm_url ( cmd , resource_group_name , webapp_name , slot )
7868- instance_id = _get_instance_id_internal ( cmd , resource_group_name , webapp_name , slot )
7897+ instance_id = _get_instance_id_internal ( params . cmd , params . resource_group_name , params . webapp_name , params . slot )
7898+
78697899 if instance_id is None :
78707900 logger .info ("Failed to get a Kudu instance id..." )
78717901 return None
@@ -7875,16 +7905,21 @@ def _warmup_kudu_and_get_cookie_internal(cmd, resource_group_name, webapp_name,
78757905
78767906 for _ in range (max_retries ):
78777907 try :
7878- headers = get_scm_site_headers (cmd .cli_ctx , webapp_name , resource_group_name )
7879- response = requests .get (scm_url + '/api/deployments?warmup=true' ,
7880- headers = headers , cookies = cookies , timeout = time_out )
7908+ if not params .src_url : # use SCM endpoint for Kudu warmup
7909+ kudu_warmup_url = _build_kudu_warmup_url (params )
7910+ headers = get_scm_site_headers (params .cmd .cli_ctx , params .webapp_name , params .resource_group_name )
7911+ response = requests .get (kudu_warmup_url , headers = headers , cookies = cookies , timeout = time_out )
7912+ else : # use ARM endpoint for Kudu warmup
7913+ kudu_warmup_url = _build_kudu_warmup_arm_url (params , instance_id )
7914+ response = send_raw_request (params .cmd .cli_ctx , "GET" , kudu_warmup_url )
7915+
78817916 if response .status_code in (200 , 201 , 202 ):
78827917 logger .warning ("Warmed up Kudu instance successfully." )
78837918 return cookies
78847919 time_out = 300
78857920 except Exception as ex : # pylint: disable=broad-except
78867921 logger .info ("Error while warming-up Kudu with instanceid: %s, ex: %s" , instance_id , ex )
7887- return False
7922+ return None
78887923 logger .warning ("Failed to warm-up Kudu with instanceid: %s, "
78897924 "the deployment will proceed without pre-warmup." , instance_id )
78907925 return None
@@ -7911,8 +7946,7 @@ def _make_onedeploy_request(params):
79117946 if params .is_linux_webapp and not params .is_functionapp and params .enable_kudu_warmup :
79127947 try :
79137948 logger .warning ("Warming up Kudu before deployment." )
7914- cookies = _warmup_kudu_and_get_cookie_internal (params .cmd , params .resource_group_name ,
7915- params .webapp_name , params .slot )
7949+ cookies = _warmup_kudu_and_get_cookie_internal (params )
79167950 if cookies is None :
79177951 logger .info ("Failed to fetch affinity cookie for Kudu. "
79187952 "Deployment will proceed without pre-warming a Kudu instance." )
@@ -7934,8 +7968,7 @@ def _make_onedeploy_request(params):
79347968 if params .is_linux_webapp and not params .is_functionapp and params .enable_kudu_warmup :
79357969 try :
79367970 logger .warning ("Warming up Kudu before deployment." )
7937- cookies = _warmup_kudu_and_get_cookie_internal (params .cmd , params .resource_group_name ,
7938- params .webapp_name , params .slot )
7971+ cookies = _warmup_kudu_and_get_cookie_internal (params )
79397972 if cookies is None :
79407973 logger .info ("Failed to fetch affinity cookie for Kudu. "
79417974 "Deployment will proceed without pre-warming a Kudu instance." )
0 commit comments