git.frostfs.info/TrueCloudLab/frostfs-sdk-go@v0.0.0-20241022124111-5361f0ecebd3/eacl/enums.go (about) 1 package eacl 2 3 import ( 4 v2acl "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/acl" 5 ) 6 7 // Action taken if ContainerEACL record matched request. 8 // Action is compatible with v2 acl.Action enum. 9 type Action uint32 10 11 const ( 12 // ActionUnknown is an Action value used to mark action as undefined. 13 ActionUnknown Action = iota 14 15 // ActionAllow is an Action value that allows access to the operation from context. 16 ActionAllow 17 18 // ActionDeny is an Action value that denies access to the operation from context. 19 ActionDeny 20 ) 21 22 // Operation is a object service method to match request. 23 // Operation is compatible with v2 acl.Operation enum. 24 type Operation uint32 25 26 const ( 27 // OperationUnknown is an Operation value used to mark operation as undefined. 28 OperationUnknown Operation = iota 29 30 // OperationGet is an object get Operation. 31 OperationGet 32 33 // OperationHead is an Operation of getting the object header. 34 OperationHead 35 36 // OperationPut is an object put Operation. 37 OperationPut 38 39 // OperationDelete is an object delete Operation. 40 OperationDelete 41 42 // OperationSearch is an object search Operation. 43 OperationSearch 44 45 // OperationRange is an object payload range retrieval Operation. 46 OperationRange 47 48 // OperationRangeHash is an object payload range hashing Operation. 49 OperationRangeHash 50 ) 51 52 // Role is a group of request senders to match request. 53 // Role is compatible with v2 acl.Role enum. 54 type Role uint32 55 56 const ( 57 // RoleUnknown is a Role value used to mark role as undefined. 58 RoleUnknown Role = iota 59 60 // RoleUser is a group of senders that contains only key of container owner. 61 RoleUser 62 63 // RoleSystem is a group of senders that contains keys of container nodes and 64 // inner ring nodes. 65 RoleSystem 66 67 // RoleOthers is a group of senders that contains none of above keys. 68 RoleOthers 69 ) 70 71 // Match is binary operation on filer name and value to check if request is matched. 72 // Match is compatible with v2 acl.MatchType enum. 73 type Match uint32 74 75 const ( 76 // MatchUnknown is a Match value used to mark matcher as undefined. 77 MatchUnknown Match = iota 78 79 // MatchStringEqual is a Match of string equality. 80 MatchStringEqual 81 82 // MatchStringNotEqual is a Match of string inequality. 83 MatchStringNotEqual 84 ) 85 86 // FilterHeaderType indicates source of headers to make matches. 87 // FilterHeaderType is compatible with v2 acl.HeaderType enum. 88 type FilterHeaderType uint32 89 90 const ( 91 // HeaderTypeUnknown is a FilterHeaderType value used to mark header type as undefined. 92 HeaderTypeUnknown FilterHeaderType = iota 93 94 // HeaderFromRequest is a FilterHeaderType for request X-Header. 95 HeaderFromRequest 96 97 // HeaderFromObject is a FilterHeaderType for object header. 98 HeaderFromObject 99 100 // HeaderFromService is a FilterHeaderType for service header. 101 HeaderFromService 102 ) 103 104 // ToV2 converts Action to v2 Action enum value. 105 func (a Action) ToV2() v2acl.Action { 106 switch a { 107 case ActionAllow: 108 return v2acl.ActionAllow 109 case ActionDeny: 110 return v2acl.ActionDeny 111 default: 112 return v2acl.ActionUnknown 113 } 114 } 115 116 // ActionFromV2 converts v2 Action enum value to Action. 117 func ActionFromV2(action v2acl.Action) (a Action) { 118 switch action { 119 case v2acl.ActionAllow: 120 a = ActionAllow 121 case v2acl.ActionDeny: 122 a = ActionDeny 123 default: 124 a = ActionUnknown 125 } 126 127 return a 128 } 129 130 // String returns string representation of Action. 131 // 132 // String mapping: 133 // - ActionAllow: ALLOW; 134 // - ActionDeny: DENY; 135 // - ActionUnknown, default: ACTION_UNSPECIFIED. 136 func (a Action) String() string { 137 return a.ToV2().String() 138 } 139 140 // FromString parses Action from a string representation. 141 // It is a reverse action to String(). 142 // 143 // Returns true if s was parsed successfully. 144 func (a *Action) FromString(s string) bool { 145 var g v2acl.Action 146 147 ok := g.FromString(s) 148 149 if ok { 150 *a = ActionFromV2(g) 151 } 152 153 return ok 154 } 155 156 // ToV2 converts Operation to v2 Operation enum value. 157 func (o Operation) ToV2() v2acl.Operation { 158 switch o { 159 case OperationGet: 160 return v2acl.OperationGet 161 case OperationHead: 162 return v2acl.OperationHead 163 case OperationPut: 164 return v2acl.OperationPut 165 case OperationDelete: 166 return v2acl.OperationDelete 167 case OperationSearch: 168 return v2acl.OperationSearch 169 case OperationRange: 170 return v2acl.OperationRange 171 case OperationRangeHash: 172 return v2acl.OperationRangeHash 173 default: 174 return v2acl.OperationUnknown 175 } 176 } 177 178 // OperationFromV2 converts v2 Operation enum value to Operation. 179 func OperationFromV2(operation v2acl.Operation) (o Operation) { 180 switch operation { 181 case v2acl.OperationGet: 182 o = OperationGet 183 case v2acl.OperationHead: 184 o = OperationHead 185 case v2acl.OperationPut: 186 o = OperationPut 187 case v2acl.OperationDelete: 188 o = OperationDelete 189 case v2acl.OperationSearch: 190 o = OperationSearch 191 case v2acl.OperationRange: 192 o = OperationRange 193 case v2acl.OperationRangeHash: 194 o = OperationRangeHash 195 default: 196 o = OperationUnknown 197 } 198 199 return o 200 } 201 202 // String returns string representation of Operation. 203 // 204 // String mapping: 205 // - OperationGet: GET; 206 // - OperationHead: HEAD; 207 // - OperationPut: PUT; 208 // - OperationDelete: DELETE; 209 // - OperationSearch: SEARCH; 210 // - OperationRange: GETRANGE; 211 // - OperationRangeHash: GETRANGEHASH; 212 // - OperationUnknown, default: OPERATION_UNSPECIFIED. 213 func (o Operation) String() string { 214 return o.ToV2().String() 215 } 216 217 // FromString parses Operation from a string representation. 218 // It is a reverse action to String(). 219 // 220 // Returns true if s was parsed successfully. 221 func (o *Operation) FromString(s string) bool { 222 var g v2acl.Operation 223 224 ok := g.FromString(s) 225 226 if ok { 227 *o = OperationFromV2(g) 228 } 229 230 return ok 231 } 232 233 // ToV2 converts Role to v2 Role enum value. 234 func (r Role) ToV2() v2acl.Role { 235 switch r { 236 case RoleUser: 237 return v2acl.RoleUser 238 case RoleSystem: 239 return v2acl.RoleSystem 240 case RoleOthers: 241 return v2acl.RoleOthers 242 default: 243 return v2acl.RoleUnknown 244 } 245 } 246 247 // RoleFromV2 converts v2 Role enum value to Role. 248 func RoleFromV2(role v2acl.Role) (r Role) { 249 switch role { 250 case v2acl.RoleUser: 251 r = RoleUser 252 case v2acl.RoleSystem: 253 r = RoleSystem 254 case v2acl.RoleOthers: 255 r = RoleOthers 256 default: 257 r = RoleUnknown 258 } 259 260 return r 261 } 262 263 // String returns string representation of Role. 264 // 265 // String mapping: 266 // - RoleUser: USER; 267 // - RoleSystem: SYSTEM; 268 // - RoleOthers: OTHERS; 269 // - RoleUnknown, default: ROLE_UNKNOWN. 270 func (r Role) String() string { 271 return r.ToV2().String() 272 } 273 274 // FromString parses Role from a string representation. 275 // It is a reverse action to String(). 276 // 277 // Returns true if s was parsed successfully. 278 func (r *Role) FromString(s string) bool { 279 var g v2acl.Role 280 281 ok := g.FromString(s) 282 283 if ok { 284 *r = RoleFromV2(g) 285 } 286 287 return ok 288 } 289 290 // ToV2 converts Match to v2 MatchType enum value. 291 func (m Match) ToV2() v2acl.MatchType { 292 switch m { 293 case MatchStringEqual: 294 return v2acl.MatchTypeStringEqual 295 case MatchStringNotEqual: 296 return v2acl.MatchTypeStringNotEqual 297 default: 298 return v2acl.MatchTypeUnknown 299 } 300 } 301 302 // MatchFromV2 converts v2 MatchType enum value to Match. 303 func MatchFromV2(match v2acl.MatchType) (m Match) { 304 switch match { 305 case v2acl.MatchTypeStringEqual: 306 m = MatchStringEqual 307 case v2acl.MatchTypeStringNotEqual: 308 m = MatchStringNotEqual 309 default: 310 m = MatchUnknown 311 } 312 313 return m 314 } 315 316 // String returns string representation of Match. 317 // 318 // String mapping: 319 // - MatchStringEqual: STRING_EQUAL; 320 // - MatchStringNotEqual: STRING_NOT_EQUAL; 321 // - MatchUnknown, default: MATCH_TYPE_UNSPECIFIED. 322 func (m Match) String() string { 323 return m.ToV2().String() 324 } 325 326 // FromString parses Match from a string representation. 327 // It is a reverse action to String(). 328 // 329 // Returns true if s was parsed successfully. 330 func (m *Match) FromString(s string) bool { 331 var g v2acl.MatchType 332 333 ok := g.FromString(s) 334 335 if ok { 336 *m = MatchFromV2(g) 337 } 338 339 return ok 340 } 341 342 // ToV2 converts FilterHeaderType to v2 HeaderType enum value. 343 func (h FilterHeaderType) ToV2() v2acl.HeaderType { 344 switch h { 345 case HeaderFromRequest: 346 return v2acl.HeaderTypeRequest 347 case HeaderFromObject: 348 return v2acl.HeaderTypeObject 349 case HeaderFromService: 350 return v2acl.HeaderTypeService 351 default: 352 return v2acl.HeaderTypeUnknown 353 } 354 } 355 356 // FilterHeaderTypeFromV2 converts v2 HeaderType enum value to FilterHeaderType. 357 func FilterHeaderTypeFromV2(header v2acl.HeaderType) (h FilterHeaderType) { 358 switch header { 359 case v2acl.HeaderTypeRequest: 360 h = HeaderFromRequest 361 case v2acl.HeaderTypeObject: 362 h = HeaderFromObject 363 case v2acl.HeaderTypeService: 364 h = HeaderFromService 365 default: 366 h = HeaderTypeUnknown 367 } 368 369 return h 370 } 371 372 // String returns string representation of FilterHeaderType. 373 // 374 // String mapping: 375 // - HeaderFromRequest: REQUEST; 376 // - HeaderFromObject: OBJECT; 377 // - HeaderTypeUnknown, default: HEADER_UNSPECIFIED. 378 func (h FilterHeaderType) String() string { 379 return h.ToV2().String() 380 } 381 382 // FromString parses FilterHeaderType from a string representation. 383 // It is a reverse action to String(). 384 // 385 // Returns true if s was parsed successfully. 386 func (h *FilterHeaderType) FromString(s string) bool { 387 var g v2acl.HeaderType 388 389 ok := g.FromString(s) 390 391 if ok { 392 *h = FilterHeaderTypeFromV2(g) 393 } 394 395 return ok 396 }