Skip to content

Commit eddc651

Browse files
authored
[AppConfig] appconfig kv restore/show/list, appconfig revision list: Update datetime validation to accept timezone offset (#30369)
1 parent aeb9a42 commit eddc651

23 files changed

+19559
-20837
lines changed

src/azure-cli/azure/cli/command_modules/appconfig/_params.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def load_arguments(self, _):
5757
)
5858
datatime_filter_arg_type = CLIArgumentType(
5959
validator=validate_datetime,
60-
help='Format: "YYYY-MM-DDThh:mm:ssZ". If no time zone specified, use UTC by default.'
60+
help='Format: "YYYY-MM-DDThh:mm:ss["Z"/±hh:mm]. If no time zone or offset specified, use UTC by default.'
6161
)
6262
top_arg_type = CLIArgumentType(
6363
options_list=['--top', '-t'],

src/azure-cli/azure/cli/command_modules/appconfig/_validators.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
# pylint: disable=line-too-long
77

88
import json
9-
import re
109
import azure.cli.core.azclierror as CLIErrors
1110

11+
from datetime import datetime
1212
from knack.log import get_logger
1313
from knack.util import CLIError
1414
from azure.cli.core.azclierror import (InvalidArgumentValueError,
@@ -30,11 +30,22 @@
3030

3131

3232
def validate_datetime(namespace):
33-
''' valid datetime format:YYYY-MM-DDThh:mm:ssZ '''
34-
datetime_format = '^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])T(2[0-3]|[01][0-9]):[0-5][0-9]:[0-5][0-9][a-zA-Z]{0,5}$'
35-
if namespace.datetime is not None and re.search(datetime_format, namespace.datetime) is None:
36-
raise CLIError(
37-
'The input datetime is invalid. Correct format should be YYYY-MM-DDThh:mm:ssZ ')
33+
''' valid datetime format: YYYY-MM-DDThh:mm:ss["Z"/±hh:mm]'''
34+
supported_formats = ["%Y-%m-%dT%H:%M:%S", "%Y-%m-%dT%H:%M:%Sz", "%Y-%m-%dT%H:%M:%S%z"]
35+
if namespace.datetime is not None:
36+
for supported_format in supported_formats:
37+
if __tryparse_datetime(namespace.datetime, supported_format):
38+
return
39+
40+
raise InvalidArgumentValueError('The input datetime is invalid. Correct format should be YYYY-MM-DDThh:mm:ss["Z"/±hh:mm].')
41+
42+
43+
def __tryparse_datetime(datetime_string, dt_format):
44+
try:
45+
datetime.strptime(datetime_string, dt_format)
46+
return True
47+
except ValueError:
48+
return False
3849

3950

4051
def validate_connection_string(cmd, namespace):

src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/recordings/test_appconfig_to_appconfig_import_export.yaml

Lines changed: 63 additions & 94 deletions
Large diffs are not rendered by default.

src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/recordings/test_azconfig_aad_auth.yaml

Lines changed: 80 additions & 181 deletions
Large diffs are not rendered by default.

src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/recordings/test_azconfig_credential.yaml

Lines changed: 77 additions & 119 deletions
Large diffs are not rendered by default.

src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/recordings/test_azconfig_feature.yaml

Lines changed: 662 additions & 582 deletions
Large diffs are not rendered by default.

src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/recordings/test_azconfig_feature_filter.yaml

Lines changed: 649 additions & 923 deletions
Large diffs are not rendered by default.

src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/recordings/test_azconfig_feature_namespacing.yaml

Lines changed: 145 additions & 105 deletions
Large diffs are not rendered by default.

src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/recordings/test_azconfig_identity.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ interactions:
154154
x-content-type-options:
155155
- nosniff
156156
x-ms-ratelimit-remaining-subscription-global-reads:
157-
- '16499'
157+
- '16497'
158158
x-msedge-ref:
159159
- 'Ref A: 1A86A1CFAB9D4A43B1B5DD4D1BD8FACB Ref B: DB3EDGE3221 Ref C: 2025-01-17T08:00:08Z'
160160
status:

src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/recordings/test_azconfig_import_export.yaml

Lines changed: 12144 additions & 12860 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)