Skip to content

Commit 57d41b4

Browse files
authored
handle listing role assignment failures (#200)
In some situations, Azure responds with failures that are unrelated to our request. One such failure is: ``` Error: unable to list active role assignments Caused by: request failed: status: 400 Bad Request Object { "error": Object { "code": String("ApiVersionNotRegistered"), "message": String("The ApiVersion '2024-06-01-Preview' is not registered for ResourceType 'Microsoft.CognitiveServices/accounts'. Valid Api Versions are: '2016-02-01-preview' '2017-04-18' '2021-04-30' '2021-10-01' '2022-03-01' '2022-07-01' '2099-01-01' '2022-10-01' '2022-12-01' '2023-05-01' '2023-06-01-preview' '2023-10-01-preview' '2024-04-01-preview' '2024-06-01-preview'."), }, } ``` In practice, these failures are intermittent. Instead of stopping, print a warning and continue.
1 parent 7e140d4 commit 57d41b4

File tree

1 file changed

+19
-12
lines changed

1 file changed

+19
-12
lines changed

src/bin/dump-roles.rs

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use std::{
1515
collections::BTreeSet,
1616
io::{stderr, stdout},
1717
};
18-
use tracing::debug;
18+
use tracing::{debug, warn};
1919
use tracing_subscriber::filter::LevelFilter;
2020

2121
/// A CLI to dump all the roles in a given scope
@@ -127,17 +127,24 @@ fn main() -> Result<()> {
127127
.collect();
128128

129129
for (scope, assignments) in result {
130-
for entry in assignments? {
131-
let Some(object) = entry.object else { continue };
132-
results.insert(Entry {
133-
role: entry.role,
134-
id: object.id,
135-
display_name: object.display_name,
136-
upn: object.upn,
137-
principal_type: object.object_type,
138-
scope: scope.clone(),
139-
via_group: None,
140-
});
130+
match assignments {
131+
Ok(assignments) => {
132+
for entry in assignments {
133+
let Some(object) = entry.object else { continue };
134+
results.insert(Entry {
135+
role: entry.role,
136+
id: object.id,
137+
display_name: object.display_name,
138+
upn: object.upn,
139+
principal_type: object.object_type,
140+
scope: scope.clone(),
141+
via_group: None,
142+
});
143+
}
144+
}
145+
Err(err) => {
146+
warn!("error listing roles for {scope}: {err}");
147+
}
141148
}
142149
}
143150

0 commit comments

Comments
 (0)