@@ -81,3 +81,51 @@ def handle(self, request: Request) -> bool:
8181 )
8282 )
8383 return True
84+
85+
86+ class ServiceInstancesStatusHandler (BaseHandler ):
87+
88+ def detect (self , request : Request ) -> bool :
89+ group = request .get ("resource" , {}).get ("group" , None )
90+ resource = "/" .join ([
91+ request .get ("resource" , {}).get ("resource" , None ),
92+ request .get ("subResource" , "" ),
93+ ])
94+ if (group , resource ) == ("servicecatalog.k8s.io" , "serviceinstances/status" ):
95+ return True
96+ return False
97+
98+ def handle (self , request : Request ) -> bool :
99+ app_id = request ["object" ]["metadata" ]["namespace" ]
100+ name = request ["object" ]["metadata" ]["name" ]
101+ status = request ["object" ]["status" ]["lastConditionState" ]
102+ resource = models .resource .Resource .objects .filter (
103+ app__id = app_id , name = name ).first ()
104+ if resource and resource .status != status :
105+ resource .status = status
106+ resource .save (update_fields = ["status" ])
107+ return True
108+
109+
110+ class ServicebindingsStatusHandler (BaseHandler ):
111+
112+ def detect (self , request : Request ) -> bool :
113+ group = request .get ("resource" , {}).get ("group" , None )
114+ resource = "/" .join ([
115+ request .get ("resource" , {}).get ("resource" , None ),
116+ request .get ("subResource" , "" ),
117+ ])
118+ if (group , resource ) == ("servicecatalog.k8s.io" , "servicebindings/status" ):
119+ return True
120+ return False
121+
122+ def handle (self , request : Request ) -> bool :
123+ app_id = request ["object" ]["metadata" ]["namespace" ]
124+ name = request ["object" ]["metadata" ]["name" ]
125+ binding = request ["object" ]["status" ]["lastConditionState" ]
126+ resource = models .resource .Resource .objects .filter (
127+ app__id = app_id , name = name ).first ()
128+ if resource and resource .binding != binding :
129+ resource .binding = binding
130+ resource .save (update_fields = ["binding" ])
131+ return True
0 commit comments