Skip to content

Commit 505d120

Browse files
authored
[container app] Fix #28226: az containerapp job update: Update existing scale rules if --scale-rule-name is passed (#28408)
1 parent fa94640 commit 505d120

3 files changed

Lines changed: 9202 additions & 845 deletions

File tree

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

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
RegistryCredentials as RegistryCredentialsModel,
5252
ContainerResources as ContainerResourcesModel,
5353
Scale as ScaleModel,
54-
JobScale as JobScaleModel,
5554
Container as ContainerModel,
5655
GitHubActionConfiguration,
5756
RegistryInfo as RegistryInfoModel,
@@ -1200,16 +1199,7 @@ def update_containerappsjob_logic(cmd,
12001199
eventTriggerConfig_def["scale"]["maxExecutions"] = max_executions
12011200
if polling_interval is not None:
12021201
eventTriggerConfig_def["scale"]["pollingInterval"] = polling_interval
1203-
1204-
scale_def = None
1205-
if min_executions is not None or max_executions is not None or polling_interval is not None:
1206-
scale_def = JobScaleModel
1207-
scale_def["pollingInterval"] = polling_interval
1208-
scale_def["minExecutions"] = min_executions
1209-
scale_def["maxReplicas"] = max_executions
1210-
# so we don't overwrite rules
1211-
if safe_get(new_containerappsjob, "properties", "template", "scale", "rules"):
1212-
new_containerappsjob["properties"]["template"]["scale"].pop(["rules"])
1202+
# ScaleRule
12131203
if scale_rule_name:
12141204
scale_rule_type = scale_rule_type.lower()
12151205
scale_rule_def = ScaleRuleModel
@@ -1220,10 +1210,17 @@ def update_containerappsjob_logic(cmd,
12201210
scale_rule_def["type"] = scale_rule_type
12211211
scale_rule_def["metadata"] = metadata_def
12221212
scale_rule_def["auth"] = auth_def
1223-
if not scale_def:
1224-
scale_def = JobScaleModel
1225-
scale_def["rules"] = [scale_rule_def]
1226-
eventTriggerConfig_def["scale"]["rules"] = scale_def["rules"]
1213+
if safe_get(eventTriggerConfig_def, "scale", "rules") is None:
1214+
eventTriggerConfig_def["scale"]["rules"] = []
1215+
existing_rules = eventTriggerConfig_def["scale"]["rules"]
1216+
updated_rule = False
1217+
for rule in existing_rules:
1218+
if rule["name"] == scale_rule_name:
1219+
rule.update(scale_rule_def)
1220+
updated_rule = True
1221+
break
1222+
if not updated_rule:
1223+
existing_rules.append(scale_rule_def)
12271224

12281225
new_containerappsjob["properties"]["configuration"]["eventTriggerConfig"] = eventTriggerConfig_def
12291226

0 commit comments

Comments
 (0)