mirror of
https://github.com/rustfs/rustfs.git
synced 2026-09-04 11:15:39 +00:00
重写stores初始化
This commit is contained in:
@@ -36,8 +36,8 @@
|
|||||||
- [ ] 详情 HeadObject
|
- [ ] 详情 HeadObject
|
||||||
- [ ] 对象预先签名(get、put、head、post)
|
- [ ] 对象预先签名(get、put、head、post)
|
||||||
|
|
||||||
|
|
||||||
## 扩展功能
|
## 扩展功能
|
||||||
|
|
||||||
- [ ] 用户管理
|
- [ ] 用户管理
|
||||||
- [ ] Policy管理
|
- [ ] Policy管理
|
||||||
- [ ] AK/SK分配管理
|
- [ ] AK/SK分配管理
|
||||||
|
|||||||
@@ -408,6 +408,11 @@ impl AsMut<Vec<PoolEndpoints>> for EndpointServerPools {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl 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
|
/// validates and creates new endpoints from input args, supports
|
||||||
/// both ellipses and without ellipses transparently.
|
/// both ellipses and without ellipses transparently.
|
||||||
pub fn create_server_endpoints(server_addr: &str, disks_layout: &DisksLayout) -> Result<(EndpointServerPools, SetupType)> {
|
pub fn create_server_endpoints(server_addr: &str, disks_layout: &DisksLayout) -> Result<(EndpointServerPools, SetupType)> {
|
||||||
|
|||||||
+2
-2
@@ -1,8 +1,8 @@
|
|||||||
mod bucket_meta;
|
mod bucket_meta;
|
||||||
mod chunk_stream;
|
mod chunk_stream;
|
||||||
pub mod disk;
|
pub mod disk;
|
||||||
mod disks_layout;
|
pub mod disks_layout;
|
||||||
mod endpoints;
|
pub mod endpoints;
|
||||||
mod erasure;
|
mod erasure;
|
||||||
pub mod error;
|
pub mod error;
|
||||||
mod file_meta;
|
mod file_meta;
|
||||||
|
|||||||
@@ -32,12 +32,12 @@ pub struct ECStore {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl ECStore {
|
impl ECStore {
|
||||||
pub async fn new(address: String, endpoints: Vec<String>) -> Result<Self> {
|
pub async fn new(address: String, endpoint_pools: EndpointServerPools) -> Result<Self> {
|
||||||
let layouts = DisksLayout::try_from(endpoints.as_slice())?;
|
// let layouts = DisksLayout::try_from(endpoints.as_slice())?;
|
||||||
|
|
||||||
let mut deployment_id = None;
|
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 pools = Vec::with_capacity(endpoint_pools.as_ref().len());
|
||||||
let mut disk_map = HashMap::with_capacity(endpoint_pools.as_ref().len());
|
let mut disk_map = HashMap::with_capacity(endpoint_pools.as_ref().len());
|
||||||
|
|||||||
+4
-2
@@ -2,7 +2,7 @@ mod config;
|
|||||||
mod storage;
|
mod storage;
|
||||||
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use ecstore::error::Result;
|
use ecstore::{disks_layout::DisksLayout, endpoints::EndpointServerPools, error::Result};
|
||||||
use hyper_util::{
|
use hyper_util::{
|
||||||
rt::{TokioExecutor, TokioIo},
|
rt::{TokioExecutor, TokioIo},
|
||||||
server::conn::auto::Builder as ConnBuilder,
|
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
|
// Setup S3 service
|
||||||
// 本项目使用s3s库来实现s3服务
|
// 本项目使用s3s库来实现s3服务
|
||||||
let service = {
|
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
|
//设置AK和SK
|
||||||
//其中部份内容从config配置文件中读取
|
//其中部份内容从config配置文件中读取
|
||||||
let mut access_key = String::from_str(config::DEFAULT_ACCESS_KEY).unwrap();
|
let mut access_key = String::from_str(config::DEFAULT_ACCESS_KEY).unwrap();
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ use std::str::FromStr;
|
|||||||
use transform_stream::AsyncTryStream;
|
use transform_stream::AsyncTryStream;
|
||||||
use uuid::Uuid;
|
use uuid::Uuid;
|
||||||
|
|
||||||
|
use ecstore::endpoints::EndpointServerPools;
|
||||||
use ecstore::error::Result;
|
use ecstore::error::Result;
|
||||||
use ecstore::store::ECStore;
|
use ecstore::store::ECStore;
|
||||||
use tracing::debug;
|
use tracing::debug;
|
||||||
@@ -45,8 +46,8 @@ pub struct FS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl FS {
|
impl FS {
|
||||||
pub async fn new(address: String, endpoints: Vec<String>) -> Result<Self> {
|
pub async fn new(address: String, endpoint_pools: EndpointServerPools) -> Result<Self> {
|
||||||
let store: ECStore = ECStore::new(address, endpoints).await?;
|
let store: ECStore = ECStore::new(address, endpoint_pools).await?;
|
||||||
Ok(Self { store })
|
Ok(Self { store })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user