@@ -111,9 +111,9 @@ def __init__(self, crossplane_v1, request, single_use, logger):
111111 self .environment = self .context ['apiextensions.crossplane.io/environment' ]
112112 self .requireds = Requireds (self )
113113 self .resources = Resources (self )
114- self .unknownsFatal = True
115114 self .autoReady = True
116115 self .usages = False
116+ self .unknownsFatal = False
117117
118118 observed = self .request .observed .composite
119119 desired = self .response .desired .composite
@@ -238,16 +238,28 @@ def __init__(self, composite, name):
238238 self .desired = desired .resource
239239 self .conditions = Conditions (observed )
240240 self .connection = observed .connection_details
241- self .unknownsFatal = None
241+ if self .desired ._parent .ready == fnv1 .Ready .READY_TRUE :
242+ self ._ready = True
243+ elif self .desired ._parent .ready == fnv1 .Ready .READY_FALSE :
244+ self ._ready = False
245+ else :
246+ self ._ready = None
242247 self .autoReady = None
243248 self .usages = None
249+ self .unknownsFatal = None
244250
245- def __call__ (self , apiVersion = _notset , kind = _notset , namespace = _notset , name = _notset ):
251+ def __call__ (self , kind = _notset , apiVersion = _notset , namespace = _notset , name = _notset ):
246252 self .desired ()
253+ if kind != _notset :
254+ # Allow for apiVersion in the first arg and kind in the second arg
255+ if '/' in kind or kind == 'v1' :
256+ if apiVersion != _notset :
257+ self .kind = apiVersion
258+ apiVersion = kind
259+ else :
260+ self .kind = kind
247261 if apiVersion != _notset :
248262 self .apiVersion = apiVersion
249- if kind != _notset :
250- self .kind = kind
251263 if namespace != _notset :
252264 self .metadata .namespace = namespace
253265 if name != _notset :
@@ -296,6 +308,7 @@ def spec(self):
296308 def spec (self , spec ):
297309 self .desired .spec = spec
298310
311+ # Used by Secret:v1
299312 @property
300313 def type (self ):
301314 return self .desired .type
@@ -318,22 +331,17 @@ def status(self):
318331
319332 @property
320333 def ready (self ):
321- ready = self .desired ._parent .ready
322- if ready == fnv1 .Ready .READY_TRUE :
323- return True
324- if ready == fnv1 .Ready .READY_FALSE :
325- return False
326- return None
334+ return self ._ready
327335
328336 @ready .setter
329337 def ready (self , ready ):
330- if ready :
331- ready = fnv1 .Ready .READY_TRUE
332- elif ready == None or (isinstance (ready , protobuf .Value ) and ready ._isUnknown ):
333- ready = fnv1 .Ready .READY_UNSPECIFIED
338+ self ._ready = ready
339+ if ready is None :
340+ self .desired ._parent .ready = fnv1 .Ready .READY_UNSPECIFIED
341+ elif ready :
342+ self .desired ._parent .ready = fnv1 .Ready .READY_TRUE
334343 else :
335- ready = fnv1 .Ready .READY_FALSE
336- self .desired ._parent .ready = ready
344+ self .desired ._parent .ready = fnv1 .Ready .READY_FALSE
337345
338346
339347class Requireds :
@@ -408,12 +416,18 @@ def __init__(self, composite, name):
408416 self ._resources = composite .request .required_resources [name ]
409417 self ._cache = {}
410418
411- def __call__ (self , apiVersion = _notset , kind = _notset , namespace = _notset , name = _notset , labels = _notset ):
419+ def __call__ (self , kind = _notset , apiVersion = _notset , namespace = _notset , name = _notset , labels = _notset ):
412420 self ._selector ()
421+ if kind != _notset :
422+ # Allow for apiVersion in the first arg and kind in the second arg
423+ if '/' in kind or kind == 'v1' :
424+ if apiVersion != _notset :
425+ self .kind = apiVersion
426+ apiVersion = kind
427+ else :
428+ self .kind = kind
413429 if apiVersion != _notset :
414430 self .apiVersion = apiVersion
415- if kind != _notset :
416- self .kind = kind
417431 if namespace != _notset :
418432 self .namespace = namespace
419433 if name != _notset :
@@ -802,60 +816,36 @@ def _resource_name(self):
802816
803817 @property
804818 def observed (self ):
805- if self ._composite .crossplane_v1 :
806- return self ._composite .response .observed .composite .connection_details
807- data = protobuf .Map ()
808- for key , value in self ._composite .resources [self ._resource_name ].observed .data :
809- data [key ] = protobuf .B64Decode (value )
810- return data
819+ return self ._composite .response .observed .composite .connection_details
811820
812821 def __getattr__ (self , key ):
813822 return self [key ]
814823
815824 def __getitem__ (self , key ):
816- if self ._composite .crossplane_v1 :
817- return self ._composite .response .desired .composite .connection_details [key ]
818- value = self ._composite .resources [self ._resource_name ].data [key ]
819- if value :
820- value = protobuf .B64Decode (value )
821- return value
825+ return self ._composite .response .desired .composite .connection_details [key ]
822826
823827 def __bool__ (self ):
824- if self ._composite .crossplane_v1 :
825- return bool (self ._composite .response .desired .composite .connection_details )
826- return bool (self ._composite .resources [self ._resource_name ].data )
828+ return bool (self ._composite .response .desired .composite .connection_details )
827829
828830 def __len__ (self ):
829- if self ._composite .crossplane_v1 :
830- return len (self ._composite .response .desired .composite .connection_details )
831- return len (self ._composite .resources [self ._resource_name ].data )
831+ return len (self ._composite .response .desired .composite .connection_details )
832832
833833 def __contains__ (self , key ):
834- if self ._composite .crossplane_v1 :
835- return key in self ._composite .response .desired .composite .connection_details
834+ return key in self ._composite .response .desired .composite .connection_details
836835
837836 def __iter__ (self ):
838- keys = set ()
839- if self ._composite .crossplane_v1 :
840- for key , value in self ._composite .response .desired .composite .connection_details :
841- yield key , value
842- for key , value in self ._composite .resources [self ._resource_name ].data :
843- yield key , protobuf .B64Decode (value )
837+ for key , value in self ._composite .response .desired .composite .connection_details :
838+ yield key , value
844839
845840 def __str__ (self ):
846841 return format (self )
847842
848843 def __format__ (self , spec = 'yaml' ):
849- if self ._composite .crossplane_v1 :
850- return format (self ._composite .response .desired .composite .connection_details , spec )
851- data = protobuf .Map ()
852- for key , value in self ._composite .resources [self ._resource_name ].data :
853- data [key ] = protobuf .B64Decode (value )
854- return format (data , spec )
844+ return format (self ._composite .response .desired .composite .connection_details , spec )
855845
856846 def __call__ (self , ** kwargs ):
847+ self ._composite .response .desired .composite .connection_details (** kwargs )
857848 if self ._composite_v1 :
858- self ._composite .response .desired .composite .connection_details (** kwargs )
859849 return
860850 del self ._composite .resources [self ._resource_name ]
861851 for key , value in kwargs :
@@ -872,16 +862,13 @@ def __setitem__(self, key, value):
872862 if not value :
873863 return
874864 value = str (value )
875- if self ._composite .crossplane_v1 :
876- self ._composite .response . desired . composite . connection_details [ key ] = value
865+ self ._composite .response . desired . composite . connection_details [ key ] = value
866+ if self . _composite . crossplane_v1 or not self ._composite .connectionSecret . name :
877867 return
878- #if not self._composite.connectionSecret.name:
879- # return
880868 if self ._resource_name in self ._composite .resources :
881869 secret = self ._composite .resources [self ._resource_name ]
882870 else :
883871 secret = self ._composite .resources [self ._resource_name ]('v1' , 'Secret' )
884- print (bool (self ._composite .connectionSecret .name ), len (self ._composite .connectionSecret .name ))
885872 if self ._composite .connectionSecret .name and len (self ._composite .connectionSecret .name ):
886873 secret .metadata .name = self ._composite .connectionSecret .name
887874 if not self ._composite .metadata .namespace :
@@ -896,8 +883,8 @@ def __delattr__(self, key):
896883 del self [key ]
897884
898885 def __delitem__ (self , key ):
886+ del self ._composite .response .desired .composite .connection_details [key ]
899887 if self ._composite .crossplane_v1 :
900- del self ._composite .response .desired .composite .connection_details [key ]
901888 return
902889 if self ._resource_name in self ._composite .resources :
903890 del self ._composite .resources [self ._resource_name ].data [key ]
0 commit comments