Skip to content

Commit d882f2d

Browse files
committed
1 parent 38817d2 commit d882f2d

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed

rust/operator-binary/src/discovery.rs

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,61 @@
11
use std::collections::BTreeMap;
22

33
use product_config::writer::to_hadoop_xml;
4+
use snafu::{ResultExt, Snafu};
45
use stackable_hbase_crd::{HbaseCluster, HbaseRole, HBASE_SITE_XML};
56
use stackable_operator::{
6-
builder::{ConfigMapBuilder, ObjectMetaBuilder},
7+
builder::{ConfigMapBuilder, ObjectMetaBuilder, ObjectMetaBuilderError},
78
commons::product_image_selection::ResolvedProductImage,
8-
error::OperatorResult,
99
k8s_openapi::api::core::v1::ConfigMap,
10+
kube::runtime::reflector::ObjectRef,
1011
};
1112

1213
use crate::{
1314
hbase_controller::build_recommended_labels, zookeeper::ZookeeperConnectionInformation,
1415
};
1516

17+
type Result<T, E = Error> = std::result::Result<T, E>;
18+
19+
#[derive(Snafu, Debug)]
20+
pub enum Error {
21+
#[snafu(display("object {hbase} is missing metadata to build owner reference"))]
22+
ObjectMissingMetadataForOwnerRef {
23+
source: stackable_operator::error::Error,
24+
hbase: ObjectRef<HbaseCluster>,
25+
},
26+
27+
#[snafu(display("failed to build ConfigMap"))]
28+
BuildConfigMap {
29+
source: stackable_operator::error::Error,
30+
},
31+
32+
#[snafu(display("failed to build object meta data"))]
33+
ObjectMeta { source: ObjectMetaBuilderError },
34+
}
35+
1636
/// Creates a discovery config map containing the `hbase-site.xml` for clients.
1737
pub fn build_discovery_configmap(
1838
hbase: &HbaseCluster,
1939
zookeeper_connection_information: &ZookeeperConnectionInformation,
2040
resolved_product_image: &ResolvedProductImage,
21-
) -> OperatorResult<ConfigMap> {
41+
) -> Result<ConfigMap> {
2242
let hbase_site = zookeeper_connection_information.as_hbase_settings();
2343

2444
ConfigMapBuilder::new()
2545
.metadata(
2646
ObjectMetaBuilder::new()
2747
.name_and_namespace(hbase)
28-
.ownerreference_from_resource(hbase, None, Some(true))?
48+
.ownerreference_from_resource(hbase, None, Some(true))
49+
.with_context(|_| ObjectMissingMetadataForOwnerRefSnafu {
50+
hbase: ObjectRef::from_obj(hbase),
51+
})?
2952
.with_recommended_labels(build_recommended_labels(
3053
hbase,
3154
&resolved_product_image.app_version_label,
3255
&HbaseRole::RegionServer.to_string(),
3356
"discovery",
3457
))
58+
.context(ObjectMetaSnafu)?
3559
.build(),
3660
)
3761
.add_data(
@@ -45,4 +69,5 @@ pub fn build_discovery_configmap(
4569
),
4670
)
4771
.build()
72+
.context(BuildConfigMapSnafu)
4873
}

0 commit comments

Comments
 (0)