Purge normalized URLs
Also, purge the json endpoint. Change-Id: I87e8760300f469220a10d3652e86c81bef3cc89f
This commit is contained in:
parent
863b2ffae7
commit
e6a30dd0d7
|
@ -15,8 +15,12 @@
|
|||
# limitations under the License.
|
||||
|
||||
import logging
|
||||
import os
|
||||
import re
|
||||
import requests
|
||||
import subprocess
|
||||
import time
|
||||
import urlparse
|
||||
|
||||
|
||||
def setup_logging(logger):
|
||||
|
@ -28,6 +32,25 @@ def setup_logging(logger):
|
|||
logger.addHandler(ch)
|
||||
|
||||
|
||||
def normalize(name):
|
||||
return re.sub(r"[-_.]+", "-", name).lower()
|
||||
|
||||
|
||||
def get_purge_urls(url):
|
||||
res = urlparse.urlparse(url)
|
||||
ret = [url]
|
||||
ret.append(os.path.join(url, 'json'))
|
||||
m = re.match('^/simple/([^/$]*)', res[2])
|
||||
if m:
|
||||
package = normalize(m.group(1))
|
||||
new_url = list(res[:])
|
||||
new_url[2] = '/simple/%s/' % package
|
||||
ret.append(urlparse.urlunparse(new_url))
|
||||
new_url[2] = '/simple/%s/json' % package
|
||||
ret.append(urlparse.urlunparse(new_url))
|
||||
return ret
|
||||
|
||||
|
||||
def main():
|
||||
logger = logging.getLogger('bandersnatch')
|
||||
setup_logging(logger)
|
||||
|
@ -40,11 +63,14 @@ def main():
|
|||
if 'Expected PyPI serial' in line:
|
||||
url = line.split("for request ")[1].split()[0]
|
||||
stale[url] = True
|
||||
for url in stale.keys():
|
||||
logger.info('Purging %s' % url)
|
||||
response = requests.request('PURGE', url)
|
||||
if not response.ok:
|
||||
logger.error('Failed to purge %s: %s' % (url, response.text))
|
||||
for stale_url in stale.keys():
|
||||
logger.info('Purging URLs for stale request %s' % stale_url)
|
||||
for url in get_purge_urls(request_url):
|
||||
logger.info('Purging %s' % url)
|
||||
response = requests.request('PURGE', url)
|
||||
if not response.ok:
|
||||
logger.error('Failed to purge %s: %s' % (url, response.text))
|
||||
time.sleep(0.1)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
Loading…
Reference in New Issue