Skip to content

Commit 36f3fad

Browse files
committed
Addressing PR comments and issues after bug bash
1 parent 0d9e192 commit 36f3fad

13 files changed

+646
-633
lines changed

src/load/azext_load/data_plane/load_trigger/custom.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def create_trigger_schedule(
6969
response = client.create_or_update_trigger(trigger_id=trigger_id, body=trigger_body)
7070
logger.debug("Created trigger schedule: %s", response)
7171
logger.info("Creating trigger schedule completed")
72-
return response
72+
return response.as_dict()
7373
except Exception:
7474
logger.error("Error occurred while creating schedule trigger.")
7575
raise
@@ -120,20 +120,20 @@ def update_trigger_schedule(
120120
existing_trigger_schedule.recurrence
121121
)
122122
logger.debug("Recurrence object: %s", recurrence_body)
123-
new_trigger_body = utils.get_schedule_trigger_body_for_update(
124-
existing_trigger_schedule,
125-
recurrence_body,
126-
display_name,
127-
description,
128-
trigger_start_date_time,
129-
test_ids,
123+
new_trigger_body = models.ScheduleTestsTrigger(
124+
test_ids=test_ids,
125+
recurrence=recurrence_body,
126+
start_date_time=trigger_start_date_time,
127+
display_name=display_name,
128+
description=description,
130129
)
130+
new_trigger_body.state = existing_trigger_schedule.state
131131
logger.debug("Schedule trigger body to be sent for update: %s", new_trigger_body)
132132
try:
133133
response = client.create_or_update_trigger(trigger_id=trigger_id, body=new_trigger_body)
134134
logger.debug("Updated schedule trigger: %s", response)
135135
logger.info("Updating schedule trigger completed")
136-
return response
136+
return response.as_dict()
137137
except Exception:
138138
logger.error("Error occurred while updating schedule trigger.")
139139
raise
@@ -165,7 +165,7 @@ def get_trigger_schedule(
165165
client = get_admin_data_plane_client(cmd, load_test_resource, resource_group_name)
166166
response = client.get_trigger(trigger_id)
167167
logger.debug("Fetched schedule trigger: %s", response)
168-
return response
168+
return response.as_dict()
169169

170170

171171
def pause_trigger_schedule(
@@ -190,12 +190,12 @@ def pause_trigger_schedule(
190190
existing_trigger_schedule.state = enums.TriggerState.PAUSED
191191
response = client.create_or_update_trigger(trigger_id=trigger_id, body=existing_trigger_schedule)
192192
logger.debug("Paused schedule trigger: %s", response)
193-
return response
193+
return response.as_dict()
194194
if existing_trigger_schedule.state == enums.TriggerState.COMPLETED:
195-
msg = "Schedule trigger with id: {} is already completed.".format(trigger_id)
195+
msg = "Schedule trigger with id: {} is already completed. A completed schedule cannot be paused.".format(trigger_id)
196196
logger.error(msg)
197197
raise ValidationError(msg)
198-
logger.warning("Schedule trigger is not active. It is in %s state.", existing_trigger_schedule.state.value)
198+
logger.warning("Schedule trigger is not active. It is in %s state. Enable the schedule before performing pause action.", existing_trigger_schedule.state.value)
199199

200200

201201
def enable_trigger_schedule(
@@ -220,8 +220,8 @@ def enable_trigger_schedule(
220220
existing_trigger_schedule.state = enums.TriggerState.ACTIVE
221221
response = client.create_or_update_trigger(trigger_id=trigger_id, body=existing_trigger_schedule)
222222
logger.debug("Enabled schedule trigger: %s", response)
223-
return response
224-
msg = "Schedule trigger with id: {} is already completed. Cannot enable a completed schedule.".format(trigger_id)
223+
return response.as_dict()
224+
msg = "Schedule trigger with id: {} is already completed. A completed schedule cannot be enabled.".format(trigger_id)
225225
logger.debug(msg)
226226
raise ValidationError(msg)
227227

@@ -240,6 +240,6 @@ def list_trigger_schedules(
240240
if test_ids:
241241
test_ids = ",".join(test_ids)
242242
logger.info("Schedule trigger states: %s", trigger_states)
243-
response = client.list_trigger(test_ids=test_ids, states=trigger_states)
244-
logger.debug("Fetched list of schedule triggers: %s", response)
245-
return response
243+
response_list = client.list_trigger(test_ids=test_ids, states=trigger_states)
244+
logger.debug("Fetched list of schedule triggers: %s", response_list)
245+
return [response.as_dict() for response in response_list]

src/load/azext_load/data_plane/load_trigger/utils.py

Lines changed: 12 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def get_recurrence_end_body(end_after_occurrence, end_after_date_time, existing_
3636
return existing_recurrence_end
3737

3838

39-
def handle_daily_recurrence(recurrence_interval, recurrence_end_body, **kwargs):
39+
def _handle_daily_recurrence(recurrence_interval, recurrence_end_body, **kwargs):
4040
if recurrence_interval is None:
4141
raise InvalidArgumentValueError("Recurrence interval is required for daily recurrence.")
4242
if any(kwargs.values()):
@@ -47,7 +47,7 @@ def handle_daily_recurrence(recurrence_interval, recurrence_end_body, **kwargs):
4747
)
4848

4949

50-
def handle_weekly_recurrence(recurrence_interval, recurrence_week_days, recurrence_end_body, **kwargs):
50+
def _handle_weekly_recurrence(recurrence_interval, recurrence_week_days, recurrence_end_body, **kwargs):
5151
if recurrence_interval is None:
5252
raise InvalidArgumentValueError("Recurrence interval is required for weekly recurrence.")
5353
if recurrence_week_days is None or len(recurrence_week_days) == 0:
@@ -61,7 +61,7 @@ def handle_weekly_recurrence(recurrence_interval, recurrence_week_days, recurren
6161
)
6262

6363

64-
def handle_hourly_recurrence(recurrence_interval, recurrence_end_body, **kwargs):
64+
def _handle_hourly_recurrence(recurrence_interval, recurrence_end_body, **kwargs):
6565
if recurrence_interval is None:
6666
raise InvalidArgumentValueError("Recurrence interval is required for hourly recurrence.")
6767
if any(kwargs.values()):
@@ -72,7 +72,7 @@ def handle_hourly_recurrence(recurrence_interval, recurrence_end_body, **kwargs)
7272
)
7373

7474

75-
def handle_monthly_by_dates_recurrence(recurrence_interval, recurrence_dates_in_month, recurrence_end_body, **kwargs):
75+
def _handle_monthly_by_dates_recurrence(recurrence_interval, recurrence_dates_in_month, recurrence_end_body, **kwargs):
7676
if recurrence_interval is None:
7777
raise InvalidArgumentValueError("Recurrence interval is required for monthly by dates recurrence.")
7878
if recurrence_dates_in_month is None or len(recurrence_dates_in_month) == 0:
@@ -86,7 +86,7 @@ def handle_monthly_by_dates_recurrence(recurrence_interval, recurrence_dates_in_
8686
)
8787

8888

89-
def handle_monthly_by_days_recurrence(recurrence_interval, recurrence_week_days, recurrence_index, recurrence_end_body, **kwargs):
89+
def _handle_monthly_by_days_recurrence(recurrence_interval, recurrence_week_days, recurrence_index, recurrence_end_body, **kwargs):
9090
if recurrence_interval is None:
9191
raise InvalidArgumentValueError("Recurrence interval is required for monthly by days recurrence.")
9292
if recurrence_week_days is None or len(recurrence_week_days) == 0:
@@ -103,7 +103,7 @@ def handle_monthly_by_days_recurrence(recurrence_interval, recurrence_week_days,
103103
)
104104

105105

106-
def handle_cron_recurrence(recurrence_cron_expression, recurrence_end_body, **kwargs):
106+
def _handle_cron_recurrence(recurrence_cron_expression, recurrence_end_body, **kwargs):
107107
if recurrence_cron_expression is None:
108108
raise InvalidArgumentValueError("Recurrence cron expression is required for cron recurrence.")
109109
if any(kwargs.values()):
@@ -115,12 +115,12 @@ def handle_cron_recurrence(recurrence_cron_expression, recurrence_end_body, **kw
115115

116116

117117
recurrence_handlers = {
118-
enums.Frequency.DAILY: handle_daily_recurrence,
119-
enums.Frequency.WEEKLY: handle_weekly_recurrence,
120-
enums.Frequency.HOURLY: handle_hourly_recurrence,
121-
enums.Frequency.MONTHLY_BY_DATES: handle_monthly_by_dates_recurrence,
122-
enums.Frequency.MONTHLY_BY_DAYS: handle_monthly_by_days_recurrence,
123-
enums.Frequency.CRON: handle_cron_recurrence,
118+
enums.Frequency.DAILY: _handle_daily_recurrence,
119+
enums.Frequency.WEEKLY: _handle_weekly_recurrence,
120+
enums.Frequency.HOURLY: _handle_hourly_recurrence,
121+
enums.Frequency.MONTHLY_BY_DATES: _handle_monthly_by_dates_recurrence,
122+
enums.Frequency.MONTHLY_BY_DAYS: _handle_monthly_by_days_recurrence,
123+
enums.Frequency.CRON: _handle_cron_recurrence,
124124
}
125125

126126

@@ -195,37 +195,3 @@ def get_recurrence_body_for_update(
195195
recurrence_week_days,
196196
recurrence_end_body
197197
)
198-
199-
200-
def get_schedule_trigger_body_for_update(
201-
existing_trigger_schedule,
202-
recurrence_body,
203-
display_name,
204-
description,
205-
trigger_start_date_time,
206-
test_ids,
207-
):
208-
new_trigger_body = models.ScheduleTestsTrigger(
209-
test_ids=test_ids,
210-
recurrence=recurrence_body,
211-
start_date_time=trigger_start_date_time,
212-
display_name=display_name,
213-
description=description,
214-
)
215-
216-
if test_ids is None:
217-
new_trigger_body.test_ids = existing_trigger_schedule.test_ids
218-
219-
if trigger_start_date_time is None:
220-
new_trigger_body.start_date_time = existing_trigger_schedule.start_date_time
221-
222-
if display_name is None:
223-
new_trigger_body.display_name = existing_trigger_schedule.display_name
224-
225-
if description is None:
226-
new_trigger_body.description = existing_trigger_schedule.description
227-
228-
if recurrence_body is None:
229-
new_trigger_body.recurrence = existing_trigger_schedule.recurrence
230-
231-
return new_trigger_body

src/load/azext_load/data_plane/utils/argtypes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@
482482
)
483483

484484
recurrence_dates_in_month = CLIArgumentType(
485-
options_list=["--recurrence-dates-in-month"],
485+
options_list=["--recurrence-dates"],
486486
nargs="+",
487487
type=int,
488488
validator=validators.validate_recurrence_dates_in_month,

src/load/azext_load/data_plane/utils/validators.py

Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -26,28 +26,27 @@
2626

2727
logger = get_logger(__name__)
2828

29+
def _validate_id(namespace, id_name):
30+
"""Validates a generic ID"""
31+
id_value = getattr(namespace, id_name, None)
32+
if id_value is None:
33+
raise InvalidArgumentValueError(f"{id_name} is required.")
34+
if not isinstance(id_value, str):
35+
raise InvalidArgumentValueError(
36+
f"Invalid {id_name} type: {type(id_value)}. Expected a string."
37+
)
38+
if not re.match("^[a-z0-9_-]*$", id_value):
39+
raise InvalidArgumentValueError(f"Invalid {id_name} value.")
40+
2941

3042
def validate_test_id(namespace):
3143
"""Validates test-id"""
32-
if not isinstance(namespace.test_id, str):
33-
raise InvalidArgumentValueError(
34-
f"Invalid test-id type: {type(namespace.test_id)}"
35-
)
36-
if not re.match("^[a-z0-9_-]*$", namespace.test_id):
37-
raise InvalidArgumentValueError("Invalid test-id value")
44+
_validate_id(namespace, "test_id")
3845

3946

4047
def validate_test_run_id(namespace):
4148
"""Validates test-run-id"""
42-
if namespace.test_run_id is None:
43-
namespace.test_run_id = utils.get_random_uuid()
44-
if not isinstance(namespace.test_run_id, str):
45-
raise InvalidArgumentValueError(
46-
f"Invalid test-run-id type: {type(namespace.test_run_id)}"
47-
)
48-
if not re.match("^[a-z0-9_-]*$", namespace.test_run_id):
49-
raise InvalidArgumentValueError("Invalid test-run-id value")
50-
49+
_validate_id(namespace, "test_run_id")
5150

5251
def _validate_akv_url(string, url_type="secrets|certificates|keys|storage"):
5352
"""Validates Azure Key Vault URL"""
@@ -552,36 +551,30 @@ def validate_engine_ref_ids_and_type(incoming_engine_ref_id_type, engine_ref_ids
552551

553552
def validate_trigger_id(namespace):
554553
"""Validates trigger-id"""
555-
if not isinstance(namespace.trigger_id, str):
556-
raise InvalidArgumentValueError(
557-
f"Invalid trigger-id type: {type(namespace.trigger_id)}"
558-
)
559-
if not re.match("^[a-z0-9_-]*$", namespace.trigger_id):
560-
raise InvalidArgumentValueError("Invalid trigger-id value")
554+
_validate_id(namespace, "trigger_id")
561555

562556

563557
def validate_recurrence_dates_in_month(namespace):
564558
if namespace.recurrence_dates_in_month is None:
565559
return
566560
if not isinstance(namespace.recurrence_dates_in_month, list):
567561
raise InvalidArgumentValueError(
568-
f"Invalid recurrence-dates-in-month type: {type(namespace.recurrence_dates_in_month)}. \
562+
f"Invalid recurrence-dates type: {type(namespace.recurrence_dates_in_month)}. \
569563
Expected list of integers"
570564
)
571565
for item in namespace.recurrence_dates_in_month:
572566
if not isinstance(item, int) or item < 1 or item > 31:
573567
raise InvalidArgumentValueError(
574-
f"Invalid recurrence-dates-in-month item: {item}. Expected integer between 1 and 31"
568+
f"Invalid recurrence-dates item: {item}. Expected integer between 1 and 31"
575569
)
576570

577571

578572
def validate_schedule_test_ids(namespace):
579573
if namespace.test_ids is None:
580574
return
581-
if isinstance(namespace.test_ids, list) and len(namespace.test_ids) != 1:
582-
raise InvalidArgumentValueError(
583-
f"Invalid test-ids type: {type(namespace.test_ids)}. \
584-
Expected list of test ids"
585-
)
575+
if not isinstance(namespace.test_ids, list):
576+
raise InvalidArgumentValueError("Invalid test-ids type: {}. Expected list of test id.".format(type(namespace.test_ids)))
577+
if len(namespace.test_ids) != 1:
578+
raise InvalidArgumentValueError("Currently we only support one test ID per schedule.")
586579
if not re.match("^[a-z0-9_-]*$", namespace.test_ids[0]):
587-
raise InvalidArgumentValueError("Invalid test-id value")
580+
raise InvalidArgumentValueError("Invalid test-id value.")

0 commit comments

Comments
 (0)