wip: rook-ceph install score
Some checks failed
Run Check Script / check (pull_request) Failing after 20s
Some checks failed
Run Check Script / check (pull_request) Failing after 20s
This commit is contained in:
parent
5895f867cf
commit
ac7fd53d5e
@ -1 +1,4 @@
|
|||||||
pub mod ceph_osd_replacement_score;
|
pub mod ceph_remove_osd_score;
|
||||||
|
pub mod rook_ceph_helm_chart_score;
|
||||||
|
pub mod rook_ceph_cluster_helm_chart_score;
|
||||||
|
pub mod rook_ceph_install_score;
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
use non_blank_string_rs::NonBlankString;
|
||||||
|
|
||||||
|
use crate::modules::helm::chart::HelmChartScore;
|
||||||
|
|
||||||
|
pub fn rook_ceph_cluster_helm_chart(ns: &str) -> HelmChartScore {
|
||||||
|
let values = r#"
|
||||||
|
monitoring:
|
||||||
|
enabled: true
|
||||||
|
createPrometheusRules: true
|
||||||
|
cephClusterSpec:
|
||||||
|
placement:
|
||||||
|
all:
|
||||||
|
nodeAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: storage-node
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- "true"
|
||||||
|
dashboard:
|
||||||
|
ssl: false
|
||||||
|
prometheusEndpoint: http://prometheus-operated:9090
|
||||||
|
prometheusEndpointSSLVerify: false
|
||||||
|
toolbox:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
"#
|
||||||
|
.to_string();
|
||||||
|
HelmChartScore {
|
||||||
|
namespace: Some(NonBlankString::from_str(ns).unwrap()),
|
||||||
|
release_name: NonBlankString::from_str("rook-ceph").unwrap(),
|
||||||
|
chart_name: NonBlankString::from_str("https://charts.rook.io/release/rook-release/rook-ceph-cluster").unwrap(),
|
||||||
|
chart_version: todo!(),
|
||||||
|
values_overrides: todo!(),
|
||||||
|
values_yaml: Some(values.to_string()),
|
||||||
|
create_namespace: todo!(),
|
||||||
|
install_only: todo!(),
|
||||||
|
repository: todo!(),
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
use std::str::FromStr;
|
||||||
|
|
||||||
|
use non_blank_string_rs::NonBlankString;
|
||||||
|
|
||||||
|
use crate::modules::helm::chart::HelmChartScore;
|
||||||
|
|
||||||
|
pub fn rook_ceph_helm_chart(ns: &str) -> HelmChartScore {
|
||||||
|
let values = r#"
|
||||||
|
monitoring:
|
||||||
|
enabled: true
|
||||||
|
"#
|
||||||
|
.to_string();
|
||||||
|
HelmChartScore {
|
||||||
|
namespace: Some(NonBlankString::from_str(ns).unwrap()),
|
||||||
|
release_name: NonBlankString::from_str("rook-ceph").unwrap(),
|
||||||
|
chart_name: NonBlankString::from_str("https://charts.rook.io/release/rook-release/rook-ceph").unwrap(),
|
||||||
|
chart_version: todo!(),
|
||||||
|
values_overrides: todo!(),
|
||||||
|
values_yaml: Some(values.to_string()),
|
||||||
|
create_namespace: todo!(),
|
||||||
|
install_only: todo!(),
|
||||||
|
repository: todo!(),
|
||||||
|
}
|
||||||
|
}
|
81
harmony/src/modules/storage/ceph/rook_ceph_install_score.rs
Normal file
81
harmony/src/modules/storage/ceph/rook_ceph_install_score.rs
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
use serde::Serialize;
|
||||||
|
|
||||||
|
use crate::{
|
||||||
|
data::{Id, Version},
|
||||||
|
interpret::{Interpret, InterpretError, InterpretName, InterpretStatus, Outcome},
|
||||||
|
inventory::Inventory,
|
||||||
|
score::Score,
|
||||||
|
topology::{HelmCommand, Topology},
|
||||||
|
};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Serialize)]
|
||||||
|
pub struct RookCephInstall {
|
||||||
|
namespace: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<T: Topology + HelmCommand> Score<T> for RookCephInstall {
|
||||||
|
fn name(&self) -> String {
|
||||||
|
"RookCephInstall".to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_interpret(&self) -> Box<dyn Interpret<T>> {
|
||||||
|
Box::new(RookCephInstallInterpret {
|
||||||
|
score: self.score.clone(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct RookCephInstallInterpret {
|
||||||
|
score: RookCephInstall,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[async_trait]
|
||||||
|
impl<T: Topology + HelmCommand> Interpret<T> for RookCephInstallInterpret {
|
||||||
|
async fn execute(
|
||||||
|
&self,
|
||||||
|
inventory: &Inventory,
|
||||||
|
topology: &T,
|
||||||
|
) -> Result<InterpretError, Outcome> {
|
||||||
|
self.label_nodes();
|
||||||
|
self.install_rook_helm_chart(self.score.namespace);
|
||||||
|
self.install_rook_cluster_helm_chart(self.score.namespace);
|
||||||
|
//TODO I think we will need to add a capability OCClient to interact with the okd
|
||||||
|
//cli tool
|
||||||
|
self.add_oc_adm_policy(self.score.namespace);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_name(&self) -> InterpretName {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_version(&self) -> Version {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_status(&self) -> InterpretStatus {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_children(&self) -> Vec<Id> {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl RookCephInstallInterpret {
|
||||||
|
fn label_nodes(&self) -> _ {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn install_rook_helm_chart(&self, namespace: String) -> _ {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn install_rook_cluster_helm_chart(&self, namespace: String) -> _ {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn add_oc_adm_policy(&self, namespace: String) -> _ {
|
||||||
|
todo!()
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user