Change validate method to work for all storages
This commit is contained in:
parent
c30b8dd1ad
commit
770ac0016e
4 changed files with 11 additions and 16 deletions
|
@ -42,9 +42,12 @@ class BaseStorage(StoragePaths):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def validate(self, client):
|
def validate(self, client):
|
||||||
""" Called to perform any custom storage system validation. The client is an HTTP
|
""" Called to perform storage system validation. The client is an HTTP
|
||||||
client to use for any external calls. """
|
client to use for any external calls. """
|
||||||
pass
|
# Put a temporary file to make sure the normal storage paths work.
|
||||||
|
self.put_content('_verify', 'testing 123')
|
||||||
|
if not self.exists('_verify'):
|
||||||
|
raise Exception('Could not find verification file')
|
||||||
|
|
||||||
def get_direct_download_url(self, path, expires_in=60, requires_cors=False, head=False):
|
def get_direct_download_url(self, path, expires_in=60, requires_cors=False, head=False):
|
||||||
return None
|
return None
|
||||||
|
|
|
@ -115,6 +115,8 @@ class LocalStorage(BaseStorageV2):
|
||||||
os.remove(content_path)
|
os.remove(content_path)
|
||||||
|
|
||||||
def validate(self, client):
|
def validate(self, client):
|
||||||
|
super(LocalStorage, self).validate()
|
||||||
|
|
||||||
# Load the set of disk mounts.
|
# Load the set of disk mounts.
|
||||||
try:
|
try:
|
||||||
mounts = psutil.disk_partitions(all=True)
|
mounts = psutil.disk_partitions(all=True)
|
||||||
|
|
|
@ -157,23 +157,17 @@ class SwiftStorage(BaseStorage):
|
||||||
return surl.format(scheme=scheme, host=hostname, full_path=full_path, sig=sig, expires=expires)
|
return surl.format(scheme=scheme, host=hostname, full_path=full_path, sig=sig, expires=expires)
|
||||||
|
|
||||||
def validate(self, client):
|
def validate(self, client):
|
||||||
if self._temp_url_key:
|
super(SwiftStorage, self).validate()
|
||||||
# Add a file to test direct download.
|
|
||||||
self.put_content('dd_path', 'testing 3456')
|
|
||||||
|
|
||||||
|
if self._temp_url_key:
|
||||||
# Generate a direct download URL.
|
# Generate a direct download URL.
|
||||||
dd_url = self.get_direct_download_url('dd_path')
|
dd_url = self.get_direct_download_url('_verify')
|
||||||
|
|
||||||
if not dd_url:
|
if not dd_url:
|
||||||
self.remove('dd_path')
|
|
||||||
raise Exception('Could not validate direct download URL; the token may be invalid.')
|
raise Exception('Could not validate direct download URL; the token may be invalid.')
|
||||||
|
|
||||||
# Try to retrieve the direct download URL.
|
# Try to retrieve the direct download URL.
|
||||||
response = client.get(dd_url, timeout=2)
|
response = client.get(dd_url, timeout=2)
|
||||||
|
|
||||||
# Remove the test file.
|
|
||||||
self.remove('dd_path')
|
|
||||||
|
|
||||||
if response.status_code != 200:
|
if response.status_code != 200:
|
||||||
logger.debug('Direct download failure: %s => %s with body %s', dd_url,
|
logger.debug('Direct download failure: %s => %s with body %s', dd_url,
|
||||||
response.status_code, response.text)
|
response.status_code, response.text)
|
||||||
|
|
|
@ -107,13 +107,9 @@ def _validate_registry_storage(config, _):
|
||||||
if replication_enabled and storage_type == 'LocalStorage':
|
if replication_enabled and storage_type == 'LocalStorage':
|
||||||
raise Exception('Locally mounted directory not supported with storage replication')
|
raise Exception('Locally mounted directory not supported with storage replication')
|
||||||
|
|
||||||
# Run custom validation on the driver.
|
# Run validation on the driver.
|
||||||
driver.validate(app.config['HTTPCLIENT'])
|
driver.validate(app.config['HTTPCLIENT'])
|
||||||
|
|
||||||
# Put and remove a temporary file to make sure the normal storage paths work.
|
|
||||||
driver.put_content('_verify', 'testing 123')
|
|
||||||
driver.remove('_verify')
|
|
||||||
|
|
||||||
# Run setup on the driver if the read/write succeeded.
|
# Run setup on the driver if the read/write succeeded.
|
||||||
driver.setup()
|
driver.setup()
|
||||||
except Exception as ex:
|
except Exception as ex:
|
||||||
|
|
Reference in a new issue