|
1 | 1 | use futures::{Stream, StreamExt, TryStreamExt};
|
2 | 2 | use kube::{
|
3 |
| - api::{Api, DynamicObject, GroupVersionKind, Resource, ResourceExt}, |
| 3 | + api::{Api, ApiResource, DynamicObject, GroupVersionKind, Resource, ResourceExt}, |
4 | 4 | runtime::{metadata_watcher, watcher, watcher::Event, WatchStreamExt},
|
5 | 5 | };
|
6 | 6 | use serde::de::DeserializeOwned;
|
@@ -32,21 +32,24 @@ async fn main() -> anyhow::Result<()> {
|
32 | 32 |
|
33 | 33 | // Start a metadata or a full resource watch
|
34 | 34 | if watch_metadata {
|
35 |
| - handle_events(metadata_watcher(api, wc)).await |
| 35 | + handle_events(metadata_watcher(api, wc), &ar).await |
36 | 36 | } else {
|
37 |
| - handle_events(watcher(api, wc)).await |
| 37 | + handle_events(watcher(api, wc), &ar).await |
38 | 38 | }
|
39 | 39 | }
|
40 | 40 |
|
41 |
| -async fn handle_events<K: Resource + Clone + Debug + Send + DeserializeOwned + 'static>( |
| 41 | +async fn handle_events< |
| 42 | + K: Resource<DynamicType = ApiResource> + Clone + Debug + Send + DeserializeOwned + 'static, |
| 43 | +>( |
42 | 44 | stream: impl Stream<Item = watcher::Result<Event<K>>> + Send + 'static,
|
| 45 | + ar: &ApiResource, |
43 | 46 | ) -> anyhow::Result<()> {
|
44 | 47 | let mut items = stream.applied_objects().boxed();
|
45 | 48 | while let Some(p) = items.try_next().await? {
|
46 | 49 | if let Some(ns) = p.namespace() {
|
47 |
| - info!("saw {} in {ns}", p.name_any()); |
| 50 | + info!("saw {} {} in {ns}", K::kind(ar), p.name_any()); |
48 | 51 | } else {
|
49 |
| - info!("saw {}", p.name_any()); |
| 52 | + info!("saw {} {}", K::kind(ar), p.name_any()); |
50 | 53 | }
|
51 | 54 | trace!("full obj: {p:?}");
|
52 | 55 | }
|
|
0 commit comments