def _del_configure_fip_no_reserve(self, ri,floatingip,nat_server_name): nat_server_mapings = self._get_nat_server_mapping() fix_ip = '' flag = False for nat_server_maping in nat_server_mapings: if nat_server_maping['name'] == nat_server_name: fix_ip = nat_server_maping['inside_ip'] flag = self._delete_floating_ips(ri, floatingip, nat_server_name) if flag: nat_server_mapings.remove(nat_server_maping) #count the last fip with the same inside ip count = 0 for nat_server_maping in nat_server_mapings: if nat_server_maping['inside_ip'] == fix_ip: count = count + 1 if count != 1 : return for nat_server_maping in nat_server_mapings: if nat_server_maping['inside_ip'] == fix_ip and nat_server_maping['name'] != nat_server_name and count == 1: nat_server_name = nat_server_maping['name'] #del the old nat_server which with no_reverse body = ngfw_utils.get_nat_server_static_map_to_delete(nat_server_name) response = self.rest.rest_api('DELETE', ngfw_utils.NGFW_URL_NAT_SERVER, body, device_ip=self.director_for_fip) if response['status'] <= 300 and response['status'] >= 200: LOG.debug(_('_config__floating_ips_delete success (%s)'), nat_server_name) #then add the new nat_server without no_reverse body = ngfw_utils.get_nat_server_static_map(nat_server_name, nat_server_maping['global_ip'], fix_ip, no_reverse=False) response = self.rest.rest_api('POST', ngfw_utils.NGFW_URL_NAT_SERVER, body, device_ip=self.director_for_fip) if response['status'] <= 300 and response['status'] >= 200: LOG.debug(_('_config_configure_fip_delete_no_reserve body (%s) (%s)'), nat_server_name, body)
def _add_configure_fip_no_reserve(self, fixedIP): nat_server_mapings = self._get_nat_server_mapping() for nat_server_maping in nat_server_mapings: if nat_server_maping['inside_ip'] == fixedIP: nat_server_name = nat_server_maping['name'] #del the old nat_server which without no_reverse body = ngfw_utils.get_nat_server_static_map_to_delete(nat_server_name) response = self.rest.rest_api('DELETE', ngfw_utils.NGFW_URL_NAT_SERVER, body, device_ip=self.director_for_fip) if response['status'] <= 300 and response['status'] >= 200: LOG.debug(_('_delete_floating_ips success (%s)'), nat_server_name) #then add the new nat_server with no_reverse body = ngfw_utils.get_nat_server_static_map(nat_server_name, nat_server_maping['global_ip'], fixedIP, no_reverse=True) response = self.rest.rest_api('POST', ngfw_utils.NGFW_URL_NAT_SERVER, body, device_ip=self.director_for_fip) if response['status'] <= 300 and response['status'] >= 200: LOG.debug(_('_config_floating_ips body (%s) (%s)'), nat_server_name, body) return True return False
def _delete_floating_ips(self, ri, floatingip, nat_name): body = ngfw_utils.get_nat_server_static_map_to_delete(nat_name) response = self.rest.rest_api('DELETE', ngfw_utils.NGFW_URL_NAT_SERVER, body, device_ip=self.director_for_fip) if response['status'] >= 400: LOG.error(_('_delete_floating_ips failed (%s)'), nat_name) if not floatingip: LOG.error(_('_delete_floating_ips failed and floatingip is None!!!')) return False fip_statuses = {floatingip:l3_constants.FLOATINGIP_STATUS_DOWN} self.plugin_rpc.update_floatingip_statuses( self.context, ri.router_id, fip_statuses) LOG.debug(_('update_floatingip_statuses success fip_id is:%s , ' 'fip_statuses is:%s'), floatingip, fip_statuses) LOG.debug(_('_config_floating_ips_delete success (%s)'), nat_name) return True