@@ -30,14 +30,10 @@ use flate2::{write::ZlibEncoder, Compression};
3030use futures:: StreamExt ;
3131use k8s_openapi:: {
3232 api:: {
33- apps:: v1:: {
34- DaemonSet , DaemonSetSpec , Deployment , DeploymentSpec , ReplicaSet , ReplicaSetSpec ,
35- StatefulSet , StatefulSetSpec ,
36- } ,
33+ apps:: v1:: { DaemonSet , Deployment , ReplicaSet , ReplicaSetSpec , StatefulSet } ,
3734 core:: v1:: {
38- Container , ContainerStatus , Namespace , Node , NodeSpec , NodeStatus , Pod , PodSpec ,
39- PodStatus , ReplicationController , ReplicationControllerSpec , Service , ServiceSpec ,
40- ServiceStatus ,
35+ ConfigMap , Container , ContainerStatus , Namespace , Node , NodeSpec , NodeStatus , Pod ,
36+ PodSpec , PodStatus , ReplicationController , Service , ServiceStatus ,
4137 } ,
4238 extensions, networking,
4339 } ,
@@ -212,6 +208,7 @@ pub enum GenericResourceWatcher {
212208 V1beta1Ingress ( ResourceWatcher < networking:: v1beta1:: Ingress > ) ,
213209 ExtV1beta1Ingress ( ResourceWatcher < extensions:: v1beta1:: Ingress > ) ,
214210 Route ( ResourceWatcher < Route > ) ,
211+ ConfigMap ( ResourceWatcher < ConfigMap > ) ,
215212
216213 // CRDs
217214 ServiceRule ( ResourceWatcher < ServiceRule > ) ,
@@ -278,6 +275,16 @@ impl fmt::Display for Resource {
278275
279276pub fn default_resources ( ) -> Vec < Resource > {
280277 vec ! [
278+ Resource {
279+ name: "configmaps" ,
280+ pb_name: "*v1.ConfigMap" ,
281+ group_versions: vec![ GroupVersion {
282+ group: "core" ,
283+ version: "v1" ,
284+ } ] ,
285+ selected_gv: SelectedGv :: None ,
286+ field_selector: String :: new( ) ,
287+ } ,
281288 Resource {
282289 name: "namespaces" ,
283290 pb_name: "*v1.Namespace" ,
@@ -393,6 +400,16 @@ pub fn default_resources() -> Vec<Resource> {
393400
394401pub fn supported_resources ( ) -> Vec < Resource > {
395402 vec ! [
403+ Resource {
404+ name: "configmaps" ,
405+ pb_name: "*v1.ConfigMap" ,
406+ group_versions: vec![ GroupVersion {
407+ group: "core" ,
408+ version: "v1" ,
409+ } ] ,
410+ selected_gv: SelectedGv :: None ,
411+ field_selector: String :: new( ) ,
412+ } ,
396413 Resource {
397414 name: "namespaces" ,
398415 pb_name: "*v1.Namespace" ,
@@ -1165,25 +1182,12 @@ impl Trimmable for ReplicaSet {
11651182}
11661183
11671184impl Trimmable for ReplicationController {
1168- fn trim ( mut self ) -> Self {
1169- let mut trim_rc = ReplicationController :: default ( ) ;
1170- trim_rc. metadata = ObjectMeta {
1171- uid : self . metadata . uid . take ( ) ,
1172- name : self . metadata . name . take ( ) ,
1173- namespace : self . metadata . namespace . take ( ) ,
1185+ fn trim ( self ) -> Self {
1186+ ReplicationController {
1187+ metadata : self . metadata ,
1188+ spec : self . spec ,
11741189 ..Default :: default ( )
1175- } ;
1176-
1177- if let Some ( rc_spec) = self . spec . take ( ) {
1178- trim_rc. spec = Some ( ReplicationControllerSpec {
1179- replicas : rc_spec. replicas ,
1180- selector : rc_spec. selector ,
1181- template : rc_spec. template ,
1182- ..Default :: default ( )
1183- } ) ;
11841190 }
1185-
1186- trim_rc
11871191 }
11881192}
11891193
@@ -1239,96 +1243,51 @@ impl Trimmable for Route {
12391243 }
12401244}
12411245
1242- impl Trimmable for DaemonSet {
1243- fn trim ( mut self ) -> Self {
1244- let mut trim_ds = DaemonSet :: default ( ) ;
1245- trim_ds. metadata = ObjectMeta {
1246- uid : self . metadata . uid . take ( ) ,
1247- name : self . metadata . name . take ( ) ,
1248- namespace : self . metadata . namespace . take ( ) ,
1249- labels : self . metadata . labels . take ( ) ,
1246+ impl Trimmable for ConfigMap {
1247+ fn trim ( self ) -> Self {
1248+ ConfigMap {
1249+ data : self . data ,
1250+ metadata : self . metadata ,
12501251 ..Default :: default ( )
1251- } ;
1252- if let Some ( ds_spec) = self . spec . take ( ) {
1253- trim_ds. spec = Some ( DaemonSetSpec {
1254- selector : ds_spec. selector ,
1255- template : ds_spec. template ,
1256- ..Default :: default ( )
1257- } )
12581252 }
1253+ }
1254+ }
12591255
1260- trim_ds
1256+ impl Trimmable for DaemonSet {
1257+ fn trim ( self ) -> Self {
1258+ DaemonSet {
1259+ metadata : self . metadata ,
1260+ spec : self . spec ,
1261+ ..Default :: default ( )
1262+ }
12611263 }
12621264}
12631265
12641266impl Trimmable for StatefulSet {
1265- fn trim ( mut self ) -> Self {
1266- let mut trim_st = StatefulSet :: default ( ) ;
1267- trim_st. metadata = ObjectMeta {
1268- uid : self . metadata . uid . take ( ) ,
1269- name : self . metadata . name . take ( ) ,
1270- namespace : self . metadata . namespace . take ( ) ,
1271- labels : self . metadata . labels . take ( ) ,
1267+ fn trim ( self ) -> Self {
1268+ StatefulSet {
1269+ metadata : self . metadata ,
1270+ spec : self . spec ,
12721271 ..Default :: default ( )
1273- } ;
1274-
1275- if let Some ( st_spec) = self . spec . take ( ) {
1276- trim_st. spec = Some ( StatefulSetSpec {
1277- replicas : st_spec. replicas ,
1278- selector : st_spec. selector ,
1279- template : st_spec. template ,
1280- ..Default :: default ( )
1281- } )
12821272 }
1283- trim_st
12841273 }
12851274}
12861275
12871276impl Trimmable for Deployment {
1288- fn trim ( mut self ) -> Self {
1289- let mut trim_de = Deployment :: default ( ) ;
1290- trim_de. metadata = ObjectMeta {
1291- uid : self . metadata . uid . take ( ) ,
1292- name : self . metadata . name . take ( ) ,
1293- namespace : self . metadata . namespace . take ( ) ,
1294- labels : self . metadata . labels . take ( ) ,
1277+ fn trim ( self ) -> Self {
1278+ Deployment {
1279+ metadata : self . metadata ,
1280+ spec : self . spec ,
12951281 ..Default :: default ( )
1296- } ;
1297-
1298- if let Some ( de_spec) = self . spec . take ( ) {
1299- trim_de. spec = Some ( DeploymentSpec {
1300- replicas : de_spec. replicas ,
1301- selector : de_spec. selector ,
1302- template : de_spec. template ,
1303- ..Default :: default ( )
1304- } ) ;
13051282 }
1306-
1307- trim_de
13081283 }
13091284}
13101285
13111286impl Trimmable for Service {
13121287 fn trim ( mut self ) -> Self {
13131288 let mut trim_svc = Service :: default ( ) ;
1314- trim_svc. metadata = ObjectMeta {
1315- uid : self . metadata . uid . take ( ) ,
1316- name : self . metadata . name . take ( ) ,
1317- namespace : self . metadata . namespace . take ( ) ,
1318- annotations : self . metadata . annotations . take ( ) ,
1319- labels : self . metadata . labels . take ( ) ,
1320- ..Default :: default ( )
1321- } ;
1322-
1323- if let Some ( svc_spec) = self . spec . take ( ) {
1324- trim_svc. spec = Some ( ServiceSpec {
1325- selector : svc_spec. selector ,
1326- type_ : svc_spec. type_ ,
1327- cluster_ip : svc_spec. cluster_ip ,
1328- ports : svc_spec. ports ,
1329- ..Default :: default ( )
1330- } ) ;
1331- }
1289+ trim_svc. metadata = self . metadata ;
1290+ trim_svc. spec = self . spec ;
13321291 if let Some ( svc_status) = self . status . take ( ) {
13331292 trim_svc. status = Some ( ServiceStatus {
13341293 load_balancer : svc_status. load_balancer ,
@@ -1436,6 +1395,12 @@ impl ResourceWatcherFactory {
14361395 ) -> Option < GenericResourceWatcher > {
14371396 let namespace = namespace. unwrap_or ( "" ) ;
14381397 let watcher = match resource. name {
1398+ "configmaps" => GenericResourceWatcher :: ConfigMap ( self . new_namespace_resource (
1399+ resource,
1400+ stats_collector,
1401+ namespace,
1402+ config,
1403+ ) ) ,
14391404 // 特定namespace不支持Node/Namespace资源
14401405 "nodes" => GenericResourceWatcher :: Node ( self . new_cluster_resource (
14411406 resource,
0 commit comments