Merge "Merge upload logs modules into common role"
This commit is contained in:
commit
effff59852
.ansible-lint
roles
upload-logs-base
README.rst__init__.py
library
__init__.pydelete_swift_container.py
test-fixtures
test_zuul_google_storage_upload.pytest_zuul_s3_upload.pytest_zuul_swift_upload.pyzuul_google_storage_upload.pyzuul_s3_upload.pyzuul_swift_upload.pyupload-logs-gcs/meta
upload-logs-s3
upload-logs-swift
@ -9,6 +9,7 @@ skip_list:
|
||||
# should enable it once all issues in zuul-jobs and
|
||||
# ansible-lint are fixed.
|
||||
- '301' # Commands should not change things if nothing needs doing
|
||||
- '701' # No 'galaxy_info' found
|
||||
warn_list:
|
||||
- '208' # File permissions not mentioned
|
||||
rulesdir:
|
||||
|
4
roles/upload-logs-base/README.rst
Normal file
4
roles/upload-logs-base/README.rst
Normal file
@ -0,0 +1,4 @@
|
||||
Common library role for upload logs roles
|
||||
|
||||
This role contains the libraries and common code used by the
|
||||
upload-logs roles.
|
Before (image error) Size: 52 B After (image error) Size: 52 B |
@ -19,12 +19,15 @@ from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
import os
|
||||
import six
|
||||
import testtools
|
||||
import time
|
||||
import stat
|
||||
import fixtures
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
from testtools import skip
|
||||
|
||||
from .zuul_google_storage_upload import FileList, Indexer, FileDetail
|
||||
from .zuul_google_storage_upload import Credentials
|
||||
|
||||
@ -56,12 +59,15 @@ class TestFileList(testtools.TestCase):
|
||||
def assert_files(self, result, files):
|
||||
self.assertEqual(len(result), len(files))
|
||||
for expected, received in zip(files, result):
|
||||
self.assertEqual(expected[0], received.relative_path)
|
||||
if expected[0] and expected[0][-1] == '/':
|
||||
e = expected[0]
|
||||
if six.PY2:
|
||||
e = e.encode('utf-8')
|
||||
self.assertEqual(e, received.relative_path)
|
||||
if e and e[0][-1] == '/':
|
||||
efilename = os.path.split(
|
||||
os.path.dirname(expected[0]))[1] + '/'
|
||||
os.path.dirname(e))[1] + '/'
|
||||
else:
|
||||
efilename = os.path.split(expected[0])[1]
|
||||
efilename = os.path.split(e)[1]
|
||||
self.assertEqual(efilename, received.filename)
|
||||
if received.folder:
|
||||
if received.full_path is not None and expected[0] != '':
|
||||
@ -86,6 +92,8 @@ class TestFileList(testtools.TestCase):
|
||||
('controller', 'application/directory', None),
|
||||
('zuul-info', 'application/directory', None),
|
||||
('job-output.json', 'application/json', None),
|
||||
(u'\u13c3\u0e9a\u0e9a\u03be-unicode.txt',
|
||||
'text/plain', None),
|
||||
('controller/subdir', 'application/directory', None),
|
||||
('controller/compressed.gz', 'text/plain', 'gzip'),
|
||||
('controller/cpu-load.svg', 'image/svg+xml', None),
|
||||
@ -108,6 +116,8 @@ class TestFileList(testtools.TestCase):
|
||||
('logs/controller', 'application/directory', None),
|
||||
('logs/zuul-info', 'application/directory', None),
|
||||
('logs/job-output.json', 'application/json', None),
|
||||
(u'logs/\u13c3\u0e9a\u0e9a\u03be-unicode.txt',
|
||||
'text/plain', None),
|
||||
('logs/controller/subdir', 'application/directory', None),
|
||||
('logs/controller/compressed.gz', 'text/plain', 'gzip'),
|
||||
('logs/controller/cpu-load.svg', 'image/svg+xml', None),
|
||||
@ -131,6 +141,7 @@ class TestFileList(testtools.TestCase):
|
||||
('inventory.yaml', 'text/plain', None),
|
||||
])
|
||||
|
||||
@skip('Temporarily disabled due to race conditions.')
|
||||
def test_symlinks(self):
|
||||
'''Test symlinks'''
|
||||
with FileList() as fl:
|
||||
@ -164,6 +175,8 @@ class TestFileList(testtools.TestCase):
|
||||
('logs/controller', 'application/directory', None),
|
||||
('logs/zuul-info', 'application/directory', None),
|
||||
('logs/job-output.json', 'application/json', None),
|
||||
(u'logs/\u13c3\u0e9a\u0e9a\u03be-unicode.txt',
|
||||
'text/plain', None),
|
||||
('logs/index.html', 'text/html', None),
|
||||
('logs/controller/subdir', 'application/directory', None),
|
||||
('logs/controller/compressed.gz', 'text/plain', 'gzip'),
|
||||
@ -218,6 +231,8 @@ class TestFileList(testtools.TestCase):
|
||||
('controller', 'application/directory', None),
|
||||
('zuul-info', 'application/directory', None),
|
||||
('job-output.json', 'application/json', None),
|
||||
(u'\u13c3\u0e9a\u0e9a\u03be-unicode.txt',
|
||||
'text/plain', None),
|
||||
('index.html', 'text/html', None),
|
||||
('controller/subdir', 'application/directory', None),
|
||||
('controller/compressed.gz', 'text/plain', 'gzip'),
|
||||
@ -239,7 +254,7 @@ class TestFileList(testtools.TestCase):
|
||||
page = BeautifulSoup(page, 'html.parser')
|
||||
rows = page.find_all('tr')[1:]
|
||||
|
||||
self.assertEqual(len(rows), 3)
|
||||
self.assertEqual(len(rows), 4)
|
||||
|
||||
self.assertEqual(rows[0].find('a').get('href'),
|
||||
'controller/index.html')
|
||||
@ -277,6 +292,8 @@ class TestFileList(testtools.TestCase):
|
||||
('controller', 'application/directory', None),
|
||||
('zuul-info', 'application/directory', None),
|
||||
('job-output.json', 'application/json', None),
|
||||
(u'\u13c3\u0e9a\u0e9a\u03be-unicode.txt',
|
||||
'text/plain', None),
|
||||
('index.html', 'text/html', None),
|
||||
('controller/subdir', 'application/directory', None),
|
||||
('controller/compressed.gz', 'text/plain', 'gzip'),
|
||||
@ -298,7 +315,7 @@ class TestFileList(testtools.TestCase):
|
||||
page = BeautifulSoup(page, 'html.parser')
|
||||
rows = page.find_all('tr')[1:]
|
||||
|
||||
self.assertEqual(len(rows), 4)
|
||||
self.assertEqual(len(rows), 5)
|
||||
|
||||
self.assertEqual(rows[0].find('a').get('href'),
|
||||
'../index.html')
|
||||
@ -340,6 +357,8 @@ class TestFileList(testtools.TestCase):
|
||||
('controller', 'application/directory', None),
|
||||
('zuul-info', 'application/directory', None),
|
||||
('job-output.json', 'application/json', None),
|
||||
(u'\u13c3\u0e9a\u0e9a\u03be-unicode.txt',
|
||||
'text/plain', None),
|
||||
('index.html', 'text/html', None),
|
||||
('controller/subdir', 'application/directory', None),
|
||||
('controller/compressed.gz', 'text/plain', 'gzip'),
|
||||
@ -361,7 +380,7 @@ class TestFileList(testtools.TestCase):
|
||||
page = BeautifulSoup(page, 'html.parser')
|
||||
rows = page.find_all('tr')[1:]
|
||||
|
||||
self.assertEqual(len(rows), 3)
|
||||
self.assertEqual(len(rows), 4)
|
||||
|
||||
self.assertEqual(rows[0].find('a').get('href'),
|
||||
'controller/index.html')
|
||||
@ -410,7 +429,7 @@ class TestFileDetail(testtools.TestCase):
|
||||
class TestCredential(testtools.TestCase):
|
||||
|
||||
def test_credential(self):
|
||||
path = os.path.join(FIXTURE_DIR, 'auth.json')
|
||||
path = os.path.join(FIXTURE_DIR, 'gcs', 'auth.json')
|
||||
headers = {}
|
||||
c = Credentials(path)
|
||||
c.before_request(None, None, None, headers)
|
@ -6,12 +6,15 @@ from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
import os
|
||||
import six
|
||||
import testtools
|
||||
import time
|
||||
import stat
|
||||
import fixtures
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
from testtools import skip
|
||||
|
||||
from .zuul_s3_upload import FileList, Indexer, FileDetail
|
||||
|
||||
|
||||
@ -42,12 +45,15 @@ class TestFileList(testtools.TestCase):
|
||||
def assert_files(self, result, files):
|
||||
self.assertEqual(len(result), len(files))
|
||||
for expected, received in zip(files, result):
|
||||
self.assertEqual(expected[0], received.relative_path)
|
||||
if expected[0] and expected[0][-1] == '/':
|
||||
e = expected[0]
|
||||
if six.PY2:
|
||||
e = e.encode('utf-8')
|
||||
self.assertEqual(e, received.relative_path)
|
||||
if e and e[0][-1] == '/':
|
||||
efilename = os.path.split(
|
||||
os.path.dirname(expected[0]))[1] + '/'
|
||||
os.path.dirname(e))[1] + '/'
|
||||
else:
|
||||
efilename = os.path.split(expected[0])[1]
|
||||
efilename = os.path.split(e)[1]
|
||||
self.assertEqual(efilename, received.filename)
|
||||
if received.folder:
|
||||
if received.full_path is not None and expected[0] != '':
|
||||
@ -72,6 +78,8 @@ class TestFileList(testtools.TestCase):
|
||||
('controller', 'application/directory', None),
|
||||
('zuul-info', 'application/directory', None),
|
||||
('job-output.json', 'application/json', None),
|
||||
(u'\u13c3\u0e9a\u0e9a\u03be-unicode.txt',
|
||||
'text/plain', None),
|
||||
('controller/subdir', 'application/directory', None),
|
||||
('controller/compressed.gz', 'text/plain', 'gzip'),
|
||||
('controller/cpu-load.svg', 'image/svg+xml', None),
|
||||
@ -94,6 +102,8 @@ class TestFileList(testtools.TestCase):
|
||||
('logs/controller', 'application/directory', None),
|
||||
('logs/zuul-info', 'application/directory', None),
|
||||
('logs/job-output.json', 'application/json', None),
|
||||
(u'logs/\u13c3\u0e9a\u0e9a\u03be-unicode.txt',
|
||||
'text/plain', None),
|
||||
('logs/controller/subdir', 'application/directory', None),
|
||||
('logs/controller/compressed.gz', 'text/plain', 'gzip'),
|
||||
('logs/controller/cpu-load.svg', 'image/svg+xml', None),
|
||||
@ -117,6 +127,7 @@ class TestFileList(testtools.TestCase):
|
||||
('inventory.yaml', 'text/plain', None),
|
||||
])
|
||||
|
||||
@skip('Temporarily disabled due to race conditions.')
|
||||
def test_symlinks(self):
|
||||
'''Test symlinks'''
|
||||
with FileList() as fl:
|
||||
@ -150,6 +161,8 @@ class TestFileList(testtools.TestCase):
|
||||
('logs/controller', 'application/directory', None),
|
||||
('logs/zuul-info', 'application/directory', None),
|
||||
('logs/job-output.json', 'application/json', None),
|
||||
(u'logs/\u13c3\u0e9a\u0e9a\u03be-unicode.txt',
|
||||
'text/plain', None),
|
||||
('logs/index.html', 'text/html', None),
|
||||
('logs/controller/subdir', 'application/directory', None),
|
||||
('logs/controller/compressed.gz', 'text/plain', 'gzip'),
|
||||
@ -204,6 +217,8 @@ class TestFileList(testtools.TestCase):
|
||||
('controller', 'application/directory', None),
|
||||
('zuul-info', 'application/directory', None),
|
||||
('job-output.json', 'application/json', None),
|
||||
(u'\u13c3\u0e9a\u0e9a\u03be-unicode.txt',
|
||||
'text/plain', None),
|
||||
('index.html', 'text/html', None),
|
||||
('controller/subdir', 'application/directory', None),
|
||||
('controller/compressed.gz', 'text/plain', 'gzip'),
|
||||
@ -225,7 +240,7 @@ class TestFileList(testtools.TestCase):
|
||||
page = BeautifulSoup(page, 'html.parser')
|
||||
rows = page.find_all('tr')[1:]
|
||||
|
||||
self.assertEqual(len(rows), 3)
|
||||
self.assertEqual(len(rows), 4)
|
||||
|
||||
self.assertEqual(rows[0].find('a').get('href'),
|
||||
'controller/index.html')
|
||||
@ -263,6 +278,8 @@ class TestFileList(testtools.TestCase):
|
||||
('controller', 'application/directory', None),
|
||||
('zuul-info', 'application/directory', None),
|
||||
('job-output.json', 'application/json', None),
|
||||
(u'\u13c3\u0e9a\u0e9a\u03be-unicode.txt',
|
||||
'text/plain', None),
|
||||
('index.html', 'text/html', None),
|
||||
('controller/subdir', 'application/directory', None),
|
||||
('controller/compressed.gz', 'text/plain', 'gzip'),
|
||||
@ -284,7 +301,7 @@ class TestFileList(testtools.TestCase):
|
||||
page = BeautifulSoup(page, 'html.parser')
|
||||
rows = page.find_all('tr')[1:]
|
||||
|
||||
self.assertEqual(len(rows), 4)
|
||||
self.assertEqual(len(rows), 5)
|
||||
|
||||
self.assertEqual(rows[0].find('a').get('href'),
|
||||
'../index.html')
|
||||
@ -326,6 +343,8 @@ class TestFileList(testtools.TestCase):
|
||||
('controller', 'application/directory', None),
|
||||
('zuul-info', 'application/directory', None),
|
||||
('job-output.json', 'application/json', None),
|
||||
(u'\u13c3\u0e9a\u0e9a\u03be-unicode.txt',
|
||||
'text/plain', None),
|
||||
('index.html', 'text/html', None),
|
||||
('controller/subdir', 'application/directory', None),
|
||||
('controller/compressed.gz', 'text/plain', 'gzip'),
|
||||
@ -347,7 +366,7 @@ class TestFileList(testtools.TestCase):
|
||||
page = BeautifulSoup(page, 'html.parser')
|
||||
rows = page.find_all('tr')[1:]
|
||||
|
||||
self.assertEqual(len(rows), 3)
|
||||
self.assertEqual(len(rows), 4)
|
||||
|
||||
self.assertEqual(rows[0].find('a').get('href'),
|
||||
'controller/index.html')
|
2
roles/upload-logs-gcs/meta/main.yaml
Normal file
2
roles/upload-logs-gcs/meta/main.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
dependencies:
|
||||
- role: upload-logs-base
|
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
||||
{"test": "foo"}
|
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg>
|
||||
</svg>
|
Before (image error) Size: 52 B |
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
This is a plan text file with a funny name.
|
||||
The index links should escape the :'s.
|
@ -1 +0,0 @@
|
||||
{"test": "foo"}
|
2
roles/upload-logs-s3/meta/main.yaml
Normal file
2
roles/upload-logs-s3/meta/main.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
dependencies:
|
||||
- role: upload-logs-base
|
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
||||
{"test": "foo"}
|
Binary file not shown.
@ -1,3 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg>
|
||||
</svg>
|
Before (image error) Size: 52 B |
Binary file not shown.
@ -1,2 +0,0 @@
|
||||
This is a plan text file with a funny name.
|
||||
The index links should escape the :'s.
|
@ -1 +0,0 @@
|
||||
{"test": "foo"}
|
2
roles/upload-logs-swift/meta/main.yaml
Normal file
2
roles/upload-logs-swift/meta/main.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
dependencies:
|
||||
- role: upload-logs-base
|
Loading…
x
Reference in New Issue
Block a user