Skip to content
This repository was archived by the owner on Nov 1, 2023. It is now read-only.

Commit 386aabb

Browse files
authored
Better logging
1 parent 17d733c commit 386aabb

File tree

4 files changed

+12
-9
lines changed

4 files changed

+12
-9
lines changed

src/ApiService/ApiService/Functions/QueueFileChanges.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,14 +99,16 @@ private async Async.Task<bool> ApplyRetentionPolicy(ResourceIdentifier storageAc
9999
var containerClient = account.GetBlobContainerClient(container.String);
100100
var containerProps = await containerClient.GetPropertiesAsync();
101101
var retentionPeriod = RetentionPolicyUtils.GetContainerRetentionPeriodFromMetadata(containerProps.Value.Metadata);
102-
if (retentionPeriod.HasValue) {
102+
if (!retentionPeriod.IsOk) {
103+
_log.LogError("invalid retention period: {Error}", retentionPeriod.ErrorV);
104+
} else if (retentionPeriod.OkV is TimeSpan period) {
103105
var blobClient = containerClient.GetBlobClient(path);
104106
var tags = (await blobClient.GetTagsAsync()).Value.Tags;
105-
var expiryDate = DateTime.UtcNow + retentionPeriod.Value;
107+
var expiryDate = DateTime.UtcNow + period;
106108
var tag = RetentionPolicyUtils.CreateExpiryDateTag(DateOnly.FromDateTime(expiryDate));
107109
if (tags.TryAdd(tag.Key, tag.Value)) {
108110
_ = await blobClient.SetTagsAsync(tags);
109-
_log.LogInformation("applied container retention policy ({Policy}) to {Path}", retentionPeriod.Value, path);
111+
_log.LogInformation("applied container retention policy ({Policy}) to {Path}", period, path);
110112
return true;
111113
}
112114
}

src/ApiService/ApiService/OneFuzzTypes/Enums.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ public enum ErrorCode {
5050
ADO_WORKITEM_PROCESSING_DISABLED = 494,
5151
ADO_VALIDATION_INVALID_PATH = 495,
5252
ADO_VALIDATION_INVALID_PROJECT = 496,
53+
INVALID_RETENTION_PERIOD = 497,
5354
// NB: if you update this enum, also update enums.py
5455
}
5556

src/ApiService/ApiService/onefuzzlib/RetentionPolicy.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,17 @@ public static KeyValuePair<string, string> CreateExpiryDateTag(DateOnly expiryDa
2727
// NB: this must match the value used on the CLI side
2828
public const string CONTAINER_RETENTION_KEY = "onefuzz_retentionperiod";
2929

30-
public static TimeSpan? GetContainerRetentionPeriodFromMetadata(IDictionary<string, string>? containerMetadata) {
30+
public static OneFuzzResult<TimeSpan?> GetContainerRetentionPeriodFromMetadata(IDictionary<string, string>? containerMetadata) {
3131
if (containerMetadata is not null &&
3232
containerMetadata.TryGetValue(CONTAINER_RETENTION_KEY, out var retentionString) &&
3333
!string.IsNullOrWhiteSpace(retentionString)) {
3434
try {
35-
return XmlConvert.ToTimeSpan(retentionString);
36-
} catch {
37-
// Log error: unable to convert xxx
38-
return null;
35+
return Result.Ok<TimeSpan?>(XmlConvert.ToTimeSpan(retentionString));
36+
} catch (Exception ex) {
37+
return Error.Create(ErrorCode.INVALID_RETENTION_PERIOD, ex.Message);
3938
}
4039
}
4140

42-
return null;
41+
return Result.Ok<TimeSpan?>(null);
4342
}
4443
}

src/pytypes/onefuzztypes/enums.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ class ErrorCode(Enum):
304304
ADO_VALIDATION_MISSING_PAT_SCOPES = 492
305305
ADO_VALIDATION_INVALID_PATH = 495
306306
ADO_VALIDATION_INVALID_PROJECT = 496
307+
INVALID_RETENTION_PERIOD = 497
307308
# NB: if you update this enum, also update Enums.cs
308309

309310

0 commit comments

Comments
 (0)