Skip to content

Commit cd21628

Browse files
Merge pull request #1004 from zhaoqin-github/perf2-pike-bug
Include performance approach 2 patch into stable/pike branch
2 parents 22ec429 + 4dab632 commit cd21628

2 files changed

Lines changed: 78 additions & 4 deletions

File tree

f5lbaasdriver/v2/bigip/driver_v2.py

Lines changed: 75 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,9 @@ def __init__(self, driver):
152152
self.driver = driver
153153
self.api_dict = None
154154

155+
def _log_entity(self, entity):
156+
LOG.debug("Log the entity: %s", entity.to_api_dict())
157+
155158
def _call_rpc(self, context, loadbalancer, entity, rpc_method, **kwargs):
156159
'''Perform operations common to create and delete for managers.'''
157160

@@ -201,10 +204,10 @@ def _schedule_agent_create_service(self, context, loadbalancer,
201204
context, loadbalancer, agent, **kwargs)
202205
return agent, service
203206

207+
@log_helpers.log_method_call
204208
def _append_listeners(self, context, service, listener):
205209

206210
if not listener:
207-
service['listeners'] = []
208211
return
209212

210213
def get_db_listener():
@@ -226,8 +229,11 @@ def get_db_listener():
226229
[{'id': l7_policy.id} for l7_policy in listener.l7_policies]
227230
if listener.default_pool:
228231
listener_dict['default_pool_id'] = listener.default_pool.id
229-
service['listeners'] = [listener_dict]
230232

233+
LOG.debug("append listener %s", listener_dict)
234+
service['listeners'].append(listener_dict)
235+
236+
@log_helpers.log_method_call
231237
def _append_pools_monitors(self, context, service, pool):
232238

233239
if not pool:
@@ -262,6 +268,7 @@ def get_db_pool():
262268
pool.session_persistence.to_api_dict()
263269
)
264270

271+
LOG.debug("append pool %s", pool_dict)
265272
service['pools'] = [pool_dict]
266273

267274
# Place an empty member list as the initial value.
@@ -284,6 +291,7 @@ def get_db_healthmonitor():
284291
healthmonitor_dict = healthmonitor.to_dict(pool=False)
285292
healthmonitor_dict['pool_id'] = pool.id
286293

294+
LOG.debug("append healthmonitor_dict %s", healthmonitor_dict)
287295
service['healthmonitors'] = [healthmonitor_dict]
288296

289297

@@ -293,6 +301,9 @@ class LoadBalancerManager(EntityManager):
293301
@log_helpers.log_method_call
294302
def create(self, context, loadbalancer):
295303
"""Create a loadbalancer."""
304+
305+
self._log_entity(loadbalancer)
306+
296307
driver = self.driver
297308
try:
298309
agent, service = self._schedule_agent_create_service(
@@ -351,6 +362,10 @@ def create(self, context, loadbalancer):
351362
@log_helpers.log_method_call
352363
def update(self, context, old_loadbalancer, loadbalancer):
353364
"""Update a loadbalancer."""
365+
366+
self._log_entity(old_loadbalancer)
367+
self._log_entity(loadbalancer)
368+
354369
driver = self.driver
355370
try:
356371
agent, service = self._schedule_agent_create_service(
@@ -378,6 +393,9 @@ def update(self, context, old_loadbalancer, loadbalancer):
378393
@log_helpers.log_method_call
379394
def delete(self, context, loadbalancer):
380395
"""Delete a loadbalancer."""
396+
397+
self._log_entity(loadbalancer)
398+
381399
driver = self.driver
382400
try:
383401
agent, service = self._schedule_agent_create_service(
@@ -438,6 +456,8 @@ class ListenerManager(EntityManager):
438456
def create(self, context, listener):
439457
"""Create a listener."""
440458

459+
self._log_entity(listener)
460+
441461
lb = listener.loadbalancer
442462
self.api_dict = listener.to_dict(
443463
loadbalancer=False, default_pool=False)
@@ -461,6 +481,9 @@ def append_listeners(context, loadbalancer, service):
461481
def update(self, context, old_listener, listener):
462482
"""Update a listener."""
463483

484+
self._log_entity(old_listener)
485+
self._log_entity(listener)
486+
464487
driver = self.driver
465488
lb = listener.loadbalancer
466489
try:
@@ -481,6 +504,8 @@ def update(self, context, old_listener, listener):
481504
def delete(self, context, listener):
482505
"""Delete a listener."""
483506

507+
self._log_entity(listener)
508+
484509
lb = listener.loadbalancer
485510
self.api_dict = listener.to_dict(
486511
loadbalancer=False, default_pool=False)
@@ -522,11 +547,18 @@ def _get_pool_dict(self, pool):
522547
def create(self, context, pool):
523548
"""Create a pool."""
524549

550+
self._log_entity(pool)
551+
525552
lb = pool.loadbalancer
526553
self.api_dict = self._get_pool_dict(pool)
527554

528555
def append_listeners(context, loadbalancer, service):
529-
self._append_listeners(context, service, pool.listener)
556+
for listener in loadbalancer.listeners:
557+
if listener.default_pool:
558+
if listener.default_pool.id == pool.id:
559+
LOG.debug("listener %s has default pool %s",
560+
listener.id, pool.id)
561+
self._append_listeners(context, service, listener)
530562

531563
def append_pools_monitors(context, loadbalancer, service):
532564
self._append_pools_monitors(context, service, pool)
@@ -549,6 +581,9 @@ def append_pools_monitors(context, loadbalancer, service):
549581
def update(self, context, old_pool, pool):
550582
"""Update a pool."""
551583

584+
self._log_entity(old_pool)
585+
self._log_entity(pool)
586+
552587
driver = self.driver
553588
lb = pool.loadbalancer
554589
try:
@@ -568,11 +603,18 @@ def update(self, context, old_pool, pool):
568603
def delete(self, context, pool):
569604
"""Delete a pool."""
570605

606+
self._log_entity(pool)
607+
571608
lb = pool.loadbalancer
572609
self.api_dict = self._get_pool_dict(pool)
573610

574611
def append_listeners(context, loadbalancer, service):
575-
self._append_listeners(context, service, pool.listener)
612+
for listener in loadbalancer.listeners:
613+
if listener.default_pool:
614+
if listener.default_pool.id == pool.id:
615+
LOG.debug("listener %s has default pool %s",
616+
listener.id, pool.id)
617+
self._append_listeners(context, service, listener)
576618

577619
def append_pools_monitors(context, loadbalancer, service):
578620
self._append_pools_monitors(context, service, pool)
@@ -596,6 +638,8 @@ class MemberManager(EntityManager):
596638
def create(self, context, member):
597639
"""Create a member."""
598640

641+
self._log_entity(member)
642+
599643
lb = member.pool.loadbalancer
600644

601645
if self.driver.unlegacy_setting_placeholder_driver_side:
@@ -704,6 +748,9 @@ def create_bulk(self, context, members):
704748
def update(self, context, old_member, member):
705749
"""Update a member."""
706750

751+
self._log_entity(old_member)
752+
self._log_entity(member)
753+
707754
driver = self.driver
708755
lb = member.pool.loadbalancer
709756
try:
@@ -722,6 +769,9 @@ def update(self, context, old_member, member):
722769
@log_helpers.log_method_call
723770
def delete(self, context, member):
724771
"""Delete a member."""
772+
773+
self._log_entity(member)
774+
725775
lb = member.pool.loadbalancer
726776
driver = self.driver
727777
try:
@@ -779,6 +829,8 @@ class HealthMonitorManager(EntityManager):
779829
def create(self, context, health_monitor):
780830
"""Create a health monitor."""
781831

832+
self._log_entity(health_monitor)
833+
782834
lb = health_monitor.pool.loadbalancer
783835
self.api_dict = health_monitor.to_dict(pool=False)
784836

@@ -801,6 +853,9 @@ def append_pools_monitors(context, loadbalancer, service):
801853
def update(self, context, old_health_monitor, health_monitor):
802854
"""Update a health monitor."""
803855

856+
self._log_entity(old_health_monitor)
857+
self._log_entity(health_monitor)
858+
804859
driver = self.driver
805860
lb = health_monitor.pool.loadbalancer
806861
try:
@@ -820,6 +875,8 @@ def update(self, context, old_health_monitor, health_monitor):
820875
def delete(self, context, health_monitor):
821876
"""Delete a health monitor."""
822877

878+
self._log_entity(health_monitor)
879+
823880
lb = health_monitor.pool.loadbalancer
824881
self.api_dict = health_monitor.to_dict(pool=False)
825882

@@ -846,6 +903,8 @@ class L7PolicyManager(EntityManager):
846903
def create(self, context, policy):
847904
"""Create an L7 policy."""
848905

906+
self._log_entity(policy)
907+
849908
lb = policy.listener.loadbalancer
850909
self.api_dict = policy.to_dict(listener=False, rules=False)
851910

@@ -872,6 +931,9 @@ def append_pools_monitors(context, loadbalancer, service):
872931
def update(self, context, old_policy, policy):
873932
"""Update a policy."""
874933

934+
self._log_entity(old_policy)
935+
self._log_entity(policy)
936+
875937
driver = self.driver
876938
lb = policy.listener.loadbalancer
877939
try:
@@ -891,6 +953,8 @@ def update(self, context, old_policy, policy):
891953
def delete(self, context, policy):
892954
"""Delete a policy."""
893955

956+
self._log_entity(policy)
957+
894958
lb = policy.listener.loadbalancer
895959
self.api_dict = policy.to_dict(listener=False, rules=False)
896960

@@ -921,6 +985,8 @@ class L7RuleManager(EntityManager):
921985
def create(self, context, rule):
922986
"""Create an L7 rule."""
923987

988+
self._log_entity(rule)
989+
924990
lb = rule.policy.listener.loadbalancer
925991
self.api_dict = rule.to_dict(policy=False)
926992

@@ -947,6 +1013,9 @@ def append_pools_monitors(context, loadbalancer, service):
9471013
def update(self, context, old_rule, rule):
9481014
"""Update a rule."""
9491015

1016+
self._log_entity(old_rule)
1017+
self._log_entity(rule)
1018+
9501019
driver = self.driver
9511020
lb = rule.policy.listener.loadbalancer
9521021
try:
@@ -966,6 +1035,8 @@ def update(self, context, old_rule, rule):
9661035
def delete(self, context, rule):
9671036
"""Delete a rule."""
9681037

1038+
self._log_entity(rule)
1039+
9691040
lb = rule.policy.listener.loadbalancer
9701041
self.api_dict = rule.to_dict(policy=False)
9711042

f5lbaasdriver/v2/bigip/test/test_driver_v2.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ def attached_to_loadbalancer(self):
4646
def to_dict(self, **kwargs):
4747
return self.__dict__
4848

49+
def to_api_dict(self):
50+
return self.to_dict()
51+
4952

5053
class FakeListener(FakeBaseObj):
5154
def __init__(self, id='test_obj_id', attached_to_lb=True):

0 commit comments

Comments
 (0)