def remove_devices(self, name, device_names): """ Remove devices from device group """ existing_devices = self.devices(name) if not isinstance(device_names, list): device_names = [device_names] need_to_update = False for device in device_names: if device in existing_devices: existing_devices.remove(device) need_to_update = True if need_to_update: request_url = self.bigip.icr_url + '/cm/device-group/~Common~' request_url += name payload = dict() devices_list = list() for device in existing_devices: devices_list.append({'name': device}) payload['devices'] = 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.ClusterUpdateException(response.text)
def update_traffic_group(self, name=None, autofailback=False, failbacktimer=60, loadfactor=1, floating=True, ha_order=None): """ Update traffic group """ request_url = self.bigip.icr_url + '/cm/traffic-group/' request_url += '~Common~' + name response = self.bigip.icr_session.get(request_url, timeout=const.CONNECTION_TIMEOUT) if response.status_code >= 400: Log.error('traffic-group', response.text) raise exceptions.ClusterUpdateException(response.text) payload = json.loads(response.text) payload['autoFailbackEnabled'] = autofailback payload['autoFailbackTime'] = failbacktimer payload['haLoadFactor'] = loadfactor payload['isFloating'] = floating if ha_order: ha_order_list = [] devices = self.bigip.device.get_all_device_names() for device in ha_order: dev_name = os.path.basename(device) if dev_name in devices: ha_order_list.append('/Common/' + dev_name) payload['haOrder'] = ha_order_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 == 409: return True else: Log.error('traffic-group', response.text) raise exceptions.ClusterUpdateException(response.text)
def disable_auto_sync(self, name): payload = dict() payload['autoSync'] = 'disabled' request_url = self.bigip.icr_url + '/cm/device-group/~Common~' request_url += name response = self.bigip.icr_session.put(request_url, data=json.dumps(payload), timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return True else: Log.error('device-group', response.text) raise exceptions.ClusterUpdateException(response.text)
def set_metadata(self, name, cluster_dict): if isinstance(cluster_dict, dict): str_comment = json.dumps(cluster_dict) else: str_comment = cluster_dict request_url = self.bigip.icr_url + '/cm/device-group/~Common~' request_url += name payload = dict() payload['description'] = base64.encodestring(str_comment) response = self.bigip.icr_session.put(request_url, data=json.dumps(payload), timeout=const.CONNECTION_TIMEOUT) if response.status_code < 400: return True else: Log.error('device-group', response.text) raise exceptions.ClusterUpdateException(response.text)