Skip to content

Commit

Permalink
feat: introduce the PluginOptions (#4835)
Browse files Browse the repository at this point in the history
* feat: introduce the `PluginOptions`

* chore: apply suggestions from CR
  • Loading branch information
WenyXu authored Oct 24, 2024
1 parent ff38abd commit 8b307e4
Show file tree
Hide file tree
Showing 12 changed files with 50 additions and 7 deletions.
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion src/cmd/src/datanode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -272,9 +272,10 @@ impl StartCommand {
info!("Datanode start command: {:#?}", self);
info!("Datanode options: {:#?}", opts);

let plugin_opts = opts.plugins;
let opts = opts.component;
let mut plugins = Plugins::new();
plugins::setup_datanode_plugins(&mut plugins, &opts)
plugins::setup_datanode_plugins(&mut plugins, &plugin_opts, &opts)
.await
.context(StartDatanodeSnafu)?;

Expand Down
5 changes: 3 additions & 2 deletions src/cmd/src/frontend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -266,9 +266,10 @@ impl StartCommand {
info!("Frontend start command: {:#?}", self);
info!("Frontend options: {:#?}", opts);

let plugin_opts = opts.plugins;
let opts = opts.component;
let mut plugins = Plugins::new();
plugins::setup_frontend_plugins(&mut plugins, &opts)
plugins::setup_frontend_plugins(&mut plugins, &plugin_opts, &opts)
.await
.context(StartFrontendSnafu)?;

Expand Down Expand Up @@ -474,7 +475,7 @@ mod tests {
};

let mut plugins = Plugins::new();
plugins::setup_frontend_plugins(&mut plugins, &fe_opts)
plugins::setup_frontend_plugins(&mut plugins, &[], &fe_opts)
.await
.unwrap();

Expand Down
3 changes: 2 additions & 1 deletion src/cmd/src/metasrv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -273,9 +273,10 @@ impl StartCommand {
info!("Metasrv start command: {:#?}", self);
info!("Metasrv options: {:#?}", opts);

let plugin_opts = opts.plugins;
let opts = opts.component;
let mut plugins = Plugins::new();
plugins::setup_metasrv_plugins(&mut plugins, &opts)
plugins::setup_metasrv_plugins(&mut plugins, &plugin_opts, &opts)
.await
.context(StartMetaServerSnafu)?;

Expand Down
3 changes: 3 additions & 0 deletions src/cmd/src/options.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use clap::Parser;
use common_config::Configurable;
use common_runtime::global::RuntimeOptions;
use plugins::PluginOptions;
use serde::{Deserialize, Serialize};

#[derive(Parser, Default, Debug, Clone)]
Expand All @@ -40,6 +41,8 @@ pub struct GlobalOptions {
pub struct GreptimeOptions<T> {
/// The runtime options.
pub runtime: RuntimeOptions,
/// The plugin options.
pub plugins: Vec<PluginOptions>,

/// The options of each component (like Datanode or Standalone) of GreptimeDB.
#[serde(flatten)]
Expand Down
7 changes: 4 additions & 3 deletions src/cmd/src/standalone.rs
Original file line number Diff line number Diff line change
Expand Up @@ -445,15 +445,16 @@ impl StartCommand {
info!("Standalone options: {opts:#?}");

let mut plugins = Plugins::new();
let plugin_opts = opts.plugins;
let opts = opts.component;
let fe_opts = opts.frontend_options();
let dn_opts = opts.datanode_options();

plugins::setup_frontend_plugins(&mut plugins, &fe_opts)
plugins::setup_frontend_plugins(&mut plugins, &plugin_opts, &fe_opts)
.await
.context(StartFrontendSnafu)?;

plugins::setup_datanode_plugins(&mut plugins, &dn_opts)
plugins::setup_datanode_plugins(&mut plugins, &plugin_opts, &dn_opts)
.await
.context(StartDatanodeSnafu)?;

Expand Down Expand Up @@ -762,7 +763,7 @@ mod tests {
};

let mut plugins = Plugins::new();
plugins::setup_frontend_plugins(&mut plugins, &fe_opts)
plugins::setup_frontend_plugins(&mut plugins, &[], &fe_opts)
.await
.unwrap();

Expand Down
1 change: 1 addition & 0 deletions src/plugins/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,5 @@ common-base.workspace = true
datanode.workspace = true
frontend.workspace = true
meta-srv.workspace = true
serde.workspace = true
snafu.workspace = true
3 changes: 3 additions & 0 deletions src/plugins/src/datanode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,13 @@ use common_base::Plugins;
use datanode::config::DatanodeOptions;
use datanode::error::Result;

use crate::options::PluginOptions;

#[allow(unused_variables)]
#[allow(unused_mut)]
pub async fn setup_datanode_plugins(
plugins: &mut Plugins,
plugin_options: &[PluginOptions],
dn_opts: &DatanodeOptions,
) -> Result<()> {
Ok(())
Expand Down
3 changes: 3 additions & 0 deletions src/plugins/src/frontend.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,12 @@ use frontend::error::{IllegalAuthConfigSnafu, Result};
use frontend::frontend::FrontendOptions;
use snafu::ResultExt;

use crate::options::PluginOptions;

#[allow(unused_mut)]
pub async fn setup_frontend_plugins(
plugins: &mut Plugins,
_plugin_options: &[PluginOptions],
fe_opts: &FrontendOptions,
) -> Result<()> {
if let Some(user_provider) = fe_opts.user_provider.as_ref() {
Expand Down
2 changes: 2 additions & 0 deletions src/plugins/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
mod datanode;
mod frontend;
mod meta_srv;
mod options;

pub use datanode::{setup_datanode_plugins, start_datanode_plugins};
pub use frontend::{setup_frontend_plugins, start_frontend_plugins};
pub use meta_srv::{setup_metasrv_plugins, start_metasrv_plugins};
pub use options::PluginOptions;
3 changes: 3 additions & 0 deletions src/plugins/src/meta_srv.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,12 @@ use common_base::Plugins;
use meta_srv::error::Result;
use meta_srv::metasrv::MetasrvOptions;

use crate::options::PluginOptions;

#[allow(unused_variables)]
pub async fn setup_metasrv_plugins(
_plugins: &mut Plugins,
plugin_options: &[PluginOptions],
metasrv_opts: &MetasrvOptions,
) -> Result<()> {
Ok(())
Expand Down
23 changes: 23 additions & 0 deletions src/plugins/src/options.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Copyright 2023 Greptime Team
//
// Licensed 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};

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct DummyOptions;

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub enum PluginOptions {
Dummy(DummyOptions),
}

0 comments on commit 8b307e4

Please sign in to comment.