@@ -93,63 +93,51 @@ def __init__(
9393 ]
9494 data ["private_net" ] = private_nets
9595
96- targets = data .get ("targets" )
97- if targets :
98- tmp_targets = []
99- for target in targets :
100- tmp_target = LoadBalancerTarget (type = target ["type" ])
101- if target ["type" ] == "server" :
102- tmp_target .server = BoundServer (
103- client ._parent .servers , data = target ["server" ], complete = False
104- )
105- tmp_target .use_private_ip = target ["use_private_ip" ]
106- elif target ["type" ] == "label_selector" :
107- tmp_target .label_selector = LoadBalancerTargetLabelSelector (
108- selector = target ["label_selector" ]["selector" ]
96+ def _load_balancer_targets (
97+ raw_targets : list [dict [str , Any ]],
98+ ) -> list [LoadBalancerTarget ]:
99+ return [_load_balancer_target (raw_target ) for raw_target in raw_targets ]
100+
101+ def _load_balancer_target (
102+ raw_target : dict [str , Any ],
103+ ) -> LoadBalancerTarget :
104+ result = LoadBalancerTarget (type = raw_target ["type" ])
105+
106+ if raw_target ["type" ] == "ip" :
107+ result .ip = LoadBalancerTargetIP (
108+ ip = raw_target ["ip" ]["ip" ],
109+ )
110+
111+ elif raw_target ["type" ] == "server" :
112+ result .server = BoundServer (
113+ client ._parent .servers , # pylint: disable=protected-access
114+ data = raw_target ["server" ],
115+ complete = False ,
116+ )
117+ result .use_private_ip = raw_target ["use_private_ip" ]
118+
119+ elif raw_target ["type" ] == "label_selector" :
120+ result .label_selector = LoadBalancerTargetLabelSelector (
121+ selector = raw_target ["label_selector" ]["selector" ]
122+ )
123+ result .use_private_ip = raw_target ["use_private_ip" ]
124+
125+ if (raw_nested_targets := raw_target .get ("targets" )) is not None :
126+ result .targets = _load_balancer_targets (raw_nested_targets )
127+
128+ if (raw_health_status := raw_target .get ("health_status" )) is not None :
129+ result .health_status = [
130+ LoadBalancerTargetHealthStatus (
131+ listen_port = item ["listen_port" ],
132+ status = item ["status" ],
109133 )
110- tmp_target .use_private_ip = target ["use_private_ip" ]
111- nested_targets = target .get ("targets" , [])
112- if nested_targets :
113- tmp_nested = []
114- for nested in nested_targets :
115- nested_target = LoadBalancerTarget (type = nested ["type" ])
116- if nested ["type" ] == "server" :
117- nested_target .server = BoundServer (
118- client ._parent .servers ,
119- data = nested ["server" ],
120- complete = False ,
121- )
122- elif nested ["type" ] == "ip" :
123- nested_target .ip = LoadBalancerTargetIP (
124- ip = nested ["ip" ]["ip" ]
125- )
126- nested_target .use_private_ip = nested .get ("use_private_ip" )
127- nested_health_status = nested .get ("health_status" )
128- if nested_health_status is not None :
129- nested_target .health_status = [
130- LoadBalancerTargetHealthStatus (
131- listen_port = hs ["listen_port" ],
132- status = hs ["status" ],
133- )
134- for hs in nested_health_status
135- ]
136- tmp_nested .append (nested_target )
137- tmp_target .targets = tmp_nested
138- elif target ["type" ] == "ip" :
139- tmp_target .ip = LoadBalancerTargetIP (ip = target ["ip" ]["ip" ])
140-
141- target_health_status = target .get ("health_status" )
142- if target_health_status is not None :
143- tmp_target .health_status = [
144- LoadBalancerTargetHealthStatus (
145- listen_port = target_health_status_item ["listen_port" ],
146- status = target_health_status_item ["status" ],
147- )
148- for target_health_status_item in target_health_status
149- ]
134+ for item in raw_health_status
135+ ]
136+
137+ return result
150138
151- tmp_targets . append ( tmp_target )
152- data ["targets" ] = tmp_targets
139+ if ( raw_targets := data . get ( "targets" )) is not None :
140+ data ["targets" ] = _load_balancer_targets ( raw_targets )
153141
154142 services = data .get ("services" )
155143 if services :
0 commit comments