Skip to content

Commit

Permalink
feat(core): expose configs always (#5034)
Browse files Browse the repository at this point in the history
* feat: expose configs always

Signed-off-by: tison <[email protected]>

* finish

Signed-off-by: tison <[email protected]>

* Expose configs

Signed-off-by: Xuanwo <[email protected]>

---------

Signed-off-by: tison <[email protected]>
Signed-off-by: Xuanwo <[email protected]>
Co-authored-by: Xuanwo <[email protected]>
  • Loading branch information
tisonkun and Xuanwo authored Aug 23, 2024
1 parent 0cec8ba commit dd943a2
Show file tree
Hide file tree
Showing 196 changed files with 4,064 additions and 2,730 deletions.
59 changes: 4 additions & 55 deletions core/src/services/aliyun_drive/backend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ use http::Request;
use http::Response;
use http::StatusCode;
use log::debug;
use serde::Deserialize;
use serde::Serialize;
use tokio::sync::Mutex;

use super::core::*;
Expand All @@ -36,58 +34,9 @@ use super::lister::AliyunDriveLister;
use super::lister::AliyunDriveParent;
use super::writer::AliyunDriveWriter;
use crate::raw::*;
use crate::services::AliyunDriveConfig;
use crate::*;

/// Aliyun Drive services support.
#[derive(Default, Serialize, Deserialize, Clone, PartialEq, Eq)]
#[serde(default)]
#[non_exhaustive]
pub struct AliyunDriveConfig {
/// The Root of this backend.
///
/// All operations will happen under this root.
///
/// Default to `/` if not set.
pub root: Option<String>,
/// The access_token of this backend.
///
/// Solution for client-only purpose. #4733
///
/// Required if no client_id, client_secret and refresh_token are provided.
pub access_token: Option<String>,
/// The client_id of this backend.
///
/// Required if no access_token is provided.
pub client_id: Option<String>,
/// The client_secret of this backend.
///
/// Required if no access_token is provided.
pub client_secret: Option<String>,
/// The refresh_token of this backend.
///
/// Required if no access_token is provided.
pub refresh_token: Option<String>,
/// The drive_type of this backend.
///
/// All operations will happen under this type of drive.
///
/// Available values are `default`, `backup` and `resource`.
///
/// Fallback to default if not set or no other drives can be found.
pub drive_type: String,
}

impl Debug for AliyunDriveConfig {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
let mut d = f.debug_struct("AliyunDriveConfig");

d.field("root", &self.root)
.field("drive_type", &self.drive_type);

d.finish_non_exhaustive()
}
}

impl Configurator for AliyunDriveConfig {
type Builder = AliyunDriveBuilder;
fn into_builder(self) -> Self::Builder {
Expand Down Expand Up @@ -205,12 +154,12 @@ impl Builder for AliyunDriveBuilder {
self.config.refresh_token.clone(),
) {
(Some(client_id), Some(client_secret), Some(refresh_token)) if
!client_id.is_empty() && !client_secret.is_empty() && !refresh_token.is_empty() => {
!client_id.is_empty() && !client_secret.is_empty() && !refresh_token.is_empty() => {
AliyunDriveSign::Refresh(client_id, client_secret, refresh_token, None, 0)
}
_ => return Err(Error::new(
ErrorKind::ConfigInvalid,
"access_token and a set of client_id, client_secret, and refresh_token are both missing.")
ErrorKind::ConfigInvalid,
"access_token and a set of client_id, client_secret, and refresh_token are both missing.")
.with_operation("Builder::build")
.with_context("service", Scheme::AliyunDrive)),
},
Expand Down
69 changes: 69 additions & 0 deletions core/src/services/aliyun_drive/config.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.

use serde::{Deserialize, Serialize};
use std::fmt::{Debug, Formatter};

/// Config for Aliyun Drive services support.
#[derive(Default, Serialize, Deserialize, Clone, PartialEq, Eq)]
#[serde(default)]
#[non_exhaustive]
pub struct AliyunDriveConfig {
/// The Root of this backend.
///
/// All operations will happen under this root.
///
/// Default to `/` if not set.
pub root: Option<String>,
/// The access_token of this backend.
///
/// Solution for client-only purpose. #4733
///
/// Required if no client_id, client_secret and refresh_token are provided.
pub access_token: Option<String>,
/// The client_id of this backend.
///
/// Required if no access_token is provided.
pub client_id: Option<String>,
/// The client_secret of this backend.
///
/// Required if no access_token is provided.
pub client_secret: Option<String>,
/// The refresh_token of this backend.
///
/// Required if no access_token is provided.
pub refresh_token: Option<String>,
/// The drive_type of this backend.
///
/// All operations will happen under this type of drive.
///
/// Available values are `default`, `backup` and `resource`.
///
/// Fallback to default if not set or no other drives can be found.
pub drive_type: String,
}

impl Debug for AliyunDriveConfig {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
let mut d = f.debug_struct("AliyunDriveConfig");

d.field("root", &self.root)
.field("drive_type", &self.drive_type);

d.finish_non_exhaustive()
}
}
12 changes: 10 additions & 2 deletions core/src/services/aliyun_drive/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,19 @@
// specific language governing permissions and limitations
// under the License.

#[cfg(feature = "services-aliyun-drive")]
mod core;

#[cfg(feature = "services-aliyun-drive")]
mod backend;
#[cfg(feature = "services-aliyun-drive")]
mod error;
#[cfg(feature = "services-aliyun-drive")]
mod lister;
#[cfg(feature = "services-aliyun-drive")]
mod writer;
#[cfg(feature = "services-aliyun-drive")]
pub use backend::AliyunDriveBuilder as AliyunDrive;
pub use backend::AliyunDriveConfig;

mod core;
mod config;
pub use config::AliyunDriveConfig;
31 changes: 1 addition & 30 deletions core/src/services/alluxio/backend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,45 +21,16 @@ use std::sync::Arc;

use http::Response;
use log::debug;
use serde::Deserialize;
use serde::Serialize;

use super::core::AlluxioCore;
use super::error::parse_error;
use super::lister::AlluxioLister;
use super::writer::AlluxioWriter;
use super::writer::AlluxioWriters;
use crate::raw::*;
use crate::services::AlluxioConfig;
use crate::*;

/// Config for alluxio services support.
#[derive(Default, Serialize, Deserialize, Clone, PartialEq, Eq)]
#[serde(default)]
#[non_exhaustive]
pub struct AlluxioConfig {
/// root of this backend.
///
/// All operations will happen under this root.
///
/// default to `/` if not set.
pub root: Option<String>,
/// endpoint of this backend.
///
/// Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.
pub endpoint: Option<String>,
}

impl Debug for AlluxioConfig {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
let mut d = f.debug_struct("AlluxioConfig");

d.field("root", &self.root)
.field("endpoint", &self.endpoint);

d.finish_non_exhaustive()
}
}

impl Configurator for AlluxioConfig {
type Builder = AlluxioBuilder;
fn into_builder(self) -> Self::Builder {
Expand Down
47 changes: 47 additions & 0 deletions core/src/services/alluxio/config.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.

use serde::{Deserialize, Serialize};
use std::fmt::{Debug, Formatter};

/// Config for alluxio services support.
#[derive(Default, Serialize, Deserialize, Clone, PartialEq, Eq)]
#[serde(default)]
#[non_exhaustive]
pub struct AlluxioConfig {
/// root of this backend.
///
/// All operations will happen under this root.
///
/// default to `/` if not set.
pub root: Option<String>,
/// endpoint of this backend.
///
/// Endpoint must be full uri, mostly like `http://127.0.0.1:39999`.
pub endpoint: Option<String>,
}

impl Debug for AlluxioConfig {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
let mut d = f.debug_struct("AlluxioConfig");

d.field("root", &self.root)
.field("endpoint", &self.endpoint);

d.finish_non_exhaustive()
}
}
16 changes: 12 additions & 4 deletions core/src/services/alluxio/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,19 @@
// specific language governing permissions and limitations
// under the License.

mod backend;
pub use backend::AlluxioBuilder as Alluxio;
pub use backend::AlluxioConfig;

#[cfg(feature = "services-alluxio")]
mod core;
#[cfg(feature = "services-alluxio")]
mod error;
#[cfg(feature = "services-alluxio")]
mod lister;
#[cfg(feature = "services-alluxio")]
mod writer;

#[cfg(feature = "services-alluxio")]
mod backend;
#[cfg(feature = "services-alluxio")]
pub use backend::AlluxioBuilder as Alluxio;

mod config;
pub use config::AlluxioConfig;
31 changes: 1 addition & 30 deletions core/src/services/atomicserver/backend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,38 +30,9 @@ use serde::Serialize;

use crate::raw::adapters::kv;
use crate::raw::*;
use crate::services::AtomicserverConfig;
use crate::*;

/// Atomicserver service support.
/// Config for Atomicserver services support
#[derive(Default, Serialize, Deserialize, Clone, PartialEq, Eq)]
#[serde(default)]
#[non_exhaustive]
pub struct AtomicserverConfig {
/// work dir of this backend
pub root: Option<String>,
/// endpoint of this backend
pub endpoint: Option<String>,
/// private_key of this backend
pub private_key: Option<String>,
/// public_key of this backend
pub public_key: Option<String>,
/// parent_resource_id of this backend
pub parent_resource_id: Option<String>,
}

impl Debug for AtomicserverConfig {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
f.debug_struct("AtomicserverConfig")
.field("root", &self.root)
.field("endpoint", &self.endpoint)
.field("public_key", &self.public_key)
.field("parent_resource_id", &self.parent_resource_id)
.finish_non_exhaustive()
}
}

impl Configurator for AtomicserverConfig {
type Builder = AtomicserverBuilder;
fn into_builder(self) -> Self::Builder {
Expand Down
47 changes: 47 additions & 0 deletions core/src/services/atomicserver/config.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.

use serde::{Deserialize, Serialize};
use std::fmt::{Debug, Formatter};

/// Config for Atomicserver services support
#[derive(Default, Serialize, Deserialize, Clone, PartialEq, Eq)]
#[serde(default)]
#[non_exhaustive]
pub struct AtomicserverConfig {
/// work dir of this backend
pub root: Option<String>,
/// endpoint of this backend
pub endpoint: Option<String>,
/// private_key of this backend
pub private_key: Option<String>,
/// public_key of this backend
pub public_key: Option<String>,
/// parent_resource_id of this backend
pub parent_resource_id: Option<String>,
}

impl Debug for AtomicserverConfig {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
f.debug_struct("AtomicserverConfig")
.field("root", &self.root)
.field("endpoint", &self.endpoint)
.field("public_key", &self.public_key)
.field("parent_resource_id", &self.parent_resource_id)
.finish_non_exhaustive()
}
}
7 changes: 5 additions & 2 deletions core/src/services/atomicserver/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@
// specific language governing permissions and limitations
// under the License.

#[cfg(feature = "services-atomicserver")]
mod backend;

#[cfg(feature = "services-atomicserver")]
pub use backend::AtomicserverBuilder as Atomicserver;
pub use backend::AtomicserverConfig;

mod config;
pub use config::AtomicserverConfig;
Loading

0 comments on commit dd943a2

Please sign in to comment.