import sys
import boto3
+from boto3.s3.transfer import TransferConfig
import botocore
import prettytable
import requests
dir_results = "/var/lib/xtesting/results"
_job_name_rule = "(dai|week)ly-(.+?)-[0-9]*"
- _headers = {'Content-Type': 'application/json'}
+ headers = {'Content-Type': 'application/json'}
__logger = logging.getLogger(__name__)
def __init__(self, **kwargs):
data["version"] = "unknown"
req = requests.post(
url, data=json.dumps(data, sort_keys=True),
- headers=self._headers)
+ headers=self.headers)
req.raise_for_status()
if urllib.parse.urlparse(url).scheme != "file":
- res_url = req.json()["href"]
- if env.get('TEST_DB_EXT_URL'):
- res_url = res_url.replace(
- env.get('TEST_DB_URL'), env.get('TEST_DB_EXT_URL'))
+ # href must be postprocessed as OPNFV testapi is misconfigured
+ # (localhost is returned)
+ uid = re.sub(r'^.*/api/v1/results/*', '', req.json()["href"])
+ netloc = env.get('TEST_DB_EXT_URL') if env.get(
+ 'TEST_DB_EXT_URL') else env.get('TEST_DB_URL')
self.__logger.info(
"The results were successfully pushed to DB: \n\n%s\n",
- res_url)
+ os.path.join(netloc, uid))
except AssertionError:
self.__logger.exception(
"Please run test before publishing the results")
b3resource = boto3.resource(
's3', endpoint_url=os.environ["S3_ENDPOINT_URL"])
dst_s3_url = os.environ["S3_DST_URL"]
+ multipart_threshold = 5 * 1024 ** 5 if "google" in os.environ[
+ "S3_ENDPOINT_URL"] else 8 * 1024 * 1024
+ config = TransferConfig(multipart_threshold=multipart_threshold)
bucket_name = urllib.parse.urlparse(dst_s3_url).netloc
try:
b3resource.meta.client.head_bucket(Bucket=bucket_name)
"Publishing %s %s", abs_file, mime_type)
# pylint: disable=no-member
b3resource.Bucket(bucket_name).upload_file(
- abs_file,
- os.path.join(path, log_file),
+ abs_file, os.path.join(path, log_file), Config=config,
ExtraArgs={'ContentType': mime_type[
0] or 'application/octet-stream'})
link = os.path.join(dst_http_url, log_file)
os.path.join(path, os.path.relpath(
os.path.join(root, pub_file),
start=self.dir_results)),
+ Config=config,
ExtraArgs={'ContentType': mime_type[
0] or 'application/octet-stream'})
link = os.path.join(dst_http_url, os.path.relpath(