|
|
|
@@ -52,7 +52,7 @@
|
|
|
|
//! }
|
|
|
|
//! }
|
|
|
|
//! ```
|
|
|
|
//! ```
|
|
|
|
|
|
|
|
|
|
|
|
use kube::{Error, Resource, ResourceExt, api::DynamicObject, core::ErrorResponse};
|
|
|
|
use kube::{Error, Resource, ResourceExt, api::DynamicObject};
|
|
|
|
use serde::Serialize;
|
|
|
|
use serde::Serialize;
|
|
|
|
use serde_json;
|
|
|
|
use serde_json;
|
|
|
|
|
|
|
|
|
|
|
|
@@ -117,13 +117,16 @@ 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();
|
|
|
|
match api.delete(&name, &kube::api::DeleteParams::default()).await {
|
|
|
|
// FIXME this swallows all errors. Swallowing a 404 is ok but other errors must be
|
|
|
|
Ok(_) | Err(Error::Api(ErrorResponse { code: 404, .. })) => {}
|
|
|
|
// handled properly (such as retrying). A normal error case is when we delete a
|
|
|
|
Err(e) => return Err(e),
|
|
|
|
// resource bundle with dependencies between various resources. Such as a pod with a
|
|
|
|
}
|
|
|
|
// 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(())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|