Exemplo n.º 1
0
 def set_member_ratio(self, name=None, ip_address=None, port=None,
                      ratio=1, folder='Common', no_checks=False):
     if name and ip_address and port:
         folder = str(folder).replace('/', '')
         request_url = self.bigip.icr_url + '/ltm/pool/'
         request_url += '~' + folder + '~' + name
         request_url += '/members/'
         request_url += '~' + folder + '~'
         request_url += urllib.quote(ip_address) + ':' + str(port)
         payload = dict()
         payload['ratio'] = ratio
         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:
             Log.error('pool',
             'tried to set ratio on non-existant member %s on pool %s.'
              % (ip_address + ':' + str(port),
                 '/' + folder + '/' + name))
             return False
         else:
             Log.error('pool', response.text)
             raise exceptions.PoolUpdateException(response.text)
     return False
Exemplo n.º 2
0
 def remove_monitor(self, name=None, monitor_name=None, folder='Common'):
     if not (name and monitor_name):
         return False
     folder = str(folder).replace('/', '')
     request_url = self.bigip.icr_url + '/ltm/pool/'
     request_url += '~' + folder + '~' + name
     request_url += '?$select=monitor'
     response = self.bigip.icr_session.get(request_url,
                                           timeout=const.CONNECTION_TIMEOUT)
     if response.status_code < 400:
         response_obj = json.loads(response.text)
         if 'monitor' in response_obj:
             w_split = response_obj['monitor'].split()
             existing_monitors = []
             for w in w_split:
                 if w.startswith('/'):
                     existing_monitors.append(w)
             fp_monitor = '/' + folder + '/' + monitor_name
             monitor_string = ''
             if fp_monitor in existing_monitors:
                 existing_monitors.remove(fp_monitor)
                 new_monitor_count = len(existing_monitors)
                 if new_monitor_count > 0:
                     if response_obj['monitor'].startswith('min'):
                         min_count = w_split[1]
                         if min_count > new_monitor_count:
                             min_count = new_monitor_count
                         monitor_string = 'min ' + min_count + ' of { '
                         for monitor in existing_monitors:
                             monitor_string += monitor + ' '
                         monitor_string += '}'
                     else:
                         for i in range(new_monitor_count):
                             if (i + 1) < new_monitor_count:
                                 monitor_string += \
                                     existing_monitors[i] + ' and '
                             else:
                                 monitor_string += \
                                     existing_monitors[i] + ' '
                 request_url = self.bigip.icr_url + '/ltm/pool/'
                 request_url += '~' + folder + '~' + name
                 payload = dict()
                 payload['monitor'] = monitor_string
                 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('pool', response.text)
                     raise exceptions.PoolUpdateException(response.text)
             else:
                 return True
     elif response.status_code != 404:
         Log.error('pool', response.text)
         raise exceptions.PoolQueryException(response.text)
     return False
Exemplo n.º 3
0
 def set_description(self, name=None, description=None, folder='Common'):
     if name:
         folder = str(folder).replace('/', '')
         request_url = self.bigip.icr_url + '/ltm/pool/'
         request_url += '~' + folder + '~' + name
         payload = dict()
         if description:
             payload['description'] = description
         else:
             payload['description'] = ''
         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('pool', response.text)
             raise exceptions.PoolUpdateException(response.text)
     return False
Exemplo n.º 4
0
 def set_lb_method(self, name=None, lb_method=None, folder='Common'):
     if name:
         folder = str(folder).replace('/', '')
         request_url = self.bigip.icr_url + '/ltm/pool/'
         request_url += '~' + folder + '~' + name
         payload = dict()
         if lb_method:
             payload['loadBalancingMode'] = \
                              self._get_rest_lb_method_type(lb_method)
         else:
             payload['loadBalancingMode'] = 'least-connections-member'
         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('pool', response.text)
             raise exceptions.PoolUpdateException(response.text)
     return False