def delete_all(self, folder='Common'): """ Delete vlans """ folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/net/vlan/' request_url += '?$select=name,selfLink' 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: response_obj = json.loads(response.text) if 'items' in response_obj: for item in response_obj['items']: if item['name'].startswith(self.OBJ_PREFIX): response = self.bigip.icr_session.delete( self.bigip.icr_link(item['selfLink']), timeout=const.CONNECTION_TIMEOUT) if response.status_code > 400 and \ response.status_code != 404: Log.error('vlan', response.text) raise exceptions.VLANDeleteException(response.text) elif response.status_code == 404: return True else: Log.error('VLAN', response.text) raise exceptions.VLANQueryException(response.text)
def get_description(self, name=None, folder='Common'): """ Get vlan description """ 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 _in_use(self, name=None, folder=None): """ Does selfip use vlan? """ 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('VLAN', response.text) raise exceptions.VLANQueryException(response.text) return False
def exists(self, name=None, folder='Common'): if name: folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/net/vlan/' 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: Log.error('VLAN', response.text) raise exceptions.VLANQueryException(response.text) return False
def get_id(self, name=None, folder='Common'): """ Get vlan id """ if name: folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/net/vlan/' request_url += '~' + folder + '~' + name request_url += '?$select=tag' response = self.bigip.icr_session.get( request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return_obj = json.loads(response.text) return return_obj['tag'] elif response.status_code != 404: Log.error('VLAN', response.text) raise exceptions.VLANQueryException(response.text) return 0
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_vlan_name_by_description(self, description=None, folder='Common'): if description: 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 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']: if vlan['description'] == description: return vlan['name'] elif response.status_code == 404: return None else: Log.error('VLAN', response.text) raise exceptions.VLANQueryException(response.text) return None
def get_interface(self, name=None, folder='Common'): if name: folder = str(folder).replace('/', '') request_url = self.bigip.icr_url + '/net/vlan/' request_url += '~' + folder + '~' + name request_url += '/interfaces?$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) if response.status_code < 400: return_obj = json.loads(response.text) if 'items' in return_obj: for interface in return_obj['items']: return interface['name'] elif response.status_code == 404: return None else: Log.error('VLAN', response.text) raise exceptions.VLANQueryException(response.text) return None