Mercurial > hg > orthanc-wsi
diff Resources/OrthancWSIClearCache.py @ 73:a8c90aa32ca6
LRU caching of pyramids, OrthancWSIClearCache script
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 28 Nov 2016 16:51:19 +0100 |
parents | |
children | ff0ef01c332c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/OrthancWSIClearCache.py Mon Nov 28 16:51:19 2016 +0100 @@ -0,0 +1,77 @@ +#!/usr/bin/python + +# Orthanc - A Lightweight, RESTful DICOM Store +# Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics +# Department, University Hospital of Liege, Belgium +# +# This program is free software: you can redistribute it and/or +# modify it under the terms of the GNU Affero General Public License +# as published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + +import base64 +import httplib2 +import json +import os +import sys + +if len(sys.argv) != 3 and len(sys.argv) != 5: + print(""" +Script to reinitialize the cache of the whole-slide imaging plugin for +Orthanc. Please make sure that Orthanc is running before starting this +script. + +Usage: %s [hostname] [HTTP port] +Usage: %s [hostname] [HTTP port] [username] [password] +For instance: %s 127.0.0.1 8042 +""" % (sys.argv[0], sys.argv[0], sys.argv[0])) + exit(-1) + + +METADATA=4200 + + +def RunHttpRequest(uri, method, body = None): + http = httplib2.Http() + headers = { } + + if len(sys.argv) == 5: + username = sys.argv[4] + password = sys.argv[5] + + # h.add_credentials(username, password) + + # This is a custom reimplementation of the + # "Http.add_credentials()" method for Basic HTTP Access + # Authentication (for some weird reason, this method does not + # always work) + # http://en.wikipedia.org/wiki/Basic_access_authentication + headers['authorization'] = 'Basic ' + base64.b64encode(username + ':' + password) + + url = 'http://%s:%d/%s' % (sys.argv[1], int(sys.argv[2]), uri) + resp, content = http.request(url, method, + body = body, + headers = headers) + + if resp.status != 200: + raise Exception('Cannot %s on URL %s, HTTP status %d ' + '(Is Orthanc running? Is there a password?)' % + (method, url, resp.status)) + else: + return content.decode('utf8') + + +for instance in json.loads(RunHttpRequest('/instances', 'GET')): + print('Clearing cache for instance %s' % instance) + RunHttpRequest('/instances/%s/metadata/%s' % (instance, METADATA), 'DELETE') + +print('The WSI cache was successfully cleared')