def get_virtual_service_insertion(self, folder='Common'): virtual_services = [] vs = self.lb_vs.get_list() if len(vs) > 0: vd = self.lb_vs.get_destination_v2(vs) vn = self.lb_vs.get_wildmask(vs) vp = self.lb_vs.get_protocol(vs) protocols = { 'PROTOCOL_ANY': 'any', 'PROTOCOL_TCP': 'tcp', 'PROTOCOL_UDP': 'udp', 'PROTOCOL_ICMP': 'icmp', 'PROTOCOL_SCTP': 'sctp' } for i in range(len(vs)): name = strip_folder_and_prefix(vs[i]) address = strip_folder_and_prefix( vd[i]['address']).split('%')[0] service = {name: {}} service[name]['address'] = address service[name]['netmask'] = vn[i] service[name]['protocol'] = protocols[vp[i]] service[name]['port'] = vd[i]['port'] virtual_services.append(service) return virtual_services
def http_profile_exists(self, name=None, folder='Common'): if name: for http_profile in self.lb_vs.get_list(): if strip_folder_and_prefix(http_profile) == \ strip_folder_and_prefix(name): return True return False else: return False
def set_persist_profile(self, name=None, profile_name=None, folder='Common'): if self.exists(name=name, folder=folder): Log.debug('VirtualServer', 'resetting persistence.') self.lb_vs.remove_all_persistence_profiles([name]) if profile_name.startswith('/Common'): profile_name = strip_folder_and_prefix(profile_name) try: vsp = self.lb_vs.typefactory.create( 'LocalLB.VirtualServer.VirtualServerPersistence') vsp.profile_name = profile_name vsp.default_profile = True vsp_seq = self.lb_vs.typefactory.create( 'LocalLB.VirtualServer.VirtualServerPersistenceSequence') vsp_seq.values = [vsp] vsp_seq_seq = self.lb_vs.typefactory.create( 'LocalLB.VirtualServer.VirtualServerPersistenceSequenceSequence') vsp_seq_seq.values = [vsp_seq] Log.debug('VirtualServer', 'adding persistence %s' % profile_name) self.lb_vs.add_persistence_profile([name], vsp_seq_seq) return True except WebFault as wf: if "already exists in partition" in str(wf.message): Log.error('VirtualServer', 'tried to set source_addr persistence when exists') return False else: raise wf else: return False
def _in_use(self, name=None, folder=None): if name: folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/net/self?$select=vlan' if folder: request_filter = 'partition eq ' + folder request_url += '&$filter=' + request_filter else: folder = 'Common' response = self.bigip.icr_session.get( request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: for selfip in return_obj['items']: vlan_name = os.path.basename(selfip['vlan']) if vlan_name == name: return True if vlan_name == \ strip_folder_and_prefix(name): return True elif response.status_code != 404: Log.error('self', response.text) raise exceptions.VXLANQueryException(response.text) return False
def remove_profile(self, name=None, profile_name=None, client_context=True, server_context=True, folder='Common'): if profile_name.startswith("/Common"): profile_name = strip_folder_and_prefix(profile_name) if self.virtual_server_has_profile(name=name, profile_name=profile_name, client_context=client_context, server_context=server_context, folder=folder): profile_context = 'PROFILE_CONTEXT_TYPE_ALL' if client_context and not server_context: profile_context = 'PROFILE_CONTEXT_TYPE_CLIENT' elif not client_context and server_context: profile_context = 'PROFILE_CONTEXT_TYPE_SERVER' vsp = self.lb_vs.typefactory.create( 'LocalLB.VirtualServer.VirtualServerProfile') vsp.profile_name = profile_name vsp.profile_context = profile_context vsp_seq = self.lb_vs.typefactory.create( 'LocalLB.VirtualServer.VirtualServerProfileSequence') vsp_seq.values = [vsp] vsp_seq_seq = self.lb_vs.typefactory.create( 'LocalLB.VirtualServer.VirtualServerProfileSequenceSequence') vsp_seq_seq.values = [vsp_seq] self.lb_vs.remove_profile([name], vsp_seq_seq) return True else: return False
def _in_use(self, name=None, folder=None): if name: folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/net/self?$select=vlan' if folder: request_filter = 'partition eq ' + folder request_url += '&$filter=' + request_filter else: folder = 'Common' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: for selfip in return_obj['items']: vlan_name = os.path.basename(selfip['vlan']) if vlan_name == name: return True if vlan_name == \ strip_folder_and_prefix(name): return True elif response.status_code != 404: Log.error('self', response.text) raise exceptions.L2GRETunnelQueryException(response.text) return False
def get_description(self, name=None, folder='Common'): if name: folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + \ '/net/vlan?$select=name,description' if folder: request_filter = 'partition eq ' + folder request_url += '&$filter=' + request_filter else: folder = 'Common' response = self.bigip.icr_session.get( request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: for vlan in return_obj['items']: vlan_name = os.path.basename(vlan['name']) if vlan_name == name: if 'description' in vlan: return vlan['description'] if vlan_name == \ strip_folder_and_prefix(name): if 'description' in vlan: return vlan['description'] elif response.status_code != 404: Log.error('VLAN', response.text) raise exceptions.VLANQueryException(response.text) return None
def get_description(self, name=None, folder="Common"): if name: folder = str(folder).replace("/", "") request_url = self.bigip.icr_url + "/net/vlan?$select=name,description" if folder: request_filter = "partition eq " + folder request_url += "&$filter=" + request_filter else: folder = "Common" response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) if "items" in return_obj: for vlan in return_obj["items"]: vlan_name = os.path.basename(vlan["name"]) if vlan_name == name: if "description" in vlan: return vlan["description"] if vlan_name == strip_folder_and_prefix(name): if "description" in vlan: return vlan["description"] elif response.status_code != 404: Log.error("VLAN", response.text) raise exceptions.VLANQueryException(response.text) return None
def get_vlan(self, name=None, folder="Common"): if name: folder = str(folder).replace("/", "") request_url = self.bigip.icr_url + "/net/self/" request_url += "~" + folder + "~" + name request_url += "/?$select=vlan" response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) if "vlan" in return_obj: return strip_folder_and_prefix(return_obj["vlan"]) else: Log.error("self", response.text) raise exceptions.SelfIPQueryException(response.text) return None
def delete_by_vlan_name(self, vlan_name=None, folder='Common'): if vlan_name: folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/net/self' request_url += '?$select=vlan,selfLink,floating' if folder: request_filter = 'partition eq ' + folder request_url += '&$filter=' + request_filter else: folder = 'Common' response = self.bigip.icr_session.get( request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: float_to_delete = [] nonfloat_to_delete = [] for selfip in return_obj['items']: name = os.path.basename(selfip['vlan']) if vlan_name == name or \ vlan_name == strip_folder_and_prefix(name): if selfip['floating'] == 'enabled': float_to_delete.append( self.bigip.icr_link(selfip['selfLink'])) else: nonfloat_to_delete.append( self.bigip.icr_link(selfip['selfLink'])) for selfip in float_to_delete: del_res = self.bigip.icr_session.delete( selfip, timeout=const.CONNECTION_TIMEOUT) if del_res.status_code > 399 and\ del_res.status_code != 404: Log.error('self', del_res.text) raise exceptions.SelfIPDeleteException( del_res.text) for selfip in nonfloat_to_delete: del_res = self.bigip.icr_session.delete( selfip, timeout=const.CONNECTION_TIMEOUT) if del_res.status_code > 399 and\ del_res.status_code != 404: Log.error('self', del_res.text) raise exceptions.SelfIPDeleteException( del_res.text) return True else: Log.error('selfip', response.text) raise exceptions.SelfIPQueryException(response.text) return False
def get_vlan(self, name=None, folder='Common'): if name: folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/net/self/' request_url += '~' + folder + '~' + name request_url += '/?$select=vlan' response = self.bigip.icr_session.get( request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) if 'vlan' in return_obj: return strip_folder_and_prefix(return_obj['vlan']) else: Log.error('self', response.text) raise exceptions.SelfIPQueryException(response.text) return None
def get_tunnel_folder(self, tunnel_name=None): if tunnel_name: request_url = self.bigip.icr_url + '/net/tunnels/tunnel/' response = self.bigip.icr_session.get( request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: for tunnel in return_obj['items']: if tunnel['name'] == tunnel_name: return strip_folder_and_prefix(tunnel['partition']) return None elif response.status_code != 404: Log.error('VXLAN', response.text) raise exceptions.VXLANQueryException(response.text) return None
def get_tunnel_folder(self, tunnel_name=None): if tunnel_name: request_url = self.bigip.icr_url + '/net/tunnels/tunnel/' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: for tunnel in return_obj['items']: if tunnel['name'] == tunnel_name: return strip_folder_and_prefix(tunnel['partition']) return None elif response.status_code != 404: Log.error('L2GRE', response.text) raise exceptions.L2GRETunnelQueryException(response.text) return None
def remove_and_delete_persist_profile(self, name=None, profile_name=None, folder='Common'): if self.exists(name=name, folder=folder): persist_profiles = self.lb_vs.get_persistence_profile([name])[0] fb_profiles = \ self.lb_vs.get_fallback_persistence_profile([name]) profile_names_to_remove = [] profiles_to_remove = [] rules_to_remove = [] for p in persist_profiles: if profile_name: if profile_name.startswith('/Common'): profile_name = strip_folder_and_prefix(profile_name) if profile_name == p['profile_name']: rule_name = \ self.lb_persist.get_rule([p['profile_name']])[0]['value'] if rule_name: rules_to_remove.append(rule_name) profiles_to_remove.append(p) profile_names_to_remove.append(p['profile_name']) else: rule_name = \ self.lb_persist.get_rule([p['profile_name']])[0]['value'] if rule_name: rules_to_remove.append(rule_name) profiles_to_remove.append(p) if not p['profile_name'].startswith('/Common'): profile_names_to_remove.append(p['profile_name']) if len(profiles_to_remove) > 0: if len(fb_profiles): self.lb_vs.set_fallback_persistence_profile([name], [None]) vsp_seq = self.lb_vs.typefactory.create( 'LocalLB.VirtualServer.VirtualServerPersistenceSequence') vsp_seq.values = profiles_to_remove vsp_seq_seq = self.lb_vs.typefactory.create( 'LocalLB.VirtualServer.VirtualServerPersistenceSequenceSequence') vsp_seq_seq.values = [vsp_seq] self.lb_vs.remove_persistence_profile([name], vsp_seq_seq) if len(profile_names_to_remove) > 0: self.lb_persist.delete_profile(profile_names_to_remove) if len(rules_to_remove) > 0: self.bigip.rule.lb_rule.delete_rule(rules_to_remove) return True else: return False
def get_nats(self, folder='Common'): folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/ltm/nat' request_url += '?$select=name' request_url += '&$filter=partition eq ' + folder response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) nat_names = [] if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: for nat in return_obj['items']: nat_names.append(strip_folder_and_prefix(nat['name'])) elif response.status_code != 404: Log.error('nat', response.text) raise exceptions.NATQueryException(response.text) return nat_names
def set_fallback_persist_profile(self, name=None, profile_name=None, folder='Common'): if self.exists(name=name, folder=folder): if profile_name.startswith('/Common'): profile_name = strip_folder_and_prefix(profile_name) try: self.lb_vs.set_fallback_persistence_profile([name], [profile_name]) return True except WebFault as wf: if "already exists in partition" in str(wf.message): Log.error('VirtualServer', 'tried to set source_addr persistence when exists') return False else: raise wf else: return False
def virtual_server_has_profile(self, name=None, profile_name=None, client_context=True, server_context=True, folder='Common'): if self.exists(name=name, folder=folder): profile_name = strip_folder_and_prefix(profile_name) profiles = self.get_profiles(name=name, folder=folder) for profile in profiles: if profile_name in profile: if client_context and \ profile.get(profile_name)['client_context']: return True if server_context and \ profile.get(profile_name)['server_context']: return True return False else: return False
def get_vlans(self, folder="Common"): folder = str(folder).replace("/", "") request_url = self.bigip.icr_url + "/net/vlan/" request_url += "?$select=name" if folder: request_filter = "partition eq " + folder request_url += "&$filter=" + request_filter response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) return_list = [] if response.status_code < 400: return_obj = json.loads(response.text) if "items" in return_obj: for vlan in return_obj["items"]: return_list.append(strip_folder_and_prefix(vlan["name"])) elif response.status_code != 404: Log.error("VLAN", response.text) raise exceptions.VLANQueryException(response.text) return return_list
def get_snataddresses(self, folder='Common'): folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/ltm/snat-translation/' request_url += '?$select=name' if folder: request_filter = 'partition eq ' + folder request_url += '&$filter=' + request_filter response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) return_list = [] if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: for sa in return_obj['items']: return_list.append(strip_folder_and_prefix(sa['name'])) elif response.status_code != 404: Log.error('snat-translation', response.text) raise exceptions.SNATQueryException(response.text) return return_list
def get_snatpool_members(self, name=None, folder='Common'): if name: folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/ltm/snatpool/' request_url += '~' + folder + '~' + name request_url += '/?$select=members' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) return_list = [] if response.status_code < 400: return_obj = json.loads(response.text) if 'members' in return_obj: for sa in return_obj['members']: return_list.append(strip_folder_and_prefix(sa)) elif response.status_code != 404: Log.error('snatpool', response.text) raise exceptions.SNATQueryException(response.text) return return_list return None
def get_pools(self, folder='Common'): folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/ltm/pool' request_url += '?$select=name' request_url += '&$filter=partition eq ' + folder response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) pool_names = [] if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: for pool in return_obj['items']: pool_names.append( strip_folder_and_prefix(pool['name'])) elif response.status_code != 404: Log.error('pool', response.text) raise exceptions.PoolQueryException(response.text) return pool_names
def get_vlans(self, folder='Common'): folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/net/vlan/' request_url += '?$select=name' if folder: request_filter = 'partition eq ' + folder request_url += '&$filter=' + request_filter response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) return_list = [] if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: for vlan in return_obj['items']: return_list.append(strip_folder_and_prefix(vlan['name'])) elif response.status_code != 404: Log.error('VLAN', response.text) raise exceptions.VLANQueryException(response.text) return return_list
def get_tunnel_by_description(self, description=None, folder='Common'): folder = str(folder).replace('/', '') if description: request_url = self.bigip.icr_url + '/net/tunnels/tunnel/' if folder: request_filter = 'partition eq ' + folder request_url += '?$filter=' + request_filter response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: for tunnel in return_obj['items']: if tunnel['description'] == description: return strip_folder_and_prefix(tunnel['name']) return None elif response.status_code != 404: Log.error('L2GRE', response.text) raise exceptions.L2GRETunnelQueryException(response.text) return None
def get_tunnel_by_description(self, description=None, folder='Common'): folder = str(folder).replace('/', '') if description: request_url = self.bigip.icr_url + '/net/tunnels/tunnel/' if folder: request_filter = 'partition eq ' + folder request_url += '?$filter=' + request_filter response = self.bigip.icr_session.get( request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: for tunnel in return_obj['items']: if tunnel['description'] == description: return strip_folder_and_prefix(tunnel['name']) return None elif response.status_code != 404: Log.error('VXLAN', response.text) raise exceptions.VXLANQueryException(response.text) return None
def get_profiles(self, folder='Common'): folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/net/tunnels/vxlan' request_filter = 'partition eq ' + folder request_url += '?$filter=' + request_filter response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) profile_list = [] if 'items' in return_obj: for profile in return_obj['items']: profile_list.append( strip_folder_and_prefix(profile['name'])) return profile_list else: return None elif response.status_code != 404: Log.error('VXLAN', response.text) raise exceptions.VXLANQueryException(response.text) return None
def get_vlan(self, name=None, folder='Common'): if name: folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/ltm/nat/' request_url += '~' + folder + '~' + name request_url += '/?$select=vlans' response = self.bigip.icr_session.get( request_url, timeout=const.CONNECTION_TIMEOUT) return_vlans = [] if response.status_code < 400: return_obj = json.loads(response.text) if 'vlans' in return_obj: for vlan in return_obj['vlans']: return_vlans.append(strip_folder_and_prefix(vlan)) elif response.status_code != 404: Log.error('nat', response.text) raise exceptions.NATQueryException(response.text) if len(return_vlans) == 1: return_vlans = return_vlans[0] return return_vlans return None
def get_profiles(self, name=None, folder='Common'): return_profiles = [] if self.exists(name=name, folder=folder): profiles = self.lb_vs.get_profile([name])[0] for profile in profiles: p = {} profile_name = \ strip_folder_and_prefix(profile.profile_name) p[profile_name] = {} if profile.profile_context == "PROFILE_CONTEXT_TYPE_ALL": p[profile_name]['client_context'] = True p[profile_name]['server_context'] = True elif profile.profile_context == "PROFILE_CONTEXT_TYPE_CLIENT": p[profile_name]['client_context'] = True p[profile_name]['server_context'] = False elif profile.profile_context == "PROFILE_CONTEXT_TYPE_SERVER": p[profile_name]['client_context'] = False p[profile_name]['server_context'] = True p[profile_name]['type'] = "'" + profile.profile_type + "'" return_profiles.append(p) return return_profiles
def get_vlan(self, name=None, folder='Common'): if name: folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/ltm/nat/' request_url += '~' + folder + '~' + name request_url += '/?$select=vlans' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) return_vlans = [] if response.status_code < 400: return_obj = json.loads(response.text) if 'vlans' in return_obj: for vlan in return_obj['vlans']: return_vlans.append( strip_folder_and_prefix(vlan)) elif response.status_code != 404: Log.error('nat', response.text) raise exceptions.NATQueryException(response.text) if len(return_vlans) == 1: return_vlans = return_vlans[0] return return_vlans return None
def get_monitors(self, name=None, folder='Common'): if name: folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/ltm/pool/' request_url += '~' + folder + '~' + name request_url += '?$select=monitor' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: response_obj = json.loads(response.text) monitors = [] if 'monitor' in response_obj: w_split = response_obj['monitor'].split() for w in w_split: if w.startswith('/'): monitors.append( strip_folder_and_prefix(w)) return monitors elif response.status_code != 404: Log.error('pool', response.text) raise exceptions.PoolQueryException(response.text) return []
def exists(self, name=None, folder="Common"): folder = str(folder).replace("/", "") request_url = self.bigip.icr_url + "/net/self/" request_url += "~" + folder + "~" + name request_url += "?$select=name" response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return True elif response.status_code == 404: request_url = self.bigip.icr_url + "/net/self/" request_url += "~" + folder + "~" + strip_folder_and_prefix(name) request_url += "?$select=name" response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return True elif response.status_code != 404: Log.error("self", response.text) raise exceptions.SelfIPQueryException(response.text) else: Log.error("self", response.text) raise exceptions.SelfIPQueryException(response.text) return False
def delete_by_vlan_name(self, vlan_name=None, folder="Common"): if vlan_name: folder = str(folder).replace("/", "") request_url = self.bigip.icr_url + "/net/self" request_url += "?$select=vlan,selfLink,floating" if folder: request_filter = "partition eq " + folder request_url += "&$filter=" + request_filter else: folder = "Common" response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) if "items" in return_obj: float_to_delete = [] nonfloat_to_delete = [] for selfip in return_obj["items"]: name = os.path.basename(selfip["vlan"]) if vlan_name == name or vlan_name == strip_folder_and_prefix(name): if selfip["floating"] == "enabled": float_to_delete.append(self.bigip.icr_link(selfip["selfLink"])) else: nonfloat_to_delete.append(self.bigip.icr_link(selfip["selfLink"])) for selfip in float_to_delete: del_res = self.bigip.icr_session.delete(selfip, timeout=const.CONNECTION_TIMEOUT) if del_res.status_code > 399 and del_res.status_code != 404: Log.error("self", del_res.text) raise exceptions.SelfIPDeleteException(del_res.text) for selfip in nonfloat_to_delete: del_res = self.bigip.icr_session.delete(selfip, timeout=const.CONNECTION_TIMEOUT) if del_res.status_code > 399 and del_res.status_code != 404: Log.error("self", del_res.text) raise exceptions.SelfIPDeleteException(del_res.text) return True else: Log.error("selfip", response.text) raise exceptions.SelfIPQueryException(response.text) return False
def get_tunnels(self, folder='Common'): folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/net/tunnels/tunnel' if folder: request_filter = 'partition eq ' + folder request_url += '?$filter=' + request_filter response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: tunnel_list = [] return_obj = json.loads(response.text) if 'items' in return_obj: for tunnel in return_obj['items']: if tunnel['profile'].find('gre') > 0: tunnel_list.append( strip_folder_and_prefix(tunnel['name'])) return tunnel_list else: return None elif response.status_code != 404: Log.error('L2GRE', response.text) exceptions.L2GRETunnelQueryException(response.text) return None
def exists(self, name=None, folder='Common'): folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/net/self/' request_url += '~' + folder + '~' + name request_url += '?$select=name' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return True elif response.status_code == 404: request_url = self.bigip.icr_url + '/net/self/' request_url += '~' + folder + '~' + strip_folder_and_prefix(name) request_url += '?$select=name' response = self.bigip.icr_session.get( request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return True elif response.status_code != 404: Log.error('self', response.text) raise exceptions.SelfIPQueryException(response.text) else: Log.error('self', response.text) raise exceptions.SelfIPQueryException(response.text) return False
def get_pool(self, name=None, folder='Common'): if self.exists(name=name, folder=folder): pool_name = self.lb_vs.get_default_pool_name([name])[0] return strip_folder_and_prefix(pool_name)
def get_monitors(self, name=None, folder='Common'): monitors = self._get_monitors(name=name, folder=folder) if len(monitors) > 0: monitors = strip_folder_and_prefix(monitors) return monitors