@@ -83,13 +83,22 @@ pub fn v2_v3(mut storage_metadata: JsonValue) -> JsonValue {
83
83
// user is an object
84
84
let user = user. as_object_mut ( ) . unwrap ( ) ;
85
85
// take out privileges
86
- let JsonValue :: Array ( privileges) = user. remove ( "role" ) . expect ( "role exists for v2" ) else {
86
+ let JsonValue :: Array ( mut privileges) = user. remove ( "role" ) . expect ( "role exists for v2" )
87
+ else {
87
88
panic ! ( "privileges is an arrray" )
88
89
} ;
89
90
90
91
let mut roles = Vec :: new ( ) ;
91
92
92
93
if !privileges. is_empty ( ) {
94
+ for privilege in privileges. iter_mut ( ) {
95
+ let privilege_value = privilege. get_mut ( "privilege" ) ;
96
+ if let Some ( value) = privilege_value {
97
+ if value. as_str ( ) . unwrap ( ) == "ingester" {
98
+ * value = JsonValue :: String ( "ingestor" . to_string ( ) ) ;
99
+ }
100
+ }
101
+ }
93
102
let role_name =
94
103
rand:: distributions:: Alphanumeric . sample_string ( & mut rand:: thread_rng ( ) , 8 ) ;
95
104
privileges_map. push ( ( role_name. clone ( ) , JsonValue :: Array ( privileges) ) ) ;
@@ -121,6 +130,20 @@ pub fn update_v3(mut storage_metadata: JsonValue) -> JsonValue {
121
130
) ;
122
131
}
123
132
133
+ let roles = metadata. get_mut ( "roles" ) . unwrap ( ) . as_object_mut ( ) . unwrap ( ) ;
134
+ for ( _, privileges) in roles. iter_mut ( ) {
135
+ let JsonValue :: Array ( privileges) = privileges else {
136
+ panic ! ( "privileges is an array" )
137
+ } ;
138
+ for privilege in privileges. iter_mut ( ) {
139
+ let privilege_value = privilege. get_mut ( "privilege" ) ;
140
+ if let Some ( value) = privilege_value {
141
+ if value. as_str ( ) . unwrap ( ) == "ingester" {
142
+ * value = JsonValue :: String ( "ingestor" . to_string ( ) ) ;
143
+ }
144
+ }
145
+ }
146
+ }
124
147
storage_metadata
125
148
}
126
149
0 commit comments