コード例 #1
0
 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
コード例 #2
0
 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
コード例 #3
0
 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
コード例 #4
0
 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
コード例 #5
0
 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)
コード例 #6
0
    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)
コード例 #7
0
    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)
コード例 #8
0
 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)
コード例 #9
0
 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)
コード例 #10
0
 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
コード例 #11
0
ファイル: system.py プロジェクト: p0i0/f5-openstack-lbaasv1
    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)
コード例 #12
0
    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)