def folder_exists(self, folder): """ Does folder exist? """ if folder: folder = str(folder).replace('/', '') if folder == 'Common': return True if folder in self.existing_folders: now = time.time() if self.existint_folders_updated: if ((now - self.existint_folders_updated) < const.FOLDER_CACHE_TIMEOUT): return True else: del self.existing_folders[folder] request_url = self.bigip.icr_url + '/sys/folder/' request_url += '~' + folder request_url += '?$select=name' response = self.bigip.icr_session.get( request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: self.existing_folders[folder] = 1 return True elif response.status_code == 404: return False else: Log.error('folder', response.text) raise exceptions.SystemQueryException(response.text) return False
def get_serial_number(self): if not self.systeminfo: try: self.systeminfo = self.sys_info.get_system_information() except Exception as e: raise exceptions.SystemQueryException(e.message) return self.systeminfo.chassis_serial
def get_version(self): if not self.version: try: self.version = self.sys_info.get_version() except Exception as e: raise exceptions.SystemQueryException(e.message) return self.version
def get_platform(self): if not self.systeminfo: try: self.systeminfo = self.sys_info.get_system_information() except Exception as e: raise exceptions.SystemQueryException(e.message) return self.systeminfo.product_category
def get_hostname(self): request_url = self.bigip.icr_url + \ '/sys/global-settings?$select=hostname' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: response_obj = json.loads(response.text) return response_obj['hostname'] else: raise exceptions.SystemQueryException(response.text)
def get_tunnel_sync(self): request_url = self.bigip.icr_url + '/sys/db/iptunnel.configsync' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: response_obj = json.loads(response.text) if 'value' in response_obj: return response_obj['value'] return None elif response.status_code != 404: raise exceptions.SystemQueryException(response.text)
def get_provision_extramb(self): request_url = self.bigip.icr_url + '/sys/db/provision.extramb' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: response_obj = json.loads(response.text) if 'value' in response_obj: return response_obj['value'] return 0 else: raise exceptions.SystemQueryException(response.text)
def get_active_modules(self): request_url = self.bigip.icr_url + '/cm/device' request_url += '?$select=activeModules,selfDevice' 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 device in response_obj['items']: if device['selfDevice']: return device['activeModules'] else: raise exceptions.SystemQueryException(response.text)
def get_ntp_server(self): request_url = self.bigip.icr_url + \ '/sys/ntp?$select=servers' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: response_obj = json.loads(response.text) if 'servers' in response_obj: return response_obj['servers'][0] else: return None else: raise exceptions.SystemQueryException(response.text)
def get_folders(self): request_url = self.bigip.icr_url + '/sys/folder/' request_url += '?$select=name' 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 folder in return_obj['items']: return_list.append(folder['name']) elif response.status_code != 404: Log.error('folder', response.text) raise exceptions.SystemQueryException(response.text) return return_list
def get_license_operational(self): """ Get license operational """ request_url = self.bigip.icr_url + '/sys/db/license.operational' request_url += '?$select=value' response = self.bigip.icr_session.get( request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: response_obj = json.loads(response.text) if 'value' in response_obj: return response_obj['value'] == 'true' return None elif response.status_code == 404: return None else: raise exceptions.SystemQueryException(response.text)
def get_global_statistics(self): """ Get platform global statisitcs """ request_url = self.bigip.icr_url + '/sys/performance/all-stats' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: response_obj = json.loads(response.text) if 'apiRawValues' in response_obj: sr = { 'Sys::Performance System': { 'System CPU Usage': { 'Utilization': { 'current': 0, 'average': 0, 'max': 0 } }, 'Memory Used': { 'TMM Memory Used': { 'current': 0, 'average': 0, 'max': 0 }, 'Other Memory Used': { 'current': 0, 'average': 0, 'max': 0 }, 'Swap Memory Used': { 'current': 0, 'average': 0, 'max': 0 } } }, 'Sys::Performance Connections': { 'Active Connections': { 'Connections': { 'current': 0, 'average': 0, 'max': 0 } }, 'Total New Connections': { 'Client Connections': { 'current': 0, 'average': 0, 'max': 0 }, 'Server Connections': { 'current': 0, 'average': 0, 'max': 0 } }, 'HTTP Requests': { 'HTTP Requests': { 'current': 0, 'average': 0, 'max': 0 } } }, 'Sys::Performance Throughput': { 'Throughput(bits)': { 'In': { 'current': 0, 'average': 0, 'max': 0 }, 'Out': { 'current': 0, 'average': 0, 'max': 0 } }, 'SSL Transactions': { 'SSL TPS': { 'current': 0, 'average': 0, 'max': 0 } }, 'Throughput(packets)': { 'In': { 'current': 0, 'average': 0, 'max': 0 }, 'Out': { 'current': 0, 'average': 0, 'max': 0 } } }, 'Sys::Performance Ramcache': { 'RAM Cache Utilization': { 'Hit Rate': { 'current': 0, 'average': 0, 'max': 0 }, 'Byte Rate': { 'current': 0, 'average': 0, 'max': 0 }, 'Eviction Rate': { 'current': 0, 'average': 0, 'max': 0 } } } } stats_display = response_obj['apiRawValues']['apiAnonymous'] lines = str(stats_display).split('\n') sec = None div = None since = None for line in lines: if len(line) > 2: for this_section in sr.keys(): if str(line).startswith(this_section): if sec: if not (sec == this_section): sec = this_section div = None else: sec = this_section if sec: for division in sr[sec].keys(): if str(line).startswith(division): try: since_idx = line.index('since') end_since_idx = line.index( ')', since_idx) since = line[since_idx + 6:end_since_idx] except ValueError: pass div = division if div: for fields in sr[sec][div].keys(): for field in fields: if str(line).startswith(field): values = re.split(r'\s{2,}', line) if len(values) == 4: if values[0] in fields: sr[sec][div][values[0]] = \ { 'current': values[1], 'average': values[2], 'max': values[3] } sr['since'] = since return sr return None elif response.status_code == 404: return None else: raise exceptions.SystemQueryException(response.text)