重写stores初始化

This commit is contained in:
weisd
2024-09-10 16:27:35 +08:00
parent 32b64e74d0
commit f7e7f6e257
6 changed files with 18 additions and 10 deletions
+1 -1
View File
@@ -36,8 +36,8 @@
- [ ] 详情 HeadObject
- [ ] 对象预先签名(get、put、head、post
## 扩展功能
- [ ] 用户管理
- [ ] Policy管理
- [ ] AK/SK分配管理
+5
View File
@@ -408,6 +408,11 @@ impl AsMut<Vec<PoolEndpoints>> for EndpointServerPools {
}
impl EndpointServerPools {
pub fn from_volumes(server_addr: &str, endpoints: Vec<String>) -> Result<(EndpointServerPools, SetupType)> {
let layouts = DisksLayout::try_from(endpoints.as_slice())?;
Self::create_server_endpoints(server_addr, &layouts)
}
/// validates and creates new endpoints from input args, supports
/// both ellipses and without ellipses transparently.
pub fn create_server_endpoints(server_addr: &str, disks_layout: &DisksLayout) -> Result<(EndpointServerPools, SetupType)> {
+2 -2
View File
@@ -1,8 +1,8 @@
mod bucket_meta;
mod chunk_stream;
pub mod disk;
mod disks_layout;
mod endpoints;
pub mod disks_layout;
pub mod endpoints;
mod erasure;
pub mod error;
mod file_meta;
+3 -3
View File
@@ -32,12 +32,12 @@ pub struct ECStore {
}
impl ECStore {
pub async fn new(address: String, endpoints: Vec<String>) -> Result<Self> {
let layouts = DisksLayout::try_from(endpoints.as_slice())?;
pub async fn new(address: String, endpoint_pools: EndpointServerPools) -> Result<Self> {
// let layouts = DisksLayout::try_from(endpoints.as_slice())?;
let mut deployment_id = None;
let (endpoint_pools, _) = EndpointServerPools::create_server_endpoints(address.as_str(), &layouts)?;
// let (endpoint_pools, _) = EndpointServerPools::create_server_endpoints(address.as_str(), &layouts)?;
let mut pools = Vec::with_capacity(endpoint_pools.as_ref().len());
let mut disk_map = HashMap::with_capacity(endpoint_pools.as_ref().len());
+4 -2
View File
@@ -2,7 +2,7 @@ mod config;
mod storage;
use clap::Parser;
use ecstore::error::Result;
use ecstore::{disks_layout::DisksLayout, endpoints::EndpointServerPools, error::Result};
use hyper_util::{
rt::{TokioExecutor, TokioIo},
server::conn::auto::Builder as ConnBuilder,
@@ -66,10 +66,12 @@ async fn run(opt: config::Opt) -> Result<()> {
// })
// };
let (endpoint_pools, _) = EndpointServerPools::from_volumes(opt.address.clone().as_str(), opt.volumes.clone())?;
// Setup S3 service
// 本项目使用s3s库来实现s3服务
let service = {
let mut b = S3ServiceBuilder::new(storage::ecfs::FS::new(opt.address.clone(), opt.volumes.clone()).await?);
let mut b = S3ServiceBuilder::new(storage::ecfs::FS::new(opt.address.clone(), endpoint_pools).await?);
//设置AK和SK
//其中部份内容从config配置文件中读取
let mut access_key = String::from_str(config::DEFAULT_ACCESS_KEY).unwrap();
+3 -2
View File
@@ -24,6 +24,7 @@ use std::str::FromStr;
use transform_stream::AsyncTryStream;
use uuid::Uuid;
use ecstore::endpoints::EndpointServerPools;
use ecstore::error::Result;
use ecstore::store::ECStore;
use tracing::debug;
@@ -45,8 +46,8 @@ pub struct FS {
}
impl FS {
pub async fn new(address: String, endpoints: Vec<String>) -> Result<Self> {
let store: ECStore = ECStore::new(address, endpoints).await?;
pub async fn new(address: String, endpoint_pools: EndpointServerPools) -> Result<Self> {
let store: ECStore = ECStore::new(address, endpoint_pools).await?;
Ok(Self { store })
}
}