Compare commits
1 Commits
snapshot-l
...
worktree-b
| Author | SHA1 | Date | |
|---|---|---|---|
| 82d1f87ff8 |
@@ -52,7 +52,7 @@
|
|||||||
//! }
|
//! }
|
||||||
//! ```
|
//! ```
|
||||||
|
|
||||||
use kube::{Error, Resource, ResourceExt, api::DynamicObject};
|
use kube::{Error, Resource, ResourceExt, api::DynamicObject, core::ErrorResponse};
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use serde_json;
|
use serde_json;
|
||||||
|
|
||||||
@@ -117,16 +117,13 @@ impl ResourceBundle {
|
|||||||
/// Delete all resources in this bundle from the cluster.
|
/// Delete all resources in this bundle from the cluster.
|
||||||
/// Resources are deleted in reverse order to respect dependencies.
|
/// Resources are deleted in reverse order to respect dependencies.
|
||||||
pub async fn delete(&self, client: &K8sClient) -> Result<(), Error> {
|
pub async fn delete(&self, client: &K8sClient) -> Result<(), Error> {
|
||||||
// FIXME delete all in parallel and retry using kube::client::retry::RetryPolicy
|
|
||||||
for res in self.resources.iter().rev() {
|
for res in self.resources.iter().rev() {
|
||||||
let api = client.get_api_for_dynamic_object(res, res.namespace().as_deref())?;
|
let api = client.get_api_for_dynamic_object(res, res.namespace().as_deref())?;
|
||||||
let name = res.name_any();
|
let name = res.name_any();
|
||||||
// FIXME this swallows all errors. Swallowing a 404 is ok but other errors must be
|
match api.delete(&name, &kube::api::DeleteParams::default()).await {
|
||||||
// handled properly (such as retrying). A normal error case is when we delete a
|
Ok(_) | Err(Error::Api(ErrorResponse { code: 404, .. })) => {}
|
||||||
// resource bundle with dependencies between various resources. Such as a pod with a
|
Err(e) => return Err(e),
|
||||||
// dependency on a ClusterRoleBinding. Trying to delete the ClusterRoleBinding first
|
}
|
||||||
// is expected to fail
|
|
||||||
let _ = api.delete(&name, &kube::api::DeleteParams::default()).await;
|
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user