Add retry upon LB virtual server update conflicts

Change-Id: I7e117fbf2a1160415d6cdb56b6e9ead162bdf83c
This commit is contained in:
Adit Sarfaty 2019-10-03 09:40:28 +03:00
parent ea2f4ea568
commit 8c81f73681
1 changed files with 25 additions and 18 deletions

View File

@ -22,10 +22,10 @@ import six
from vmware_nsxlib._i18n import _ from vmware_nsxlib._i18n import _
from vmware_nsxlib.v3 import exceptions as nsxlib_exc from vmware_nsxlib.v3 import exceptions as nsxlib_exc
from vmware_nsxlib.v3.policy import constants from vmware_nsxlib.v3.policy import constants
from vmware_nsxlib.v3.policy.core_resources import IGNORE from vmware_nsxlib.v3.policy.core_resources import IGNORE
from vmware_nsxlib.v3.policy.core_resources import NsxPolicyResourceBase from vmware_nsxlib.v3.policy.core_resources import NsxPolicyResourceBase
from vmware_nsxlib.v3.policy import lb_defs from vmware_nsxlib.v3.policy import lb_defs
from vmware_nsxlib.v3 import utils
LOG = logging.getLogger(__name__) LOG = logging.getLogger(__name__)
@ -752,23 +752,30 @@ class NsxPolicyLoadBalancerVirtualServerAPI(NsxPolicyResourceBase):
max_concurrent_connections=IGNORE, max_concurrent_connections=IGNORE,
tags=IGNORE, tags=IGNORE,
tenant=constants.POLICY_INFRA_TENANT): tenant=constants.POLICY_INFRA_TENANT):
self._update(
virtual_server_id=virtual_server_id, @utils.retry_upon_exception(
name=name, nsxlib_exc.StaleRevision,
description=description, max_attempts=self.policy_api.client.max_attempts)
tenant=tenant, def _update():
rules=rules, self._update(
application_profile_id=application_profile_id, virtual_server_id=virtual_server_id,
ip_address=ip_address, name=name,
lb_service_id=lb_service_id, description=description,
client_ssl_profile_binding=client_ssl_profile_binding, tenant=tenant,
pool_id=pool_id, rules=rules,
lb_persistence_profile_id=lb_persistence_profile_id, application_profile_id=application_profile_id,
ports=ports, ip_address=ip_address,
server_ssl_profile_binding=server_ssl_profile_binding, lb_service_id=lb_service_id,
waf_profile_binding=waf_profile_binding, client_ssl_profile_binding=client_ssl_profile_binding,
max_concurrent_connections=max_concurrent_connections, pool_id=pool_id,
tags=tags) lb_persistence_profile_id=lb_persistence_profile_id,
ports=ports,
server_ssl_profile_binding=server_ssl_profile_binding,
waf_profile_binding=waf_profile_binding,
max_concurrent_connections=max_concurrent_connections,
tags=tags)
_update()
def update_virtual_server_with_pool( def update_virtual_server_with_pool(
self, virtual_server_id, pool_id=IGNORE, self, virtual_server_id, pool_id=IGNORE,