Skip to content

Commit f98d2af

Browse files
author
Shikha Jha
committed
kudu ARM warmup
1 parent 4783eaf commit f98d2af

File tree

1 file changed

+44
-11
lines changed
  • src/azure-cli/azure/cli/command_modules/appservice

1 file changed

+44
-11
lines changed

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

Lines changed: 44 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

77007730
def _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

Comments
 (0)