
Starting from NSX version 2.5.1, LBService will have a new property 'relax_scale_validation'. If this flag is set to true, scale validation for vs, pool, pool member and rule will be relaxed for lbs Checks are added to prevent including this flag in API calls on older versions of NSX backend. feature_supported for this new flag is added in NsxLib for MP. For Policy, ResourceDef and LBServiceDef are responsible for the checks. For MP, checks are added in _build_args() in load_balancer.py > Service class so that the new flag is only passed when NSX meets the version requirement. For Policy, ResourceDef now has a new attribute nsx_version and two new methods: _set_attr_if_supported() and _attr_supported(). get_obj_dict() will use them to check if a certain attr meets version requirement, and only include it in body if true. Change-Id: I4f9c3bfd7995bca85a51a6971fc9d784e574301a
1244 lines
48 KiB
Python
1244 lines
48 KiB
Python
# Copyright 2018 VMware, Inc.
|
|
# All Rights Reserved
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
#
|
|
|
|
import abc
|
|
|
|
from oslo_log import log as logging
|
|
import six
|
|
|
|
from vmware_nsxlib._i18n import _
|
|
from vmware_nsxlib.v3 import exceptions as nsxlib_exc
|
|
from vmware_nsxlib.v3.policy import constants
|
|
|
|
from vmware_nsxlib.v3.policy.core_resources import IGNORE
|
|
from vmware_nsxlib.v3.policy.core_resources import NsxPolicyResourceBase
|
|
from vmware_nsxlib.v3.policy import lb_defs
|
|
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
# Sentitel object to indicate unspecified attribute value
|
|
# None value in attribute would indicate "unset" functionality,
|
|
# while "ignore" means that the value not be present in request
|
|
# body
|
|
|
|
|
|
class NsxPolicyLBAppProfileBase(NsxPolicyResourceBase):
|
|
"""NSX Policy LB app profile"""
|
|
|
|
def create_or_overwrite(self, name,
|
|
lb_app_profile_id=None,
|
|
description=IGNORE,
|
|
http_redirect_to_https=IGNORE,
|
|
http_redirect_to=IGNORE,
|
|
idle_timeout=IGNORE,
|
|
ntlm=IGNORE,
|
|
request_body_size=IGNORE,
|
|
request_header_size=IGNORE,
|
|
response_header_size=IGNORE,
|
|
response_timeout=IGNORE,
|
|
x_forwarded_for=IGNORE,
|
|
tags=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_app_profile_id = self._init_obj_uuid(lb_app_profile_id)
|
|
lb_app_profile_def = self._init_def(
|
|
lb_app_profile_id=lb_app_profile_id,
|
|
name=name,
|
|
description=description,
|
|
http_redirect_to_https=http_redirect_to_https,
|
|
http_redirect_to=http_redirect_to,
|
|
idle_timeout=idle_timeout,
|
|
ntlm=ntlm,
|
|
request_body_size=request_body_size,
|
|
request_header_size=request_header_size,
|
|
response_header_size=response_header_size,
|
|
response_timeout=response_timeout,
|
|
x_forwarded_for=x_forwarded_for,
|
|
tags=tags,
|
|
tenant=tenant)
|
|
self._create_or_store(lb_app_profile_def)
|
|
return lb_app_profile_id
|
|
|
|
def delete(self, lb_app_profile_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_app_profile_def = self.entry_def(
|
|
lb_app_profile_id=lb_app_profile_id,
|
|
tenant=tenant)
|
|
self.policy_api.delete(lb_app_profile_def)
|
|
|
|
def get(self, lb_app_profile_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_app_profile_def = self.entry_def(
|
|
lb_app_profile_id=lb_app_profile_id,
|
|
tenant=tenant)
|
|
return self.policy_api.get(lb_app_profile_def)
|
|
|
|
def list(self, tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_app_profile_def = self.entry_def(tenant=tenant)
|
|
return self._list(lb_app_profile_def)
|
|
|
|
def update(self, lb_app_profile_id,
|
|
name=IGNORE,
|
|
description=IGNORE,
|
|
http_redirect_to_https=IGNORE,
|
|
http_redirect_to=IGNORE,
|
|
idle_timeout=IGNORE,
|
|
ntlm=IGNORE,
|
|
request_body_size=IGNORE,
|
|
request_header_size=IGNORE,
|
|
response_header_size=IGNORE,
|
|
response_timeout=IGNORE,
|
|
x_forwarded_for=IGNORE,
|
|
tags=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
self._update(
|
|
lb_app_profile_id=lb_app_profile_id,
|
|
name=name,
|
|
description=description,
|
|
http_redirect_to_https=http_redirect_to_https,
|
|
http_redirect_to=http_redirect_to,
|
|
idle_timeout=idle_timeout,
|
|
ntlm=ntlm,
|
|
request_body_size=request_body_size,
|
|
request_header_size=request_header_size,
|
|
response_header_size=response_header_size,
|
|
response_timeout=response_timeout,
|
|
x_forwarded_for=x_forwarded_for,
|
|
tags=tags,
|
|
tenant=tenant)
|
|
|
|
def get_path(self, lb_app_profile_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
profile_def = self.entry_def(
|
|
lb_app_profile_id=lb_app_profile_id,
|
|
tenant=tenant)
|
|
return profile_def.get_resource_full_path()
|
|
|
|
|
|
class NsxPolicyLBAppProfileHttpApi(NsxPolicyLBAppProfileBase):
|
|
"""NSX Policy LB app profile"""
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBHttpProfileDef
|
|
|
|
|
|
class NsxPolicyLBAppProfileFastTcpApi(
|
|
NsxPolicyLBAppProfileBase):
|
|
"""NSX Policy LB app profile"""
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBFastTcpProfile
|
|
|
|
|
|
class NsxPolicyLBAppProfileFastUdpApi(
|
|
NsxPolicyLBAppProfileBase):
|
|
"""NSX Policy LB app profile"""
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBFastUdpProfile
|
|
|
|
|
|
class NsxPolicyLoadBalancerClientSSLProfileApi(NsxPolicyResourceBase):
|
|
"""NSX Policy LB client ssl profile"""
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBClientSslProfileDef
|
|
|
|
def create_or_overwrite(self, name,
|
|
client_ssl_profile_id=None,
|
|
description=IGNORE,
|
|
tags=IGNORE,
|
|
protocols=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
client_ssl_profile_id = self._init_obj_uuid(
|
|
client_ssl_profile_id)
|
|
lb_client_ssl_profile_def = self._init_def(
|
|
client_ssl_profile_id=client_ssl_profile_id,
|
|
name=name,
|
|
description=description,
|
|
tags=tags,
|
|
protocols=protocols,
|
|
tenant=tenant)
|
|
self._create_or_store(lb_client_ssl_profile_def)
|
|
return client_ssl_profile_id
|
|
|
|
def delete(self, client_ssl_profile_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_client_ssl_profile_def = self.entry_def(
|
|
client_ssl_profile_id=client_ssl_profile_id,
|
|
tenant=tenant)
|
|
self.policy_api.delete(lb_client_ssl_profile_def)
|
|
|
|
def get(self, client_ssl_profile_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_client_ssl_profile_def = self.entry_def(
|
|
client_ssl_profile_id=client_ssl_profile_id,
|
|
tenant=tenant)
|
|
return self.policy_api.get(lb_client_ssl_profile_def)
|
|
|
|
def list(self, tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_client_ssl_profile_def = self.entry_def(tenant=tenant)
|
|
return self._list(lb_client_ssl_profile_def)
|
|
|
|
def update(self, client_ssl_profile_id,
|
|
name=IGNORE,
|
|
description=IGNORE,
|
|
tags=IGNORE,
|
|
protocols=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
self._update(
|
|
client_ssl_profile_id=client_ssl_profile_id,
|
|
name=name,
|
|
description=description,
|
|
tags=tags,
|
|
protocols=protocols,
|
|
tenant=tenant)
|
|
|
|
def get_path(self, profile_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
profile_def = self.entry_def(
|
|
client_ssl_profile_id=profile_id,
|
|
tenant=tenant)
|
|
return profile_def.get_resource_full_path()
|
|
|
|
|
|
class NsxPolicyLoadBalancerPersistenceProfileApi(
|
|
NsxPolicyResourceBase):
|
|
"""LB generic api for all types of session persistence profiles"""
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBPersistenceProfileBase
|
|
|
|
def create_or_overwrite(self, name,
|
|
persistence_profile_id=None,
|
|
description=IGNORE,
|
|
tags=IGNORE,
|
|
ha_persistence_mirroring_enabled=IGNORE,
|
|
persistence_shared=IGNORE,
|
|
purge=IGNORE,
|
|
timeout=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
raise nsxlib_exc.NotImplemented(
|
|
"Creating generic persistence profile")
|
|
|
|
def delete(self, persistence_profile_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
persistence_profile_def = self.entry_def(
|
|
persistence_profile_id=persistence_profile_id,
|
|
tenant=tenant)
|
|
self.policy_api.delete(persistence_profile_def)
|
|
|
|
def get(self, persistence_profile_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
persistence_profile_def = self.entry_def(
|
|
persistence_profile_id=persistence_profile_id,
|
|
tenant=tenant)
|
|
return self.policy_api.get(persistence_profile_def)
|
|
|
|
def list(self, tenant=constants.POLICY_INFRA_TENANT):
|
|
persistence_profile_def = self.entry_def(tenant=tenant)
|
|
return self._list(persistence_profile_def)
|
|
|
|
def update(self, persistence_profile_id,
|
|
name=IGNORE,
|
|
description=IGNORE,
|
|
tags=IGNORE,
|
|
ha_persistence_mirroring_enabled=IGNORE,
|
|
persistence_shared=IGNORE,
|
|
purge=IGNORE,
|
|
timeout=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
raise nsxlib_exc.NotImplemented(
|
|
"Updating generic persistence profile")
|
|
|
|
def get_path(self, profile_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
profile_def = self.entry_def(
|
|
persistence_profile_id=profile_id,
|
|
tenant=tenant)
|
|
return profile_def.get_resource_full_path()
|
|
|
|
def wait_until_realized(self, pers_id,
|
|
entity_type='LbPersistenceProfileDto',
|
|
tenant=constants.POLICY_INFRA_TENANT,
|
|
sleep=None, max_attempts=None):
|
|
pers_def = self.entry_def(
|
|
persistence_profile_id=pers_id, tenant=tenant)
|
|
return self._wait_until_realized(
|
|
pers_def, entity_type=entity_type,
|
|
sleep=sleep, max_attempts=max_attempts)
|
|
|
|
|
|
class NsxPolicyLoadBalancerCookiePersistenceProfileApi(
|
|
NsxPolicyLoadBalancerPersistenceProfileApi):
|
|
"""NSX Policy LB cookie persistence profile"""
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBCookiePersistenceProfileDef
|
|
|
|
def create_or_overwrite(self, name,
|
|
persistence_profile_id=None,
|
|
description=IGNORE,
|
|
tags=IGNORE,
|
|
cookie_garble=IGNORE,
|
|
cookie_name=IGNORE,
|
|
cookie_mode=IGNORE,
|
|
cookie_path=IGNORE,
|
|
cookie_time=IGNORE,
|
|
persistence_shared=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
persistence_profile_id = self._init_obj_uuid(
|
|
persistence_profile_id)
|
|
lb_cookie_persistence_profile_def = self._init_def(
|
|
persistence_profile_id=persistence_profile_id,
|
|
name=name,
|
|
description=description,
|
|
tags=tags,
|
|
cookie_name=cookie_name,
|
|
cookie_garble=cookie_garble,
|
|
cookie_mode=cookie_mode,
|
|
cookie_path=cookie_path,
|
|
cookie_time=cookie_time,
|
|
persistence_shared=persistence_shared,
|
|
tenant=tenant)
|
|
self._create_or_store(lb_cookie_persistence_profile_def)
|
|
return persistence_profile_id
|
|
|
|
def list(self, tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_cookie_persistence_profile_def = self.entry_def(tenant=tenant)
|
|
results = self._list(lb_cookie_persistence_profile_def)
|
|
# filter the results by resource type
|
|
return [res for res in results
|
|
if res.get('resource_type') == self.entry_def.resource_type]
|
|
|
|
def update(self, persistence_profile_id,
|
|
name=IGNORE,
|
|
description=IGNORE,
|
|
tags=IGNORE,
|
|
cookie_garble=IGNORE,
|
|
cookie_name=IGNORE,
|
|
cookie_mode=IGNORE,
|
|
cookie_path=IGNORE,
|
|
cookie_time=IGNORE,
|
|
persistence_shared=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
self._update(
|
|
persistence_profile_id=persistence_profile_id,
|
|
name=name,
|
|
description=description,
|
|
tags=tags,
|
|
cookie_garble=cookie_garble,
|
|
cookie_mode=cookie_mode,
|
|
cookie_name=cookie_name,
|
|
cookie_path=cookie_path,
|
|
cookie_time=cookie_time,
|
|
persistence_shared=persistence_shared,
|
|
tenant=tenant)
|
|
|
|
|
|
class NsxPolicyLoadBalancerSourceIpPersistenceProfileApi(
|
|
NsxPolicyLoadBalancerPersistenceProfileApi):
|
|
"""NSX Policy LB source ip persistence profile"""
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBSourceIpPersistenceProfileDef
|
|
|
|
def create_or_overwrite(self, name,
|
|
persistence_profile_id=None,
|
|
description=IGNORE,
|
|
tags=IGNORE,
|
|
ha_persistence_mirroring_enabled=IGNORE,
|
|
persistence_shared=IGNORE,
|
|
purge=IGNORE,
|
|
timeout=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
persistence_profile_id = self._init_obj_uuid(
|
|
persistence_profile_id)
|
|
lb_source_ip_persistence_profile_def = self._init_def(
|
|
persistence_profile_id=persistence_profile_id,
|
|
name=name,
|
|
description=description,
|
|
tags=tags,
|
|
ha_persistence_mirroring_enabled=ha_persistence_mirroring_enabled,
|
|
persistence_shared=persistence_shared,
|
|
purge=purge,
|
|
timeout=timeout,
|
|
tenant=tenant)
|
|
self._create_or_store(lb_source_ip_persistence_profile_def)
|
|
return persistence_profile_id
|
|
|
|
def list(self, tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_source_ip_persistence_profile_def = self.entry_def(tenant=tenant)
|
|
results = self._list(lb_source_ip_persistence_profile_def)
|
|
# filter the results by resource type
|
|
return [res for res in results
|
|
if res.get('resource_type') == self.entry_def.resource_type]
|
|
|
|
def update(self, persistence_profile_id,
|
|
name=IGNORE,
|
|
description=IGNORE,
|
|
tags=IGNORE,
|
|
ha_persistence_mirroring_enabled=IGNORE,
|
|
persistence_shared=IGNORE,
|
|
purge=IGNORE,
|
|
timeout=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
self._update(
|
|
persistence_profile_id=persistence_profile_id,
|
|
name=name,
|
|
description=description,
|
|
tags=tags,
|
|
ha_persistence_mirroring_enabled=ha_persistence_mirroring_enabled,
|
|
persistence_shared=persistence_shared,
|
|
purge=purge,
|
|
timeout=timeout,
|
|
tenant=tenant)
|
|
|
|
|
|
class NsxPolicyLoadBalancerPoolApi(NsxPolicyResourceBase):
|
|
"""NSX Policy LBService."""
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBPoolDef
|
|
|
|
def create_or_overwrite(self, name, lb_pool_id=None, description=IGNORE,
|
|
tags=IGNORE, members=IGNORE, algorithm=IGNORE,
|
|
active_monitor_paths=IGNORE, member_group=IGNORE,
|
|
snat_translation=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_pool_id = self._init_obj_uuid(lb_pool_id)
|
|
lb_pool_def = self._init_def(
|
|
lb_pool_id=lb_pool_id,
|
|
name=name,
|
|
description=description,
|
|
tags=tags,
|
|
members=members,
|
|
active_monitor_paths=active_monitor_paths,
|
|
algorithm=algorithm,
|
|
member_group=member_group,
|
|
snat_translation=snat_translation,
|
|
tenant=tenant)
|
|
|
|
self._create_or_store(lb_pool_def)
|
|
return lb_pool_id
|
|
|
|
def delete(self, lb_pool_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_pool_def = self.entry_def(
|
|
lb_pool_id=lb_pool_id, tenant=tenant)
|
|
self.policy_api.delete(lb_pool_def)
|
|
|
|
def get(self, lb_pool_id, tenant=constants.POLICY_INFRA_TENANT,
|
|
silent=False):
|
|
lb_pool_def = self.entry_def(
|
|
lb_pool_id=lb_pool_id, tenant=tenant)
|
|
return self.policy_api.get(lb_pool_def)
|
|
|
|
def list(self, tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_pool_def = self.entry_def(tenant=tenant)
|
|
return self.policy_api.list(lb_pool_def)['results']
|
|
|
|
def update(self, lb_pool_id, name=IGNORE, description=IGNORE,
|
|
tags=IGNORE, members=IGNORE, algorithm=IGNORE,
|
|
active_monitor_paths=IGNORE, member_group=IGNORE,
|
|
snat_translation=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
self._update(
|
|
lb_pool_id=lb_pool_id,
|
|
name=name,
|
|
description=description,
|
|
tags=tags,
|
|
members=members,
|
|
active_monitor_paths=active_monitor_paths,
|
|
algorithm=algorithm,
|
|
member_group=member_group,
|
|
snat_translation=snat_translation,
|
|
tenant=tenant)
|
|
|
|
def add_monitor_to_pool(self, lb_pool_id, active_monitor_paths,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_pool_def = self.entry_def(
|
|
lb_pool_id=lb_pool_id, tenant=tenant)
|
|
lb_pool = self.policy_api.get(lb_pool_def)
|
|
monitor_paths = lb_pool.get('active_monitor_paths', [])
|
|
monitor_paths.extend(active_monitor_paths)
|
|
self._update(
|
|
lb_pool_id=lb_pool_id, active_monitor_paths=monitor_paths,
|
|
tenant=tenant)
|
|
|
|
def remove_monitor_from_pool(self, lb_pool_id, monitor_path,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_pool_def = self.entry_def(
|
|
lb_pool_id=lb_pool_id, tenant=tenant)
|
|
lb_pool = self.policy_api.get(lb_pool_def)
|
|
monitor_paths = lb_pool.get('active_monitor_paths', [])
|
|
if monitor_path in monitor_paths:
|
|
monitor_paths.remove(monitor_path)
|
|
self._update(lb_pool_id=lb_pool_id,
|
|
active_monitor_paths=monitor_paths,
|
|
tenant=tenant)
|
|
|
|
def create_pool_member_and_add_to_pool(
|
|
self, lb_pool_id, ip_address, port=None,
|
|
display_name=None, weight=None, admin_state=None,
|
|
backup_member=None,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_pool_member = lb_defs.LBPoolMemberDef(
|
|
ip_address, port=port,
|
|
name=display_name,
|
|
weight=weight, admin_state=admin_state,
|
|
backup_member=backup_member)
|
|
lb_pool_def = lb_defs.LBPoolDef(
|
|
lb_pool_id=lb_pool_id, tenant=tenant)
|
|
lb_pool = self.policy_api.get(lb_pool_def)
|
|
lb_pool_members = lb_pool.get('members', [])
|
|
lb_pool_members.append(lb_pool_member)
|
|
self._update(lb_pool_id=lb_pool_id, members=lb_pool_members,
|
|
tenant=tenant)
|
|
return lb_pool_member
|
|
|
|
def update_pool_member(
|
|
self, lb_pool_id, ip_address, port=None,
|
|
display_name=None, weight=None, admin_state=None,
|
|
backup_member=None,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_pool_def = lb_defs.LBPoolDef(
|
|
lb_pool_id=lb_pool_id, tenant=tenant)
|
|
lb_pool = self.policy_api.get(lb_pool_def)
|
|
lb_pool_members = lb_pool.get('members', [])
|
|
member_to_update = [x for x in lb_pool_members if (
|
|
x.get('ip_address') == ip_address and x.get('port') == str(port))]
|
|
if member_to_update:
|
|
if display_name:
|
|
member_to_update[0]['display_name'] = display_name
|
|
if weight:
|
|
member_to_update[0]['weight'] = weight
|
|
if admin_state:
|
|
member_to_update[0]['admin_state'] = admin_state
|
|
if backup_member:
|
|
member_to_update[0]['backup_member'] = backup_member
|
|
self._update(lb_pool_id=lb_pool_id, members=lb_pool_members,
|
|
tenant=tenant)
|
|
else:
|
|
ops = ('Updating member %(address)s:%(port)d failed, not found in '
|
|
'pool %(pool)s', {'address': ip_address,
|
|
'port': port,
|
|
'pool': lb_pool_id})
|
|
raise nsxlib_exc.ResourceNotFound(manager=lb_pool_def,
|
|
operation=ops)
|
|
|
|
def remove_pool_member(self, lb_pool_id, ip_address, port=None,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_pool_def = lb_defs.LBPoolDef(
|
|
lb_pool_id=lb_pool_id, tenant=tenant)
|
|
lb_pool = self.policy_api.get(lb_pool_def)
|
|
lb_pool_members = lb_pool.get('members', [])
|
|
lb_pool_members = [x for x in lb_pool_members if (
|
|
x.get('ip_address') != ip_address and x.get('port') != str(port))]
|
|
self._update(lb_pool_id=lb_pool_id, members=lb_pool_members,
|
|
tenant=tenant)
|
|
|
|
def get_path(self, lb_pool_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
profile_def = self.entry_def(
|
|
lb_pool_id=lb_pool_id,
|
|
tenant=tenant)
|
|
return profile_def.get_resource_full_path()
|
|
|
|
def wait_until_realized(self, lb_pool_id, entity_type='LbPoolDto',
|
|
tenant=constants.POLICY_INFRA_TENANT,
|
|
sleep=None, max_attempts=None):
|
|
lb_pool_def = self.entry_def(
|
|
lb_pool_id=lb_pool_id, tenant=tenant)
|
|
return self._wait_until_realized(
|
|
lb_pool_def, entity_type=entity_type,
|
|
sleep=sleep, max_attempts=max_attempts)
|
|
|
|
|
|
class NsxPolicyLoadBalancerServiceApi(NsxPolicyResourceBase):
|
|
"""NSX Policy LBService."""
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBServiceDef
|
|
|
|
def create_or_overwrite(self, name, lb_service_id=None,
|
|
description=IGNORE,
|
|
tags=IGNORE,
|
|
size=IGNORE,
|
|
connectivity_path=IGNORE,
|
|
relax_scale_validation=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_service_id = self._init_obj_uuid(lb_service_id)
|
|
lb_service_def = self._init_def(
|
|
lb_service_id=lb_service_id,
|
|
name=name,
|
|
description=description,
|
|
tags=tags,
|
|
size=size,
|
|
connectivity_path=connectivity_path,
|
|
relax_scale_validation=relax_scale_validation,
|
|
tenant=tenant)
|
|
|
|
self._create_or_store(lb_service_def)
|
|
return lb_service_id
|
|
|
|
def delete(self, lb_service_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_service_def = self.entry_def(
|
|
lb_service_id=lb_service_id, tenant=tenant)
|
|
self.policy_api.delete(lb_service_def)
|
|
|
|
def get(self, lb_service_id, tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_service_def = self.entry_def(
|
|
lb_service_id=lb_service_id, tenant=tenant)
|
|
return self.policy_api.get(lb_service_def)
|
|
|
|
def list(self, tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_service_def = lb_defs.LBServiceDef(tenant=tenant)
|
|
return self.policy_api.list(lb_service_def)['results']
|
|
|
|
def update(self, lb_service_id, name=IGNORE,
|
|
description=IGNORE, tags=IGNORE,
|
|
size=IGNORE, connectivity_path=IGNORE,
|
|
relax_scale_validation=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
|
|
self._update(
|
|
lb_service_id=lb_service_id,
|
|
name=name,
|
|
description=description,
|
|
tags=tags,
|
|
size=size,
|
|
connectivity_path=connectivity_path,
|
|
relax_scale_validation=relax_scale_validation,
|
|
tenant=tenant)
|
|
|
|
def get_statistics(self, lb_service_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_service_stats_def = (
|
|
lb_defs.LBServiceStatisticsDef(
|
|
lb_service_id=lb_service_id,
|
|
tenant=tenant))
|
|
return self.policy_api.get(lb_service_stats_def)
|
|
|
|
def get_status(self, lb_service_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_service_status_def = (
|
|
lb_defs.LBServiceStatusDef(
|
|
lb_service_id=lb_service_id,
|
|
tenant=tenant))
|
|
return self.policy_api.get(lb_service_status_def)
|
|
|
|
def get_virtual_server_status(self, lb_service_id, lb_virtual_server_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_vs_status_def = (
|
|
lb_defs.LBVirtualServerStatusDef(
|
|
lb_service_id=lb_service_id,
|
|
lb_virtual_server_id=lb_virtual_server_id,
|
|
tenant=tenant))
|
|
return self.policy_api.get(lb_vs_status_def)
|
|
|
|
def get_usage(self, lb_service_id, realtime=False,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_service_status_def = lb_defs.LBServiceUsageDef(
|
|
lb_service_id=lb_service_id, realtime=realtime, tenant=tenant)
|
|
return self.policy_api.get(lb_service_status_def)
|
|
|
|
def get_path(self, lb_service_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
profile_def = self.entry_def(
|
|
lb_service_id=lb_service_id,
|
|
tenant=tenant)
|
|
return profile_def.get_resource_full_path()
|
|
|
|
def wait_until_realized(self, lb_service_id, entity_type='LbServiceDto',
|
|
tenant=constants.POLICY_INFRA_TENANT,
|
|
sleep=None, max_attempts=None):
|
|
lb_service_def = self.entry_def(
|
|
lb_service_id=lb_service_id, tenant=tenant)
|
|
return self._wait_until_realized(
|
|
lb_service_def, entity_type=entity_type,
|
|
sleep=sleep, max_attempts=max_attempts)
|
|
|
|
|
|
class NsxPolicyLoadBalancerVirtualServerAPI(NsxPolicyResourceBase):
|
|
"""NSX Policy LoadBalancerVirtualServers"""
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBVirtualServerDef
|
|
|
|
def create_or_overwrite(self, name, virtual_server_id=None,
|
|
description=IGNORE,
|
|
rules=IGNORE, application_profile_id=IGNORE,
|
|
ip_address=IGNORE, lb_service_id=IGNORE,
|
|
client_ssl_profile_binding=IGNORE,
|
|
pool_id=IGNORE,
|
|
lb_persistence_profile_id=IGNORE,
|
|
ports=IGNORE,
|
|
server_ssl_profile_binding=IGNORE,
|
|
waf_profile_binding=IGNORE,
|
|
max_concurrent_connections=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT,
|
|
tags=IGNORE):
|
|
virtual_server_id = self._init_obj_uuid(virtual_server_id)
|
|
lbvs_def = self._init_def(
|
|
virtual_server_id=virtual_server_id,
|
|
name=name,
|
|
description=description,
|
|
tenant=tenant,
|
|
rules=rules,
|
|
application_profile_id=application_profile_id,
|
|
ip_address=ip_address,
|
|
lb_service_id=lb_service_id,
|
|
client_ssl_profile_binding=client_ssl_profile_binding,
|
|
pool_id=pool_id,
|
|
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
|
|
)
|
|
self._create_or_store(lbvs_def)
|
|
return virtual_server_id
|
|
|
|
def delete(self, virtual_server_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lbvs_def = self.entry_def(
|
|
virtual_server_id=virtual_server_id, tenant=tenant)
|
|
self.policy_api.delete(lbvs_def)
|
|
|
|
def get(self, virtual_server_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lbvs_def = self.entry_def(
|
|
virtual_server_id=virtual_server_id, tenant=tenant)
|
|
return self.policy_api.get(lbvs_def)
|
|
|
|
def list(self, tenant=constants.POLICY_INFRA_TENANT):
|
|
lbvs_def = self.entry_def(tenant=tenant)
|
|
return self.policy_api.list(lbvs_def)['results']
|
|
|
|
def update(self, virtual_server_id, name=IGNORE, description=IGNORE,
|
|
rules=IGNORE, application_profile_id=IGNORE,
|
|
ip_address=IGNORE, lb_service_id=IGNORE,
|
|
client_ssl_profile_binding=IGNORE,
|
|
pool_id=IGNORE,
|
|
lb_persistence_profile_id=IGNORE,
|
|
ports=IGNORE,
|
|
server_ssl_profile_binding=IGNORE,
|
|
waf_profile_binding=IGNORE,
|
|
max_concurrent_connections=IGNORE,
|
|
tags=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
self._update(
|
|
virtual_server_id=virtual_server_id,
|
|
name=name,
|
|
description=description,
|
|
tenant=tenant,
|
|
rules=rules,
|
|
application_profile_id=application_profile_id,
|
|
ip_address=ip_address,
|
|
lb_service_id=lb_service_id,
|
|
client_ssl_profile_binding=client_ssl_profile_binding,
|
|
pool_id=pool_id,
|
|
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)
|
|
|
|
def update_virtual_server_with_pool(
|
|
self, virtual_server_id, pool_id=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return self.update(
|
|
virtual_server_id, pool_id=pool_id, tenant=tenant)
|
|
|
|
def update_virtual_server_application_profile(
|
|
self, virtual_server_id, application_profile_id=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return self.update(
|
|
virtual_server_id, application_profile_id=application_profile_id,
|
|
tenant=tenant)
|
|
|
|
def update_virtual_server_persistence_profile(
|
|
self, virtual_server_id, lb_persistence_profile_id=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return self.update(
|
|
virtual_server_id,
|
|
lb_persistence_profile_id=lb_persistence_profile_id,
|
|
tenant=tenant)
|
|
|
|
def update_virtual_server_client_ssl_profile_binding(
|
|
self, virtual_server_id, client_ssl_profile_binding=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return self.update(
|
|
virtual_server_id,
|
|
client_ssl_profile_binding=client_ssl_profile_binding,
|
|
tenant=tenant)
|
|
|
|
def update_virtual_server_with_vip(self, virtual_server_id, vip,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return self.update(
|
|
virtual_server_id, ip_address=vip, tenant=tenant)
|
|
|
|
def build_client_ssl_profile_binding(self, default_certificate_path,
|
|
sni_certificate_paths=None,
|
|
ssl_profile_path=None,
|
|
client_auth_ca_paths=None,
|
|
client_auth=None):
|
|
return lb_defs.ClientSSLProfileBindingDef(
|
|
default_certificate_path,
|
|
sni_certificate_paths=sni_certificate_paths,
|
|
ssl_profile_path=ssl_profile_path,
|
|
client_auth_ca_paths=client_auth_ca_paths, client_auth=client_auth)
|
|
|
|
def update_client_ssl_profile_binding(
|
|
self, virtual_server_id, default_certificate_path,
|
|
sni_certificate_paths=None, ssl_profile_path=None,
|
|
client_auth_ca_paths=None, client_auth=None,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
client_ssl_def = lb_defs.ClientSSLProfileBindingDef(
|
|
default_certificate_path,
|
|
sni_certificate_paths=sni_certificate_paths,
|
|
ssl_profile_path=ssl_profile_path,
|
|
client_auth_ca_paths=client_auth_ca_paths, client_auth=client_auth)
|
|
|
|
return self.update(
|
|
virtual_server_id, client_ssl_profile_binding=client_ssl_def,
|
|
tenant=tenant)
|
|
|
|
def build_lb_rule(self, actions=None, display_name=None,
|
|
match_conditions=None, match_strategy=None, phase=None):
|
|
return lb_defs.LBRuleDef(
|
|
actions, match_conditions, display_name, match_strategy, phase)
|
|
|
|
def _add_rule_in_position(self, body, lb_rule, position):
|
|
lb_rules = body.get('rules', [])
|
|
if position < 0 or position > len(lb_rules):
|
|
# Add as the last one
|
|
lb_rules.append(lb_rule)
|
|
elif position <= len(lb_rules):
|
|
lb_rules.insert(position, lb_rule)
|
|
|
|
return lb_rules
|
|
|
|
def add_lb_rule(self, virtual_server_id, actions=None,
|
|
name=None, match_conditions=None,
|
|
match_strategy=None, phase=None, position=-1,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_rule = lb_defs.LBRuleDef(
|
|
actions, match_conditions, name, match_strategy, phase)
|
|
lbvs_def = self.entry_def(
|
|
virtual_server_id=virtual_server_id,
|
|
tenant=tenant)
|
|
body = self.policy_api.get(lbvs_def)
|
|
lb_rules = self._add_rule_in_position(body, lb_rule, position)
|
|
return self._update(virtual_server_id=virtual_server_id,
|
|
vs_data=body,
|
|
rules=lb_rules, tenant=tenant)
|
|
|
|
def update_lb_rule(self, virtual_server_id, lb_rule_name,
|
|
actions=None, match_conditions=None,
|
|
match_strategy=None, phase=None, position=-1,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_rule = lb_defs.LBRuleDef(
|
|
actions, match_conditions, lb_rule_name, match_strategy, phase)
|
|
lbvs_def = self.entry_def(
|
|
virtual_server_id=virtual_server_id,
|
|
tenant=tenant)
|
|
body = self.policy_api.get(lbvs_def)
|
|
lb_rules = body.get('rules', [])
|
|
|
|
# Remove existing rule
|
|
try:
|
|
rule_index = next(lb_rules.index(r) for r in lb_rules
|
|
if r.get('display_name') == lb_rule_name)
|
|
except Exception:
|
|
err_msg = (_("No resource in rules matched for values: "
|
|
"%(values)s") % {'values': lb_rule_name})
|
|
raise nsxlib_exc.ResourceNotFound(
|
|
manager=self,
|
|
operation=err_msg)
|
|
if position < 0:
|
|
position = rule_index
|
|
|
|
del(lb_rules[rule_index])
|
|
|
|
# Insert new rule
|
|
lb_rules = self._add_rule_in_position(body, lb_rule, position)
|
|
return self._update(
|
|
virtual_server_id=virtual_server_id,
|
|
rules=lb_rules, vs_data=body, tenant=tenant)
|
|
|
|
def remove_lb_rule(self, virtual_server_id, lb_rule_name,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lbvs_def = self.entry_def(virtual_server_id=virtual_server_id,
|
|
tenant=tenant)
|
|
body = self.policy_api.get(lbvs_def)
|
|
lb_rules = body.get('rules', [])
|
|
lb_rules = [r for r in lb_rules if (r.get('display_name') !=
|
|
lb_rule_name)]
|
|
return self._update(
|
|
virtual_server_id=virtual_server_id, vs_data=body,
|
|
rules=lb_rules, tenant=tenant)
|
|
|
|
def get_path(self, virtual_server_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
profile_def = self.entry_def(
|
|
virtual_server_id=virtual_server_id,
|
|
tenant=tenant)
|
|
return profile_def.get_resource_full_path()
|
|
|
|
def wait_until_realized(self, virtual_server_id, entity_type=None,
|
|
tenant=constants.POLICY_INFRA_TENANT,
|
|
sleep=None, max_attempts=None):
|
|
lbvs_def = self.entry_def(
|
|
virtual_server_id=virtual_server_id, tenant=tenant)
|
|
return self._wait_until_realized(
|
|
lbvs_def, entity_type=entity_type,
|
|
sleep=sleep, max_attempts=max_attempts)
|
|
|
|
|
|
@six.add_metaclass(abc.ABCMeta)
|
|
class NsxPolicyLBMonitorProfileBase(NsxPolicyResourceBase):
|
|
"""NSX Policy LB monitor profile"""
|
|
|
|
def create_or_overwrite(self,
|
|
lb_monitor_profile_id=None,
|
|
tags=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT,
|
|
**kwargs):
|
|
lb_monitor_profile_id = self._init_obj_uuid(lb_monitor_profile_id)
|
|
lb_monitor_profile_def = self._init_def(
|
|
lb_monitor_profile_id=lb_monitor_profile_id,
|
|
tags=tags,
|
|
tenant=tenant,
|
|
**kwargs)
|
|
self._create_or_store(lb_monitor_profile_def)
|
|
return lb_monitor_profile_id
|
|
|
|
def delete(self, lb_monitor_profile_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_monitor_profile_def = self.entry_def(
|
|
lb_monitor_profile_id=lb_monitor_profile_id,
|
|
tenant=tenant)
|
|
self.policy_api.delete(lb_monitor_profile_def)
|
|
|
|
def get(self, lb_monitor_profile_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_monitor_profile_def = self.entry_def(
|
|
lb_monitor_profile_id=lb_monitor_profile_id,
|
|
tenant=tenant)
|
|
return self.policy_api.get(lb_monitor_profile_def)
|
|
|
|
def list(self, tenant=constants.POLICY_INFRA_TENANT):
|
|
lb_monitor_profile_def = self.entry_def(tenant=tenant)
|
|
return self._list(lb_monitor_profile_def)
|
|
|
|
def update(self,
|
|
lb_monitor_profile_id,
|
|
name=IGNORE,
|
|
tags=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT,
|
|
**kwargs):
|
|
self._update(
|
|
lb_monitor_profile_id=lb_monitor_profile_id,
|
|
name=name,
|
|
tags=tags,
|
|
tenant=tenant,
|
|
**kwargs)
|
|
|
|
def get_path(self, lb_monitor_profile_id,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
mon_def = self.entry_def(lb_monitor_profile_id=lb_monitor_profile_id,
|
|
tenant=tenant)
|
|
return mon_def.get_resource_full_path()
|
|
|
|
|
|
class NsxPolicyLBMonitorProfileHttpApi(NsxPolicyLBMonitorProfileBase):
|
|
"""NSX Policy LB HTTP monitor profile"""
|
|
|
|
def create_or_overwrite(self,
|
|
lb_monitor_profile_id=None,
|
|
tags=IGNORE,
|
|
name=IGNORE,
|
|
interval=IGNORE,
|
|
timeout=IGNORE,
|
|
fall_count=IGNORE,
|
|
rise_count=IGNORE,
|
|
monitor_port=IGNORE,
|
|
request_url=IGNORE,
|
|
request_method=IGNORE,
|
|
request_version=IGNORE,
|
|
request_headers=IGNORE,
|
|
request_body=IGNORE,
|
|
response_status_codes=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return super(NsxPolicyLBMonitorProfileHttpApi,
|
|
self).create_or_overwrite(
|
|
lb_monitor_profile_id=lb_monitor_profile_id,
|
|
tags=tags,
|
|
name=name,
|
|
interval=interval,
|
|
timeout=timeout,
|
|
fall_count=fall_count,
|
|
rise_count=rise_count,
|
|
monitor_port=monitor_port,
|
|
request_url=request_url,
|
|
request_method=request_method,
|
|
request_version=request_version,
|
|
request_headers=request_headers,
|
|
request_body=request_body,
|
|
response_status_codes=response_status_codes,
|
|
tenant=tenant)
|
|
|
|
def update(self,
|
|
lb_monitor_profile_id,
|
|
tags=IGNORE,
|
|
name=IGNORE,
|
|
interval=IGNORE,
|
|
timeout=IGNORE,
|
|
fall_count=IGNORE,
|
|
rise_count=IGNORE,
|
|
monitor_port=IGNORE,
|
|
request_url=IGNORE,
|
|
request_method=IGNORE,
|
|
request_version=IGNORE,
|
|
request_headers=IGNORE,
|
|
request_body=IGNORE,
|
|
response_status_codes=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return super(NsxPolicyLBMonitorProfileHttpApi, self).update(
|
|
lb_monitor_profile_id=lb_monitor_profile_id,
|
|
tags=tags,
|
|
name=name,
|
|
interval=interval,
|
|
timeout=timeout,
|
|
fall_count=fall_count,
|
|
rise_count=rise_count,
|
|
monitor_port=monitor_port,
|
|
request_url=request_url,
|
|
request_method=request_method,
|
|
request_version=request_version,
|
|
request_headers=request_headers,
|
|
request_body=request_body,
|
|
response_status_codes=response_status_codes,
|
|
tenant=tenant)
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBHttpMonitorProfileDef
|
|
|
|
|
|
class NsxPolicyLBMonitorProfileHttpsApi(NsxPolicyLBMonitorProfileHttpApi):
|
|
"""NSX Policy LB HTTPS monitor profile"""
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBHttpsMonitorProfileDef
|
|
|
|
|
|
class NsxPolicyLBMonitorProfileUdpApi(NsxPolicyLBMonitorProfileBase):
|
|
"""NSX Policy LB UDP monitor profile"""
|
|
|
|
def create_or_overwrite(self,
|
|
lb_monitor_profile_id=None,
|
|
tags=IGNORE,
|
|
name=IGNORE,
|
|
interval=IGNORE,
|
|
timeout=IGNORE,
|
|
fall_count=IGNORE,
|
|
rise_count=IGNORE,
|
|
monitor_port=IGNORE,
|
|
receive=IGNORE,
|
|
send=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return super(NsxPolicyLBMonitorProfileUdpApi,
|
|
self).create_or_overwrite(
|
|
lb_monitor_profile_id=lb_monitor_profile_id,
|
|
tags=tags,
|
|
name=name,
|
|
interval=interval,
|
|
timeout=timeout,
|
|
fall_count=fall_count,
|
|
rise_count=rise_count,
|
|
monitor_port=monitor_port,
|
|
receive=receive,
|
|
send=send,
|
|
tenant=tenant)
|
|
|
|
def update(self,
|
|
lb_monitor_profile_id,
|
|
tags=IGNORE,
|
|
name=IGNORE,
|
|
interval=IGNORE,
|
|
timeout=IGNORE,
|
|
fall_count=IGNORE,
|
|
rise_count=IGNORE,
|
|
monitor_port=IGNORE,
|
|
receive=IGNORE,
|
|
send=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return super(NsxPolicyLBMonitorProfileUdpApi, self).update(
|
|
lb_monitor_profile_id=lb_monitor_profile_id,
|
|
tags=tags,
|
|
name=name,
|
|
interval=interval,
|
|
timeout=timeout,
|
|
fall_count=fall_count,
|
|
rise_count=rise_count,
|
|
monitor_port=monitor_port,
|
|
receive=receive,
|
|
send=send,
|
|
tenant=tenant)
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBUdpMonitorProfileDef
|
|
|
|
|
|
class NsxPolicyLBMonitorProfileIcmpApi(NsxPolicyLBMonitorProfileBase):
|
|
"""NSX Policy LB ICMP monitor profile"""
|
|
|
|
def create_or_overwrite(self,
|
|
lb_monitor_profile_id=None,
|
|
tags=IGNORE,
|
|
name=IGNORE,
|
|
interval=IGNORE,
|
|
timeout=IGNORE,
|
|
fall_count=IGNORE,
|
|
rise_count=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return super(NsxPolicyLBMonitorProfileIcmpApi,
|
|
self).create_or_overwrite(
|
|
lb_monitor_profile_id=lb_monitor_profile_id,
|
|
tags=tags,
|
|
name=name,
|
|
interval=interval,
|
|
timeout=timeout,
|
|
fall_count=fall_count,
|
|
rise_count=rise_count,
|
|
tenant=tenant)
|
|
|
|
def update(self,
|
|
lb_monitor_profile_id,
|
|
tags=IGNORE,
|
|
name=IGNORE,
|
|
interval=IGNORE,
|
|
timeout=IGNORE,
|
|
fall_count=IGNORE,
|
|
rise_count=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return super(NsxPolicyLBMonitorProfileIcmpApi, self).update(
|
|
lb_monitor_profile_id=lb_monitor_profile_id,
|
|
tags=tags,
|
|
name=name,
|
|
interval=interval,
|
|
timeout=timeout,
|
|
fall_count=fall_count,
|
|
rise_count=rise_count,
|
|
tenant=tenant)
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBIcmpMonitorProfileDef
|
|
|
|
|
|
class NsxPolicyLBMonitorProfileTcpApi(NsxPolicyLBMonitorProfileBase):
|
|
"""NSX Policy LB TCP monitor profile"""
|
|
|
|
def create_or_overwrite(self,
|
|
lb_monitor_profile_id=None,
|
|
tags=IGNORE,
|
|
name=IGNORE,
|
|
interval=IGNORE,
|
|
timeout=IGNORE,
|
|
fall_count=IGNORE,
|
|
rise_count=IGNORE,
|
|
monitor_port=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return super(NsxPolicyLBMonitorProfileTcpApi,
|
|
self).create_or_overwrite(
|
|
lb_monitor_profile_id=lb_monitor_profile_id,
|
|
tags=tags,
|
|
name=name,
|
|
interval=interval,
|
|
timeout=timeout,
|
|
fall_count=fall_count,
|
|
rise_count=rise_count,
|
|
monitor_port=monitor_port,
|
|
tenant=tenant)
|
|
|
|
def update(self,
|
|
lb_monitor_profile_id,
|
|
tags=IGNORE,
|
|
name=IGNORE,
|
|
interval=IGNORE,
|
|
timeout=IGNORE,
|
|
fall_count=IGNORE,
|
|
rise_count=IGNORE,
|
|
monitor_port=IGNORE,
|
|
tenant=constants.POLICY_INFRA_TENANT):
|
|
return super(NsxPolicyLBMonitorProfileTcpApi, self).update(
|
|
lb_monitor_profile_id=lb_monitor_profile_id,
|
|
tags=tags,
|
|
name=name,
|
|
interval=interval,
|
|
timeout=timeout,
|
|
fall_count=fall_count,
|
|
rise_count=rise_count,
|
|
monitor_port=monitor_port,
|
|
tenant=tenant)
|
|
|
|
@property
|
|
def entry_def(self):
|
|
return lb_defs.LBTcpMonitorProfileDef
|
|
|
|
|
|
class NsxPolicyLoadBalancerApi(object):
|
|
"""This is the class that have all load balancer policy apis"""
|
|
def __init__(self, *args):
|
|
self.lb_http_profile = NsxPolicyLBAppProfileHttpApi(*args)
|
|
self.lb_fast_tcp_profile = NsxPolicyLBAppProfileFastTcpApi(*args)
|
|
self.lb_fast_udp_profile = NsxPolicyLBAppProfileFastUdpApi(*args)
|
|
self.client_ssl_profile = (
|
|
NsxPolicyLoadBalancerClientSSLProfileApi(*args))
|
|
self.lb_persistence_profile = (
|
|
NsxPolicyLoadBalancerPersistenceProfileApi(*args))
|
|
self.lb_cookie_persistence_profile = (
|
|
NsxPolicyLoadBalancerCookiePersistenceProfileApi(*args))
|
|
self.lb_source_ip_persistence_profile = (
|
|
NsxPolicyLoadBalancerSourceIpPersistenceProfileApi(*args))
|
|
self.lb_service = NsxPolicyLoadBalancerServiceApi(*args)
|
|
self.virtual_server = NsxPolicyLoadBalancerVirtualServerAPI(*args)
|
|
self.lb_pool = NsxPolicyLoadBalancerPoolApi(*args)
|
|
self.lb_monitor_profile_http = NsxPolicyLBMonitorProfileHttpApi(*args)
|
|
self.lb_monitor_profile_https = (
|
|
NsxPolicyLBMonitorProfileHttpsApi(*args))
|
|
self.lb_monitor_profile_udp = NsxPolicyLBMonitorProfileUdpApi(*args)
|
|
self.lb_monitor_profile_icmp = NsxPolicyLBMonitorProfileIcmpApi(*args)
|
|
self.lb_monitor_profile_tcp = NsxPolicyLBMonitorProfileTcpApi(*args)
|