Skip to content

Commit 79bd7eb

Browse files
committed
replace unwrap() calls with context()
1 parent efd633c commit 79bd7eb

File tree

3 files changed

+30
-9
lines changed

3 files changed

+30
-9
lines changed

rust/olm-deployer/src/data.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use anyhow::{anyhow, Context};
12
use stackable_operator::kube::{api::DynamicObject, ResourceExt};
23

34
pub fn container<'a>(
@@ -6,7 +7,13 @@ pub fn container<'a>(
67
) -> anyhow::Result<&'a mut serde_json::Value> {
78
let tname = target.name_any();
89
let path = "template/spec/containers".split("/");
9-
match get_or_create(target.data.pointer_mut("/spec").unwrap(), path)? {
10+
match get_or_create(
11+
target
12+
.data
13+
.pointer_mut("/spec")
14+
.context(anyhow!("object [{tname}] has no .spec property"))?,
15+
path,
16+
)? {
1017
serde_json::Value::Array(containers) => {
1118
for c in containers {
1219
if c.is_object() {
@@ -56,7 +63,8 @@ fn get_or_insert_default_object<'a>(
5663
serde_json::Value::Object(map) => map,
5764
x @ serde_json::Value::Null => {
5865
*x = serde_json::json!({});
59-
x.as_object_mut().unwrap()
66+
x.as_object_mut()
67+
.context(anyhow!("expected an empty map for [{key}] but found null"))?
6068
}
6169
x => anyhow::bail!("invalid type {x:?}, expected map"),
6270
};

rust/olm-deployer/src/main.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,10 @@ async fn get_cluster_role(csv: &str, client: &client::Client) -> Result<ClusterR
201201
let cluster_role_api = client.get_all_api::<ClusterRole>();
202202
let result = cluster_role_api.list(&lp).await?.items;
203203
if !result.is_empty() {
204-
Ok(result.first().unwrap().clone())
204+
Ok(result
205+
.first()
206+
.context(anyhow!("ClusterRole object not found for labels {labels}"))?
207+
.clone())
205208
} else {
206209
bail!("ClusterRole object not found for labels {labels}")
207210
}

rust/olm-deployer/src/tolerations/mod.rs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
1+
use anyhow::{anyhow, Context};
12
use stackable_operator::{
23
k8s_openapi::api::{apps::v1::Deployment, core::v1::Toleration},
3-
kube::api::{DynamicObject, GroupVersionKind},
4+
kube::{
5+
api::{DynamicObject, GroupVersionKind},
6+
ResourceExt,
7+
},
48
};
59

610
use crate::data::get_or_create;
@@ -14,13 +18,19 @@ pub(super) fn maybe_copy_tolerations(
1418
target_gvk: &GroupVersionKind,
1519
) -> anyhow::Result<()> {
1620
if target_gvk.kind == "DaemonSet" {
21+
let tname = target.name_any();
1722
if let Some(tolerations) = deployment_tolerations(source) {
1823
let path = "template/spec/tolerations".split("/");
19-
*get_or_create(target.data.pointer_mut("/spec").unwrap(), path)? =
20-
serde_json::json!(tolerations
21-
.iter()
22-
.map(|t| serde_json::json!(t))
23-
.collect::<Vec<serde_json::Value>>());
24+
*get_or_create(
25+
target
26+
.data
27+
.pointer_mut("/spec")
28+
.context(anyhow!("DaemonSet named [{tname}] has empty .spec"))?,
29+
path,
30+
)? = serde_json::json!(tolerations
31+
.iter()
32+
.map(|t| serde_json::json!(t))
33+
.collect::<Vec<serde_json::Value>>());
2434
}
2535
}
2636

0 commit comments

Comments
 (0)