diff --git a/rustfs/src/admin/handlers/ilm_transition.rs b/rustfs/src/admin/handlers/ilm_transition.rs
index 493613e68..6c49f1c3a 100644
--- a/rustfs/src/admin/handlers/ilm_transition.rs
+++ b/rustfs/src/admin/handlers/ilm_transition.rs
@@ -25,14 +25,22 @@ use http::{HeaderMap, HeaderValue};
use hyper::{Method, StatusCode};
use matchit::Params;
use rustfs_policy::policy::action::{Action, AdminAction};
+use rustfs_utils::{
+ MaskedAccessKey,
+ http::{AMZ_REQUEST_ID, REQUEST_ID_HEADER},
+};
use s3s::header::CONTENT_TYPE;
use s3s::{Body, S3Error, S3ErrorCode, S3Request, S3Response, S3Result, s3_error};
use serde::{Deserialize, Serialize};
+use tracing::{error, info, warn};
const JSON_CONTENT_TYPE: &str = "application/json";
const DEFAULT_MANUAL_TRANSITION_MAX_OBJECTS: u64 = 10_000;
const MAX_MANUAL_TRANSITION_OBJECTS: u64 = 100_000;
const MAX_MANUAL_TRANSITION_DURATION_SECONDS: u64 = 3600;
+const LOG_COMPONENT_ADMIN: &str = "admin";
+const LOG_SUBSYSTEM_ILM_TRANSITION: &str = "ilm_transition";
+const EVENT_ADMIN_ILM_TRANSITION_STATE: &str = "admin_ilm_transition_state";
#[derive(Debug, Deserialize, Default)]
#[serde(deny_unknown_fields)]
@@ -111,10 +119,102 @@ fn parse_manual_transition_query(query: Option<&str>) -> S3Result<(String, Manua
))
}
-async fn authorize_manual_transition_request(req: &S3Request
) -> S3Result<()> {
+fn admin_request_id(headers: &HeaderMap) -> Option<&str> {
+ headers
+ .get(REQUEST_ID_HEADER)
+ .or_else(|| headers.get(AMZ_REQUEST_ID))
+ .and_then(|value| value.to_str().ok())
+}
+
+fn admin_remote_addr(req: &S3Request) -> Option {
+ req.extensions
+ .get::