diff --git a/libra/api/controllers/health_monitor.py b/libra/api/controllers/health_monitor.py index 0ba693f6..0cda7585 100644 --- a/libra/api/controllers/health_monitor.py +++ b/libra/api/controllers/health_monitor.py @@ -76,11 +76,14 @@ class HealthMonitorController(RestController): if monitor.path: monitor_data['path'] = monitor.path - counter = session.query(Counters).\ - filter(Counters.name == 'api_healthmonitor_get').first() - counter.value += 1 + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_healthmonitor_get').first() + counter.value += 1 - session.commit() + session.commit() + except: + pass return monitor_data @wsme_pecan.wsexpose(LBMonitorResp, body=LBMonitorPut, status_code=202) @@ -244,10 +247,13 @@ class HealthMonitorController(RestController): if ((data["path"] is not None) and (len(data["path"]) > 0)): return_data.path = data["path"] - counter = session.query(Counters).\ - filter(Counters.name == 'api_healthmonitor_modify').first() - counter.value += 1 - session.commit() + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_healthmonitor_modify').first() + counter.value += 1 + session.commit() + except: + pass submit_job( 'UPDATE', device.name, device.id, lb.id ) @@ -296,10 +302,13 @@ class HealthMonitorController(RestController): ).join(LoadBalancer.devices).\ filter(LoadBalancer.id == self.lbid).\ first() - counter = session.query(Counters).\ - filter(Counters.name == 'api_healthmonitor.delete').first() - counter.value += 1 - session.commit() + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_healthmonitor.delete').first() + counter.value += 1 + session.commit() + except: + pass submit_job( 'UPDATE', device.name, device.id, self.lbid ) diff --git a/libra/api/controllers/limits.py b/libra/api/controllers/limits.py index f4fa6943..bc1c6f08 100644 --- a/libra/api/controllers/limits.py +++ b/libra/api/controllers/limits.py @@ -40,8 +40,11 @@ class LimitsController(RestController): resp['maxLoadBalancers'] = tenant_lblimit resp = {"limits": {"absolute": {"values": resp}}} - counter = session.query(Counters).\ - filter(Counters.name == 'api_limits_get').first() - counter.value += 1 - session.commit() + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_limits_get').first() + counter.value += 1 + session.commit() + except: + pass return resp diff --git a/libra/api/controllers/load_balancers.py b/libra/api/controllers/load_balancers.py index b128f03a..8d1917da 100644 --- a/libra/api/controllers/load_balancers.py +++ b/libra/api/controllers/load_balancers.py @@ -206,10 +206,13 @@ class LoadBalancersController(RestController): del(load_balancers['timeout']) del(load_balancers['retries']) - counter = session.query(Counters).\ - filter(Counters.name == 'api_loadbalancers_get').first() - counter.value += 1 - session.commit() + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_loadbalancers_get').first() + counter.value += 1 + session.commit() + except: + pass response.status = 200 return load_balancers @@ -610,10 +613,13 @@ class LoadBalancersController(RestController): return_data.options = LBOptions(timeout=timeout_ms, retries=retries) - counter = session.query(Counters).\ - filter(Counters.name == 'api_loadbalancers_create').first() - counter.value += 1 - session.commit() + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_loadbalancers_create').first() + counter.value += 1 + session.commit() + except: + pass # trigger gearman client to create new lb submit_job( 'UPDATE', device.name, device.id, lb.id @@ -693,14 +699,19 @@ class LoadBalancersController(RestController): ).join(LoadBalancer.devices).\ filter(LoadBalancer.id == self.lbid).\ first() - counter = session.query(Counters).\ - filter(Counters.name == 'api_loadbalancers_modify').first() - counter.value += 1 session.commit() submit_job( 'UPDATE', device.name, device.id, lb.id ) - return '' + with db_session() as session: + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_loadbalancers_modify').first() + counter.value += 1 + session.commit() + except: + pass + return '' @wsme_pecan.wsexpose(None, status_code=202) def delete(self): @@ -743,10 +754,6 @@ class LoadBalancersController(RestController): ).join(LoadBalancer.devices).\ filter(LoadBalancer.id == load_balancer_id).\ first() - counter = session.query(Counters).\ - filter(Counters.name == 'api_loadbalancers_delete').first() - counter.value += 1 - if device is None: # This can happen if a device was manually deleted from the DB lb.status = 'DELETED' @@ -764,7 +771,16 @@ class LoadBalancersController(RestController): 'DELETE', device.name, device.id, lb.id ) - return None + with db_session() as session: + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_loadbalancers_delete').first() + counter.value += 1 + session.commit() + except: + pass + + return None def usage(self, load_balancer_id): """List current and historical usage. diff --git a/libra/api/controllers/logs.py b/libra/api/controllers/logs.py index b4349f26..8bf11c5e 100644 --- a/libra/api/controllers/logs.py +++ b/libra/api/controllers/logs.py @@ -59,9 +59,6 @@ class LogsController(RestController): ).join(LoadBalancer.devices).\ filter(LoadBalancer.id == self.lbid).\ first() - counter = session.query(Counters).\ - filter(Counters.name == 'api_log_archive').first() - counter.value += 1 session.commit() data = { 'deviceid': device.id @@ -90,4 +87,13 @@ class LogsController(RestController): submit_job( 'ARCHIVE', device.name, data, self.lbid ) - return + with db_session() as session: + try: + load_balancer = session.query(LoadBalancer).\ + counter = session.query(Counters).\ + filter(Counters.name == 'api_log_archive').first() + counter.value += 1 + session.commit() + except: + pass + return diff --git a/libra/api/controllers/nodes.py b/libra/api/controllers/nodes.py index 81047390..9ca1bea1 100644 --- a/libra/api/controllers/nodes.py +++ b/libra/api/controllers/nodes.py @@ -100,10 +100,13 @@ class NodesController(RestController): del node_response['enabled'] if node_response['weight'] == 1: del node_response['weight'] - counter = session.query(Counters).\ - filter(Counters.name == 'api_node_get').first() - counter.value += 1 - session.commit() + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_node_get').first() + counter.value += 1 + session.commit() + except: + pass response.status = 200 return node_response @@ -258,10 +261,13 @@ class NodesController(RestController): ).join(LoadBalancer.devices).\ filter(LoadBalancer.id == self.lbid).\ first() - counter = session.query(Counters).\ - filter(Counters.name == 'api_node_create').first() - counter.value += 1 - session.commit() + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_node_create').first() + counter.value += 1 + session.commit() + except: + pass submit_job( 'UPDATE', device.name, device.id, self.lbid ) @@ -340,10 +346,13 @@ class NodesController(RestController): ).join(LoadBalancer.devices).\ filter(LoadBalancer.id == self.lbid).\ first() - counter = session.query(Counters).\ - filter(Counters.name == 'api_node_modify').first() - counter.value += 1 - session.commit() + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_node_modify').first() + counter.value += 1 + session.commit() + except: + pass submit_job( 'UPDATE', device.name, device.id, lb.id ) @@ -419,10 +428,13 @@ class NodesController(RestController): ).join(LoadBalancer.devices).\ filter(LoadBalancer.id == self.lbid).\ first() - counter = session.query(Counters).\ - filter(Counters.name == 'api_node_delete').first() - counter.value += 1 - session.commit() + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_node_delete').first() + counter.value += 1 + session.commit() + except: + pass submit_job( 'UPDATE', device.name, device.id, self.lbid ) diff --git a/libra/api/controllers/virtualips.py b/libra/api/controllers/virtualips.py index b98e07bc..04b49823 100644 --- a/libra/api/controllers/virtualips.py +++ b/libra/api/controllers/virtualips.py @@ -66,8 +66,11 @@ class VipsController(RestController): "ipVersion": "IPV4" }] } - counter = session.query(Counters).\ - filter(Counters.name == 'api_vips_get').first() - counter.value += 1 - session.rollback() + try: + counter = session.query(Counters).\ + filter(Counters.name == 'api_vips_get').first() + counter.value += 1 + session.commit() + except: + pass return resp