コード例 #1
0
ファイル: cluster.py プロジェクト: p0i0/f5-openstack-lbaasv1
 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)
コード例 #2
0
    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)
コード例 #3
0
ファイル: cluster.py プロジェクト: rombie/contrail-f5
 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)
コード例 #4
0
ファイル: cluster.py プロジェクト: rombie/contrail-f5
    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)