mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-19 11:06:17 +00:00
refactor: use relative local compat consumers (#3723)
This commit is contained in:
+27
-29
@@ -12,25 +12,25 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
use crate::admin::console::{is_console_path, make_console_server};
|
||||
use crate::admin::handlers::oidc::is_oidc_path;
|
||||
use crate::admin::router_storage_compat::GLOBAL_BOOT_TIME;
|
||||
use crate::admin::router_storage_compat::PeerRestClient;
|
||||
use crate::admin::router_storage_compat::bandwidth::monitor::BandwidthDetails;
|
||||
use crate::admin::router_storage_compat::bucket_target_sys::{
|
||||
use super::router_storage_compat::GLOBAL_BOOT_TIME;
|
||||
use super::router_storage_compat::PeerRestClient;
|
||||
use super::router_storage_compat::bandwidth::monitor::BandwidthDetails;
|
||||
use super::router_storage_compat::bucket_target_sys::{
|
||||
BucketTargetSys, PutObjectOptions, RemoveObjectOptions, S3ClientError, TargetClient,
|
||||
};
|
||||
use crate::admin::router_storage_compat::get_global_notification_sys;
|
||||
use crate::admin::router_storage_compat::metadata::BUCKET_TARGETS_FILE;
|
||||
use crate::admin::router_storage_compat::metadata_sys;
|
||||
use crate::admin::router_storage_compat::read_admin_config_without_migrate;
|
||||
use crate::admin::router_storage_compat::replication::{
|
||||
use super::router_storage_compat::get_global_notification_sys;
|
||||
use super::router_storage_compat::metadata::BUCKET_TARGETS_FILE;
|
||||
use super::router_storage_compat::metadata_sys;
|
||||
use super::router_storage_compat::read_admin_config_without_migrate;
|
||||
use super::router_storage_compat::replication::{
|
||||
BucketReplicationResyncStatus, BucketStats, GLOBAL_REPLICATION_STATS, ObjectOpts, ResyncOpts, get_global_replication_pool,
|
||||
};
|
||||
use crate::admin::router_storage_compat::target::{BucketTarget, BucketTargetType, BucketTargets};
|
||||
use crate::admin::router_storage_compat::versioning_sys::BucketVersioningSys;
|
||||
use crate::admin::router_storage_compat::{AdminReplicationConfigExt as _, AdminVersioningConfigExt as _};
|
||||
use crate::admin::router_storage_compat::{get_global_bucket_monitor, get_global_deployment_id, get_global_region};
|
||||
use super::router_storage_compat::target::{BucketTarget, BucketTargetType, BucketTargets};
|
||||
use super::router_storage_compat::versioning_sys::BucketVersioningSys;
|
||||
use super::router_storage_compat::{AdminReplicationConfigExt as _, AdminVersioningConfigExt as _};
|
||||
use super::router_storage_compat::{get_global_bucket_monitor, get_global_deployment_id, get_global_region};
|
||||
use crate::admin::console::{is_console_path, make_console_server};
|
||||
use crate::admin::handlers::oidc::is_oidc_path;
|
||||
use crate::app::context::resolve_object_store_handle;
|
||||
use crate::app::object_usecase::DefaultObjectUsecase;
|
||||
use crate::auth::{check_key_valid, get_session_token};
|
||||
@@ -1419,9 +1419,7 @@ async fn ensure_replication_bucket_exists(bucket: &str) -> S3Result<()> {
|
||||
async fn ensure_replication_config_exists(bucket: &str) -> S3Result<()> {
|
||||
match metadata_sys::get_replication_config(bucket).await {
|
||||
Ok(_) => Ok(()),
|
||||
Err(crate::admin::router_storage_compat::StorageError::ConfigNotFound) => {
|
||||
Err(s3_error!(ReplicationConfigurationNotFoundError))
|
||||
}
|
||||
Err(super::router_storage_compat::StorageError::ConfigNotFound) => Err(s3_error!(ReplicationConfigurationNotFoundError)),
|
||||
Err(err) => Err(ApiError::from(err).into()),
|
||||
}
|
||||
}
|
||||
@@ -1946,7 +1944,7 @@ async fn resolve_replication_target_client(bucket: &str, target: &BucketTarget)
|
||||
|
||||
fn build_replication_probe_put_options(now: OffsetDateTime) -> PutObjectOptions {
|
||||
PutObjectOptions {
|
||||
internal: crate::admin::router_storage_compat::bucket_target_sys::AdvancedPutOptions {
|
||||
internal: super::router_storage_compat::bucket_target_sys::AdvancedPutOptions {
|
||||
source_version_id: Uuid::new_v4().to_string(),
|
||||
replication_status: ReplicationStatusType::Replica,
|
||||
source_mtime: now,
|
||||
@@ -2061,7 +2059,7 @@ async fn source_bucket_requires_object_lock(bucket: &str) -> S3Result<bool> {
|
||||
.object_lock_enabled
|
||||
.as_ref()
|
||||
.is_some_and(|state| state.as_str() == s3s::dto::ObjectLockEnabled::ENABLED)),
|
||||
Err(crate::admin::router_storage_compat::StorageError::ConfigNotFound) => Ok(false),
|
||||
Err(super::router_storage_compat::StorageError::ConfigNotFound) => Ok(false),
|
||||
Err(err) => Err(ApiError::from(err).into()),
|
||||
}
|
||||
}
|
||||
@@ -2775,7 +2773,7 @@ mod tests {
|
||||
#[test]
|
||||
fn apply_replication_reset_to_targets_updates_matching_target() {
|
||||
let mut targets = BucketTargets {
|
||||
targets: vec![crate::admin::router_storage_compat::target::BucketTarget {
|
||||
targets: vec![super::super::router_storage_compat::target::BucketTarget {
|
||||
arn: "arn:target".to_string(),
|
||||
..Default::default()
|
||||
}],
|
||||
@@ -2797,10 +2795,10 @@ mod tests {
|
||||
let mut status = BucketReplicationResyncStatus::new();
|
||||
status.targets_map.insert(
|
||||
"arn:z".to_string(),
|
||||
crate::admin::router_storage_compat::replication::TargetReplicationResyncStatus {
|
||||
super::super::router_storage_compat::replication::TargetReplicationResyncStatus {
|
||||
resync_id: "rid-z".to_string(),
|
||||
last_update: Some(datetime!(2025-01-03 00:00 UTC)),
|
||||
resync_status: crate::admin::router_storage_compat::replication::ResyncStatusType::ResyncFailed,
|
||||
resync_status: super::super::router_storage_compat::replication::ResyncStatusType::ResyncFailed,
|
||||
failed_count: 2,
|
||||
failed_size: 4,
|
||||
bucket: "bucket-z".to_string(),
|
||||
@@ -2810,10 +2808,10 @@ mod tests {
|
||||
);
|
||||
status.targets_map.insert(
|
||||
"arn:a".to_string(),
|
||||
crate::admin::router_storage_compat::replication::TargetReplicationResyncStatus {
|
||||
super::super::router_storage_compat::replication::TargetReplicationResyncStatus {
|
||||
resync_id: "rid-a".to_string(),
|
||||
last_update: Some(datetime!(2025-01-02 00:00 UTC)),
|
||||
resync_status: crate::admin::router_storage_compat::replication::ResyncStatusType::ResyncCompleted,
|
||||
resync_status: super::super::router_storage_compat::replication::ResyncStatusType::ResyncCompleted,
|
||||
replicated_count: 3,
|
||||
replicated_size: 9,
|
||||
bucket: "bucket-a".to_string(),
|
||||
@@ -2843,10 +2841,10 @@ mod tests {
|
||||
let mut status = BucketReplicationResyncStatus::new();
|
||||
status.targets_map.insert(
|
||||
"arn:z".to_string(),
|
||||
crate::admin::router_storage_compat::replication::TargetReplicationResyncStatus {
|
||||
super::super::router_storage_compat::replication::TargetReplicationResyncStatus {
|
||||
resync_id: "rid-z".to_string(),
|
||||
last_update: Some(datetime!(2025-02-03 00:00 UTC)),
|
||||
resync_status: crate::admin::router_storage_compat::replication::ResyncStatusType::ResyncFailed,
|
||||
resync_status: super::super::router_storage_compat::replication::ResyncStatusType::ResyncFailed,
|
||||
failed_count: 2,
|
||||
failed_size: 4,
|
||||
bucket: "bucket-z".to_string(),
|
||||
@@ -2856,10 +2854,10 @@ mod tests {
|
||||
);
|
||||
status.targets_map.insert(
|
||||
"arn:a".to_string(),
|
||||
crate::admin::router_storage_compat::replication::TargetReplicationResyncStatus {
|
||||
super::super::router_storage_compat::replication::TargetReplicationResyncStatus {
|
||||
resync_id: "rid-a".to_string(),
|
||||
last_update: Some(datetime!(2025-02-02 00:00 UTC)),
|
||||
resync_status: crate::admin::router_storage_compat::replication::ResyncStatusType::ResyncCompleted,
|
||||
resync_status: super::super::router_storage_compat::replication::ResyncStatusType::ResyncCompleted,
|
||||
replicated_count: 3,
|
||||
replicated_size: 9,
|
||||
bucket: "bucket-a".to_string(),
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
|
||||
//! Admin application use-case contracts.
|
||||
|
||||
use crate::app::context::{AppContext, get_global_app_context, resolve_object_store_handle_for_context};
|
||||
use crate::app::usecase_storage_compat::ECStore;
|
||||
use crate::app::usecase_storage_compat::EndpointServerPools;
|
||||
use crate::app::usecase_storage_compat::get_server_info;
|
||||
use crate::app::usecase_storage_compat::{
|
||||
use super::usecase_storage_compat::ECStore;
|
||||
use super::usecase_storage_compat::EndpointServerPools;
|
||||
use super::usecase_storage_compat::get_server_info;
|
||||
use super::usecase_storage_compat::{
|
||||
PoolDecommissionInfo, PoolStatus, get_total_usable_capacity, get_total_usable_capacity_free,
|
||||
};
|
||||
use crate::app::usecase_storage_compat::{apply_bucket_usage_memory_overlay, load_data_usage_from_backend};
|
||||
use super::usecase_storage_compat::{apply_bucket_usage_memory_overlay, load_data_usage_from_backend};
|
||||
use crate::app::context::{AppContext, get_global_app_context, resolve_object_store_handle_for_context};
|
||||
use crate::capacity::resolve_admin_used_capacity;
|
||||
use crate::error::ApiError;
|
||||
use crate::server::{DependencyReadiness, collect_dependency_readiness as collect_runtime_dependency_readiness};
|
||||
@@ -403,8 +403,8 @@ impl DefaultAdminUsecase {
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::super::usecase_storage_compat::{PoolDecommissionInfo, PoolStatus};
|
||||
use super::*;
|
||||
use crate::app::usecase_storage_compat::{PoolDecommissionInfo, PoolStatus};
|
||||
use time::OffsetDateTime;
|
||||
|
||||
#[tokio::test]
|
||||
|
||||
@@ -14,18 +14,12 @@
|
||||
|
||||
//! Bucket application use-case contracts.
|
||||
|
||||
use crate::admin::handlers::site_replication::{
|
||||
site_replication_bucket_meta_hook, site_replication_delete_bucket_hook, site_replication_make_bucket_hook,
|
||||
};
|
||||
use crate::app::context::{
|
||||
AppContext, default_notify_interface, get_global_app_context, resolve_object_store_handle_for_context,
|
||||
};
|
||||
use crate::app::usecase_storage_compat::ECStore;
|
||||
use crate::app::usecase_storage_compat::StorageError;
|
||||
use crate::app::usecase_storage_compat::get_global_notification_sys;
|
||||
use crate::app::usecase_storage_compat::object_api_utils::to_s3s_etag;
|
||||
use crate::app::usecase_storage_compat::{AppObjectLockConfigExt as _, AppVersioningConfigExt as _};
|
||||
use crate::app::usecase_storage_compat::{
|
||||
use super::usecase_storage_compat::ECStore;
|
||||
use super::usecase_storage_compat::StorageError;
|
||||
use super::usecase_storage_compat::get_global_notification_sys;
|
||||
use super::usecase_storage_compat::object_api_utils::to_s3s_etag;
|
||||
use super::usecase_storage_compat::{AppObjectLockConfigExt as _, AppVersioningConfigExt as _};
|
||||
use super::usecase_storage_compat::{
|
||||
bucket_target_sys::BucketTargetSys,
|
||||
lifecycle::bucket_lifecycle_ops::{
|
||||
enqueue_expiry_for_existing_objects, enqueue_transition_for_existing_objects, validate_lifecycle_config,
|
||||
@@ -42,6 +36,12 @@ use crate::app::usecase_storage_compat::{
|
||||
utils::serialize,
|
||||
versioning_sys::BucketVersioningSys,
|
||||
};
|
||||
use crate::admin::handlers::site_replication::{
|
||||
site_replication_bucket_meta_hook, site_replication_delete_bucket_hook, site_replication_make_bucket_hook,
|
||||
};
|
||||
use crate::app::context::{
|
||||
AppContext, default_notify_interface, get_global_app_context, resolve_object_store_handle_for_context,
|
||||
};
|
||||
use crate::auth::get_condition_values_with_client_info;
|
||||
use crate::error::ApiError;
|
||||
use crate::server::RemoteAddr;
|
||||
@@ -2285,7 +2285,7 @@ mod tests {
|
||||
BucketTargets {
|
||||
targets: arns
|
||||
.iter()
|
||||
.map(|arn| crate::app::usecase_storage_compat::target::BucketTarget {
|
||||
.map(|arn| super::super::usecase_storage_compat::target::BucketTarget {
|
||||
arn: (*arn).to_string(),
|
||||
target_type: BucketTargetType::ReplicationService,
|
||||
..Default::default()
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
use crate::app::usecase_storage_compat::{ECStore, Endpoint, EndpointServerPools, Endpoints, PoolEndpoints, metadata_sys};
|
||||
use super::usecase_storage_compat::{ECStore, Endpoint, EndpointServerPools, Endpoints, PoolEndpoints, metadata_sys};
|
||||
use rustfs_common::heal_channel::{HealOpts, HealScanMode};
|
||||
use rustfs_object_capacity::capacity_manager::{HybridStrategyConfig, create_isolated_manager};
|
||||
use rustfs_storage_api::{BucketOperations, BucketOptions, HealOperations as _, MakeBucketOptions, ObjectIO as _};
|
||||
@@ -77,7 +77,7 @@ async fn setup_capacity_dirty_scope_env() -> (Vec<PathBuf>, Arc<ECStore>) {
|
||||
};
|
||||
|
||||
let endpoint_pools = EndpointServerPools(vec![pool_endpoints]);
|
||||
crate::app::usecase_storage_compat::init_local_disks(endpoint_pools.clone())
|
||||
super::usecase_storage_compat::init_local_disks(endpoint_pools.clone())
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
|
||||
@@ -12,9 +12,7 @@
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
use super::{multipart_usecase::DefaultMultipartUsecase, object_usecase::DefaultObjectUsecase};
|
||||
use crate::app::bucket_usecase::DefaultBucketUsecase;
|
||||
use crate::app::usecase_storage_compat::{
|
||||
use super::usecase_storage_compat::{
|
||||
AppWarmBackend, ECStore, Endpoint, EndpointServerPools, Endpoints, GLOBAL_TierConfigMgr, PoolEndpoints, TierConfig, TierType,
|
||||
WarmBackendGetOpts,
|
||||
metadata::{BUCKET_LIFECYCLE_CONFIG, OBJECT_LOCK_CONFIG},
|
||||
@@ -22,6 +20,8 @@ use crate::app::usecase_storage_compat::{
|
||||
object_api_utils::to_s3s_etag,
|
||||
transition_api::{ReadCloser, ReaderImpl},
|
||||
};
|
||||
use super::{multipart_usecase::DefaultMultipartUsecase, object_usecase::DefaultObjectUsecase};
|
||||
use crate::app::bucket_usecase::DefaultBucketUsecase;
|
||||
use crate::storage::ecfs::FS;
|
||||
use crate::storage::{
|
||||
StorageObjectInfo as ObjectInfo, StorageObjectOptions as ObjectOptions, StoragePutObjReader as PutObjReader,
|
||||
@@ -107,7 +107,7 @@ async fn setup_test_env() -> (Vec<PathBuf>, Arc<ECStore>) {
|
||||
|
||||
let endpoint_pools = EndpointServerPools(vec![pool_endpoints]);
|
||||
|
||||
crate::app::usecase_storage_compat::init_local_disks(endpoint_pools.clone())
|
||||
super::usecase_storage_compat::init_local_disks(endpoint_pools.clone())
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
@@ -126,7 +126,7 @@ async fn setup_test_env() -> (Vec<PathBuf>, Arc<ECStore>) {
|
||||
let buckets = buckets_list.into_iter().map(|v| v.name).collect();
|
||||
metadata_sys::init_bucket_metadata_sys(ecstore.clone(), buckets).await;
|
||||
|
||||
crate::app::usecase_storage_compat::lifecycle::bucket_lifecycle_ops::init_background_expiry(ecstore.clone()).await;
|
||||
super::usecase_storage_compat::lifecycle::bucket_lifecycle_ops::init_background_expiry(ecstore.clone()).await;
|
||||
|
||||
let _ = GLOBAL_ENV.set((disk_paths.clone(), ecstore.clone()));
|
||||
|
||||
@@ -926,7 +926,7 @@ async fn delete_transitioned_object_removes_remote_tier_copy_via_usecase() {
|
||||
.expect("Failed to set lifecycle configuration");
|
||||
let _ = upload_test_object(&ecstore, bucket.as_str(), object, payload).await;
|
||||
|
||||
crate::app::usecase_storage_compat::lifecycle::bucket_lifecycle_ops::enqueue_transition_for_existing_objects(
|
||||
super::usecase_storage_compat::lifecycle::bucket_lifecycle_ops::enqueue_transition_for_existing_objects(
|
||||
ecstore.clone(),
|
||||
bucket.as_str(),
|
||||
)
|
||||
@@ -986,7 +986,7 @@ async fn lifecycle_transition_marks_dirty_disks_for_capacity_manager() {
|
||||
.expect("Failed to set lifecycle configuration");
|
||||
let _ = upload_test_object(&ecstore, bucket.as_str(), object, payload).await;
|
||||
|
||||
crate::app::usecase_storage_compat::lifecycle::bucket_lifecycle_ops::enqueue_transition_for_existing_objects(
|
||||
super::usecase_storage_compat::lifecycle::bucket_lifecycle_ops::enqueue_transition_for_existing_objects(
|
||||
ecstore.clone(),
|
||||
bucket.as_str(),
|
||||
)
|
||||
|
||||
@@ -14,24 +14,24 @@
|
||||
|
||||
//! Multipart application use-case contracts.
|
||||
|
||||
use crate::app::context::{AppContext, get_global_app_context, resolve_object_store_handle_for_context};
|
||||
use crate::app::object_usecase::{build_put_like_object_lock_metadata, validate_existing_object_lock_for_write};
|
||||
use crate::app::usecase_storage_compat::ECStore;
|
||||
use crate::app::usecase_storage_compat::is_disk_compressible;
|
||||
use crate::app::usecase_storage_compat::is_valid_storage_class;
|
||||
use crate::app::usecase_storage_compat::object_api_utils::to_s3s_etag;
|
||||
use crate::app::usecase_storage_compat::quota::checker::QuotaChecker;
|
||||
use super::usecase_storage_compat::ECStore;
|
||||
use super::usecase_storage_compat::is_disk_compressible;
|
||||
use super::usecase_storage_compat::is_valid_storage_class;
|
||||
use super::usecase_storage_compat::object_api_utils::to_s3s_etag;
|
||||
use super::usecase_storage_compat::quota::checker::QuotaChecker;
|
||||
#[cfg(test)]
|
||||
use crate::app::usecase_storage_compat::{DecryptReader, EncryptReader, HardLimitReader, boxed_reader, wrap_reader};
|
||||
use crate::app::usecase_storage_compat::{HashReader, WritePlan};
|
||||
use crate::app::usecase_storage_compat::{StorageError, is_err_object_not_found, is_err_version_not_found};
|
||||
use crate::app::usecase_storage_compat::{
|
||||
use super::usecase_storage_compat::{DecryptReader, EncryptReader, HardLimitReader, boxed_reader, wrap_reader};
|
||||
use super::usecase_storage_compat::{HashReader, WritePlan};
|
||||
use super::usecase_storage_compat::{StorageError, is_err_object_not_found, is_err_version_not_found};
|
||||
use super::usecase_storage_compat::{
|
||||
lifecycle::{bucket_lifecycle_audit::LcEventSrc, bucket_lifecycle_ops::enqueue_transition_immediate},
|
||||
metadata_sys,
|
||||
quota::QuotaOperation,
|
||||
replication::{get_must_replicate_options, must_replicate, schedule_replication},
|
||||
versioning_sys::BucketVersioningSys,
|
||||
};
|
||||
use crate::app::context::{AppContext, get_global_app_context, resolve_object_store_handle_for_context};
|
||||
use crate::app::object_usecase::{build_put_like_object_lock_metadata, validate_existing_object_lock_for_write};
|
||||
use crate::capacity::record_capacity_write;
|
||||
use crate::error::ApiError;
|
||||
use crate::storage::access::has_bypass_governance_header;
|
||||
@@ -482,7 +482,7 @@ impl DefaultMultipartUsecase {
|
||||
));
|
||||
}
|
||||
// Update quota tracking after successful multipart upload
|
||||
crate::app::usecase_storage_compat::record_bucket_object_write_memory(
|
||||
super::usecase_storage_compat::record_bucket_object_write_memory(
|
||||
&bucket,
|
||||
previous_current_size,
|
||||
obj_info.size.max(0) as u64,
|
||||
@@ -675,7 +675,7 @@ impl DefaultMultipartUsecase {
|
||||
rustfs_utils::http::insert_str(
|
||||
&mut metadata,
|
||||
rustfs_utils::http::SUFFIX_COMPRESSION,
|
||||
crate::app::usecase_storage_compat::compression_metadata_value(CompressionAlgorithm::default()),
|
||||
super::usecase_storage_compat::compression_metadata_value(CompressionAlgorithm::default()),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -894,12 +894,9 @@ impl DefaultMultipartUsecase {
|
||||
.ok_or_else(|| ApiError::from(StorageError::other("Missing SSE-C session material")))?;
|
||||
let ssec_write = match ssec_material.key_kind {
|
||||
crate::storage::sse::EncryptionKeyKind::Object => {
|
||||
crate::app::usecase_storage_compat::WriteEncryption::multipart_object_key(
|
||||
ssec_material.key_bytes,
|
||||
part_id as u32,
|
||||
)
|
||||
super::usecase_storage_compat::WriteEncryption::multipart_object_key(ssec_material.key_bytes, part_id as u32)
|
||||
}
|
||||
crate::storage::sse::EncryptionKeyKind::Direct => crate::app::usecase_storage_compat::WriteEncryption::multipart(
|
||||
crate::storage::sse::EncryptionKeyKind::Direct => super::usecase_storage_compat::WriteEncryption::multipart(
|
||||
ssec_material.key_bytes,
|
||||
ssec_material.base_nonce,
|
||||
part_id,
|
||||
@@ -919,12 +916,12 @@ impl DefaultMultipartUsecase {
|
||||
.ok_or_else(|| ApiError::from(StorageError::other("Missing managed SSE session material")))?;
|
||||
let managed_write = match managed_material.key_kind {
|
||||
crate::storage::sse::EncryptionKeyKind::Object => {
|
||||
crate::app::usecase_storage_compat::WriteEncryption::multipart_object_key(
|
||||
super::usecase_storage_compat::WriteEncryption::multipart_object_key(
|
||||
managed_material.key_bytes,
|
||||
part_id as u32,
|
||||
)
|
||||
}
|
||||
crate::storage::sse::EncryptionKeyKind::Direct => crate::app::usecase_storage_compat::WriteEncryption::multipart(
|
||||
crate::storage::sse::EncryptionKeyKind::Direct => super::usecase_storage_compat::WriteEncryption::multipart(
|
||||
managed_material.key_bytes,
|
||||
managed_material.base_nonce,
|
||||
part_id,
|
||||
@@ -1243,12 +1240,9 @@ impl DefaultMultipartUsecase {
|
||||
.ok_or_else(|| ApiError::from(StorageError::other("Missing SSE-C session material")))?;
|
||||
let ssec_write = match ssec_material.key_kind {
|
||||
crate::storage::sse::EncryptionKeyKind::Object => {
|
||||
crate::app::usecase_storage_compat::WriteEncryption::multipart_object_key(
|
||||
ssec_material.key_bytes,
|
||||
part_id as u32,
|
||||
)
|
||||
super::usecase_storage_compat::WriteEncryption::multipart_object_key(ssec_material.key_bytes, part_id as u32)
|
||||
}
|
||||
crate::storage::sse::EncryptionKeyKind::Direct => crate::app::usecase_storage_compat::WriteEncryption::multipart(
|
||||
crate::storage::sse::EncryptionKeyKind::Direct => super::usecase_storage_compat::WriteEncryption::multipart(
|
||||
ssec_material.key_bytes,
|
||||
ssec_material.base_nonce,
|
||||
part_id,
|
||||
@@ -1272,12 +1266,12 @@ impl DefaultMultipartUsecase {
|
||||
.ok_or_else(|| ApiError::from(StorageError::other("Missing managed SSE session material")))?;
|
||||
let managed_write = match managed_material.key_kind {
|
||||
crate::storage::sse::EncryptionKeyKind::Object => {
|
||||
crate::app::usecase_storage_compat::WriteEncryption::multipart_object_key(
|
||||
super::usecase_storage_compat::WriteEncryption::multipart_object_key(
|
||||
managed_material.key_bytes,
|
||||
part_id as u32,
|
||||
)
|
||||
}
|
||||
crate::storage::sse::EncryptionKeyKind::Direct => crate::app::usecase_storage_compat::WriteEncryption::multipart(
|
||||
crate::storage::sse::EncryptionKeyKind::Direct => super::usecase_storage_compat::WriteEncryption::multipart(
|
||||
managed_material.key_bytes,
|
||||
managed_material.base_nonce,
|
||||
part_id,
|
||||
|
||||
@@ -48,21 +48,21 @@ use metrics::{counter, histogram};
|
||||
use pin_project_lite::pin_project;
|
||||
use rustfs_object_capacity::capacity_manager::get_capacity_manager;
|
||||
// Performance metrics recording (with zero-copy-metrics integration)
|
||||
use crate::app::usecase_storage_compat::ECStore;
|
||||
use crate::app::usecase_storage_compat::object_api_utils::to_s3s_etag;
|
||||
use crate::app::usecase_storage_compat::quota::checker::QuotaChecker;
|
||||
use crate::app::usecase_storage_compat::storageclass;
|
||||
use crate::app::usecase_storage_compat::{
|
||||
use super::usecase_storage_compat::ECStore;
|
||||
use super::usecase_storage_compat::object_api_utils::to_s3s_etag;
|
||||
use super::usecase_storage_compat::quota::checker::QuotaChecker;
|
||||
use super::usecase_storage_compat::storageclass;
|
||||
use super::usecase_storage_compat::{
|
||||
AppReplicationConfigExt as _, AppVersioningConfigExt as _, predict_lifecycle_expiration, validate_restore_request,
|
||||
};
|
||||
use crate::app::usecase_storage_compat::{DiskError, is_all_buckets_not_found};
|
||||
use crate::app::usecase_storage_compat::{DynReader, HashReader, WritePlan, wrap_reader};
|
||||
use crate::app::usecase_storage_compat::{
|
||||
use super::usecase_storage_compat::{DiskError, is_all_buckets_not_found};
|
||||
use super::usecase_storage_compat::{DynReader, HashReader, WritePlan, wrap_reader};
|
||||
use super::usecase_storage_compat::{
|
||||
Error as EcstoreError, StorageError, is_err_bucket_not_found, is_err_object_not_found, is_err_version_not_found,
|
||||
};
|
||||
use crate::app::usecase_storage_compat::{MIN_DISK_COMPRESSIBLE_SIZE, is_disk_compressible};
|
||||
use crate::app::usecase_storage_compat::{get_lock_acquire_timeout, is_valid_storage_class};
|
||||
use crate::app::usecase_storage_compat::{
|
||||
use super::usecase_storage_compat::{MIN_DISK_COMPRESSIBLE_SIZE, is_disk_compressible};
|
||||
use super::usecase_storage_compat::{get_lock_acquire_timeout, is_valid_storage_class};
|
||||
use super::usecase_storage_compat::{
|
||||
lifecycle::{
|
||||
bucket_lifecycle_audit::LcEventSrc,
|
||||
bucket_lifecycle_ops::{enqueue_transition_immediate, post_restore_opts},
|
||||
@@ -279,12 +279,12 @@ async fn enqueue_transitioned_delete_cleanup(
|
||||
let _activity_guard = DeleteTailActivityGuard::new(DeleteTailStage::Cleanup);
|
||||
|
||||
let je = if opts.delete_prefix {
|
||||
crate::app::usecase_storage_compat::lifecycle::tier_sweeper::transitioned_force_delete_journal_entry(
|
||||
super::usecase_storage_compat::lifecycle::tier_sweeper::transitioned_force_delete_journal_entry(
|
||||
&existing.transitioned_object,
|
||||
)
|
||||
} else {
|
||||
let version_id = opts.version_id.as_ref().and_then(|v| Uuid::parse_str(v).ok());
|
||||
crate::app::usecase_storage_compat::lifecycle::tier_sweeper::transitioned_delete_journal_entry(
|
||||
super::usecase_storage_compat::lifecycle::tier_sweeper::transitioned_delete_journal_entry(
|
||||
version_id,
|
||||
opts.versioned,
|
||||
opts.version_suspended,
|
||||
@@ -295,9 +295,9 @@ async fn enqueue_transitioned_delete_cleanup(
|
||||
return Ok(());
|
||||
};
|
||||
|
||||
crate::app::usecase_storage_compat::lifecycle::tier_delete_journal::persist_tier_delete_journal_entry(store, &je).await?;
|
||||
super::usecase_storage_compat::lifecycle::tier_delete_journal::persist_tier_delete_journal_entry(store, &je).await?;
|
||||
|
||||
let mut expiry_state = crate::app::usecase_storage_compat::lifecycle::bucket_lifecycle_ops::GLOBAL_ExpiryState
|
||||
let mut expiry_state = super::usecase_storage_compat::lifecycle::bucket_lifecycle_ops::GLOBAL_ExpiryState
|
||||
.write()
|
||||
.await;
|
||||
if let Err(err) = expiry_state.enqueue_tier_journal_entry(&je).await {
|
||||
@@ -1603,7 +1603,7 @@ impl DefaultObjectUsecase {
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
async fn prepare_get_object_read(
|
||||
req: &S3Request<GetObjectInput>,
|
||||
store: &crate::app::usecase_storage_compat::ECStore,
|
||||
store: &super::usecase_storage_compat::ECStore,
|
||||
manager: &ConcurrencyManager,
|
||||
bucket: &str,
|
||||
key: &str,
|
||||
@@ -2197,7 +2197,7 @@ impl DefaultObjectUsecase {
|
||||
insert_str(
|
||||
&mut metadata,
|
||||
SUFFIX_COMPRESSION,
|
||||
crate::app::usecase_storage_compat::compression_metadata_value(algorithm),
|
||||
super::usecase_storage_compat::compression_metadata_value(algorithm),
|
||||
);
|
||||
insert_str(&mut metadata, SUFFIX_ACTUAL_SIZE, size.to_string());
|
||||
|
||||
@@ -2212,7 +2212,7 @@ impl DefaultObjectUsecase {
|
||||
insert_str(
|
||||
&mut opts.user_defined,
|
||||
SUFFIX_COMPRESSION,
|
||||
crate::app::usecase_storage_compat::compression_metadata_value(algorithm),
|
||||
super::usecase_storage_compat::compression_metadata_value(algorithm),
|
||||
);
|
||||
insert_str(&mut opts.user_defined, SUFFIX_ACTUAL_SIZE, size.to_string());
|
||||
|
||||
@@ -2404,7 +2404,7 @@ impl DefaultObjectUsecase {
|
||||
maybe_enqueue_transition_immediate(&obj_info, LcEventSrc::S3PutObject).await;
|
||||
|
||||
// Fast in-memory update for immediate quota and admin usage consistency
|
||||
crate::app::usecase_storage_compat::record_bucket_object_write_memory(
|
||||
super::usecase_storage_compat::record_bucket_object_write_memory(
|
||||
&bucket,
|
||||
previous_current_size,
|
||||
obj_info.size.max(0) as u64,
|
||||
@@ -3274,7 +3274,7 @@ impl DefaultObjectUsecase {
|
||||
insert_str(
|
||||
&mut compress_metadata,
|
||||
SUFFIX_COMPRESSION,
|
||||
crate::app::usecase_storage_compat::compression_metadata_value(CompressionAlgorithm::default()),
|
||||
super::usecase_storage_compat::compression_metadata_value(CompressionAlgorithm::default()),
|
||||
);
|
||||
insert_str(&mut compress_metadata, SUFFIX_ACTUAL_SIZE, actual_size.to_string());
|
||||
} else {
|
||||
@@ -3367,7 +3367,7 @@ impl DefaultObjectUsecase {
|
||||
|
||||
// Update quota tracking after successful copy
|
||||
if has_bucket_metadata {
|
||||
crate::app::usecase_storage_compat::record_bucket_object_write_memory(
|
||||
super::usecase_storage_compat::record_bucket_object_write_memory(
|
||||
&bucket,
|
||||
previous_current_size,
|
||||
oi.size.max(0) as u64,
|
||||
@@ -3649,7 +3649,7 @@ impl DefaultObjectUsecase {
|
||||
);
|
||||
}
|
||||
let size = object_sizes[i].max(0) as u64;
|
||||
crate::app::usecase_storage_compat::record_bucket_object_delete_memory(
|
||||
super::usecase_storage_compat::record_bucket_object_delete_memory(
|
||||
&bucket,
|
||||
size,
|
||||
existing_object_infos[i].is_some() && object_to_delete[i].version_id.is_none(),
|
||||
@@ -3887,7 +3887,7 @@ impl DefaultObjectUsecase {
|
||||
}
|
||||
|
||||
// Fast in-memory update for immediate quota and admin usage consistency
|
||||
crate::app::usecase_storage_compat::record_bucket_object_delete_memory(
|
||||
super::usecase_storage_compat::record_bucket_object_delete_memory(
|
||||
&bucket,
|
||||
obj_info.size.max(0) as u64,
|
||||
opts.version_id.is_none(),
|
||||
@@ -4864,7 +4864,7 @@ impl DefaultObjectUsecase {
|
||||
insert_str(
|
||||
&mut metadata,
|
||||
SUFFIX_COMPRESSION,
|
||||
crate::app::usecase_storage_compat::compression_metadata_value(algorithm),
|
||||
super::usecase_storage_compat::compression_metadata_value(algorithm),
|
||||
);
|
||||
insert_str(&mut metadata, SUFFIX_ACTUAL_SIZE, size.to_string());
|
||||
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::config::WorkloadProfile;
|
||||
use crate::server::cors;
|
||||
use crate::storage::core_storage_compat::{
|
||||
use super::super::core_storage_compat::{
|
||||
BucketMetadata, DEFAULT_READ_BUFFER_SIZE, get_global_bucket_metadata_sys, set_bucket_metadata,
|
||||
};
|
||||
use crate::config::WorkloadProfile;
|
||||
use crate::server::cors;
|
||||
use crate::storage::ecfs::{FS, validate_object_lock_configuration_input};
|
||||
use crate::storage::s3_api::common::{rustfs_initiator, rustfs_owner};
|
||||
use crate::storage::{
|
||||
@@ -941,8 +941,8 @@ mod tests {
|
||||
|
||||
#[tokio::test]
|
||||
async fn test_validate_bucket_object_lock_enabled() {
|
||||
use crate::storage::core_storage_compat::bucket_metadata_sys_initialized;
|
||||
use crate::storage::core_storage_compat::set_bucket_metadata;
|
||||
use super::super::core_storage_compat::bucket_metadata_sys_initialized;
|
||||
use super::super::core_storage_compat::set_bucket_metadata;
|
||||
use s3s::dto::{ObjectLockConfiguration, ObjectLockEnabled};
|
||||
use time::OffsetDateTime;
|
||||
|
||||
@@ -1781,7 +1781,7 @@ mod tests {
|
||||
/// with a single-element vec value, matching the format expected by policy evaluation.
|
||||
#[test]
|
||||
fn test_object_tag_condition_key_format() {
|
||||
use crate::storage::core_storage_compat::decode_tags_to_map;
|
||||
use super::super::core_storage_compat::decode_tags_to_map;
|
||||
use std::collections::HashMap;
|
||||
|
||||
let tags_str = "security=public&project=webapp&env=prod";
|
||||
|
||||
Reference in New Issue
Block a user