66import json
77import hashlib
88import tempfile
9+ from collections import defaultdict
910from functools import partial
1011from six import PY2 , PY3
1112
@@ -185,7 +186,7 @@ def parse_api_groups(self):
185186 def get_resources_for_api_version (self , prefix , group , version , preferred ):
186187 """ returns a dictionary of resources associated with provided groupVersion"""
187188
188- resources = {}
189+ resources = defaultdict ( list )
189190 subresources = {}
190191
191192 path = '/' .join (filter (None , [prefix , group , version ]))
@@ -204,7 +205,7 @@ def get_resources_for_api_version(self, prefix, group, version, preferred):
204205 for key in ('prefix' , 'group' , 'api_version' , 'client' , 'preferred' ):
205206 resource .pop (key , None )
206207
207- resources [ resource [ 'kind' ]] = Resource (
208+ resourceobj = Resource (
208209 prefix = prefix ,
209210 group = group ,
210211 api_version = version ,
@@ -213,7 +214,8 @@ def get_resources_for_api_version(self, prefix, group, version, preferred):
213214 subresources = subresources .get (resource ['name' ]),
214215 ** resource
215216 )
216- resources ['{}List' .format (resource ['kind' ])] = ResourceList (resources [resource ['kind' ]])
217+ resources [resource ['kind' ]].append (resourceobj )
218+ resources ['{}List' .format (resource ['kind' ])].append (ResourceList (resourceobj ))
217219 return resources
218220
219221 def ensure_namespace (self , resource , namespace , body ):
@@ -668,13 +670,13 @@ def __search(self, parts, resources):
668670 if isinstance (resources .get (part ), dict ):
669671 return self .__search (parts [1 :], resources [part ])
670672 else :
671- resource = resources .get (part )
672673 if parts [1 ] != '*' and isinstance (parts [1 ], dict ):
673- for term , value in parts [1 ].items ():
674- if getattr (resource , term ) == value :
675- return [resource ]
674+ for resource in resources .get (part ):
675+ for term , value in parts [1 ].items ():
676+ if getattr (resource , term ) == value :
677+ return [resource ]
676678 else :
677- return [ resource ]
679+ return resources . get ( part )
678680 elif part == '*' :
679681 matches = []
680682 for key in resources .keys ():
0 commit comments