Skip to content

Commit d58382c

Browse files
committed
refactor: improve repo handling
1 parent 2bcfa15 commit d58382c

2 files changed

Lines changed: 37 additions & 47 deletions

File tree

rust/operator-binary/src/config/mod.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use std::{collections::BTreeMap, fmt::Write};
22

33
use snafu::Snafu;
4+
use stackable_operator::k8s_openapi::api::core::v1::VolumeMount;
45
use strum::{Display, EnumIter};
56

67
use crate::security::oidc;
@@ -29,6 +30,21 @@ pub enum NifiRepository {
2930
State,
3031
}
3132

33+
/// The repositories that are backed by a [`PersistentVolume`] and therefore need a volume mount
34+
/// in both the prepare and the nifi container.
35+
///
36+
/// [`NifiRepository::Filebased`] is intentionally excluded: it is only mounted conditionally for
37+
/// file-based authorization (see [`crate::security::authorization`]).
38+
///
39+
/// [`PersistentVolume`]: stackable_operator::k8s_openapi::api::core::v1::PersistentVolume
40+
pub const PERSISTENT_REPOSITORIES: [NifiRepository; 5] = [
41+
NifiRepository::Flowfile,
42+
NifiRepository::Database,
43+
NifiRepository::Content,
44+
NifiRepository::Provenance,
45+
NifiRepository::State,
46+
];
47+
3248
impl NifiRepository {
3349
pub fn repository(&self) -> String {
3450
format!("{}-repository", self)
@@ -37,6 +53,15 @@ impl NifiRepository {
3753
pub fn mount_path(&self) -> String {
3854
format!("{NIFI_PVC_STORAGE_DIRECTORY}/{}", self)
3955
}
56+
57+
/// The [`VolumeMount`] mounting this repository's volume into a container.
58+
pub fn volume_mount(&self) -> VolumeMount {
59+
VolumeMount {
60+
name: self.repository(),
61+
mount_path: self.mount_path(),
62+
..VolumeMount::default()
63+
}
64+
}
4065
}
4166

4267
#[derive(Snafu, Debug)]

rust/operator-binary/src/controller.rs

Lines changed: 12 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,10 @@ use validate::NifiRoleGroupConfig;
7070

7171
use crate::{
7272
OPERATOR_NAME,
73-
config::{NIFI_CONFIG_DIRECTORY, NIFI_PYTHON_WORKING_DIRECTORY, NifiRepository},
73+
config::{
74+
NIFI_CONFIG_DIRECTORY, NIFI_PYTHON_WORKING_DIRECTORY, NifiRepository,
75+
PERSISTENT_REPOSITORIES,
76+
},
7477
crd::{
7578
APP_NAME, BALANCE_PORT, BALANCE_PORT_NAME, Container, HTTPS_PORT, HTTPS_PORT_NAME,
7679
METRICS_PORT, METRICS_PORT_NAME, NifiConfig, NifiNodeRoleConfig, NifiRole, NifiRoleType,
@@ -805,29 +808,10 @@ async fn build_node_rolegroup_statefulset(
805808
])
806809
.add_env_vars(env_vars.clone())
807810
.args(vec![prepare_args.join(" && ")])
808-
.add_volume_mount(
809-
NifiRepository::Flowfile.repository(),
810-
NifiRepository::Flowfile.mount_path(),
811-
)
812-
.context(AddVolumeMountSnafu)?
813-
.add_volume_mount(
814-
NifiRepository::Database.repository(),
815-
NifiRepository::Database.mount_path(),
816-
)
817-
.context(AddVolumeMountSnafu)?
818-
.add_volume_mount(
819-
NifiRepository::Content.repository(),
820-
NifiRepository::Content.mount_path(),
821-
)
822-
.context(AddVolumeMountSnafu)?
823-
.add_volume_mount(
824-
NifiRepository::Provenance.repository(),
825-
NifiRepository::Provenance.mount_path(),
826-
)
827-
.context(AddVolumeMountSnafu)?
828-
.add_volume_mount(
829-
NifiRepository::State.repository(),
830-
NifiRepository::State.mount_path(),
811+
.add_volume_mounts(
812+
PERSISTENT_REPOSITORIES
813+
.iter()
814+
.map(NifiRepository::volume_mount),
831815
)
832816
.context(AddVolumeMountSnafu)?
833817
.add_volume_mount("conf", "/conf")
@@ -891,29 +875,10 @@ async fn build_node_rolegroup_statefulset(
891875
.add_env_vars(env_vars)
892876
.add_volume_mount(KEYSTORE_VOLUME_NAME, KEYSTORE_NIFI_CONTAINER_MOUNT)
893877
.context(AddVolumeMountSnafu)?
894-
.add_volume_mount(
895-
NifiRepository::Flowfile.repository(),
896-
NifiRepository::Flowfile.mount_path(),
897-
)
898-
.context(AddVolumeMountSnafu)?
899-
.add_volume_mount(
900-
NifiRepository::Database.repository(),
901-
NifiRepository::Database.mount_path(),
902-
)
903-
.context(AddVolumeMountSnafu)?
904-
.add_volume_mount(
905-
NifiRepository::Content.repository(),
906-
NifiRepository::Content.mount_path(),
907-
)
908-
.context(AddVolumeMountSnafu)?
909-
.add_volume_mount(
910-
NifiRepository::Provenance.repository(),
911-
NifiRepository::Provenance.mount_path(),
912-
)
913-
.context(AddVolumeMountSnafu)?
914-
.add_volume_mount(
915-
NifiRepository::State.repository(),
916-
NifiRepository::State.mount_path(),
878+
.add_volume_mounts(
879+
PERSISTENT_REPOSITORIES
880+
.iter()
881+
.map(NifiRepository::volume_mount),
917882
)
918883
.context(AddVolumeMountSnafu)?
919884
.add_volume_mount("activeconf", NIFI_CONFIG_DIRECTORY)

0 commit comments

Comments
 (0)