def get_sync_status(self): request_url = self.bigip.icr_url + '/cm/sync-status?$select=status' 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['entries'][ 'https://localhost/mgmt/tm/cm/sync-status/0']['nestedStats'][ 'entries']['status']['description'] else: Log.error('sync-status', response.text) raise exceptions.ClusterQueryException(response.text) return None
def traffic_group_exists(self, name): if name: request_url = self.bigip.icr_url + '/cm/traffic-group/' request_url += '~Common~' + 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: return False else: Log.error('traffic-group', response.text) raise exceptions.ClusterQueryException(response.text)
def get_sync_color(self): """ Get the sync color for the bigip """ request_url = self.bigip.icr_url + '/cm/sync-status?$select=color' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: response_obj = json.loads(response.text) entries = response_obj['entries'] status = entries['https://localhost/mgmt/tm/cm/sync-status/0'] desc = status['nestedStats']['entries']['color']['description'] return desc else: Log.error('sync-info', response.text) raise exceptions.ClusterQueryException(response.text) return None
def get_local_device_addr(self): request_url = self.bigip.icr_url + '/cm/device' request_url += '?$select=selfDevice,name,hostname,managementIp' 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['managementIp'] else: Log.error('device', response.text) raise exceptions.ClusterQueryException(response.text) return None
def remove_all_devices(self, name): request_url = self.bigip.icr_url + '/cm/device-group/~Common~' request_url += name payload = dict() payload['devices'] = list() response = self.bigip.icr_session.put(request_url, data=json.dumps(payload), timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return True elif response.status_code == 404: return True else: Log.error('device-group', response.text) raise exceptions.ClusterQueryException(response.text)
def devices(self, name): request_url = self.bigip.icr_url + '/cm/device-group/~Common~' request_url += name request_url += "/devices?$select=name" response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) return_devices = [] if response.status_code < 400: response_obj = json.loads(response.text) if 'items' in response_obj: for device in response_obj['items']: return_devices.append(device['name']) return return_devices if response.status_code == 404: return [] else: Log.error('device-group', response.text) raise exceptions.ClusterQueryException(response.text)
def sync_failover_dev_group_exists(self, name): request_url = self.bigip.icr_url + '/cm/device-group/' request_url += '~Common~' + name request_url += '?$select=type' response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: response_obj = json.loads(response.text) if 'type' in response_obj: if response_obj['type'] == 'sync-failover': return True else: return False elif response.status_code == 404: return False else: Log.error('device-group', response.text) raise exceptions.ClusterQueryException(response.text) return False