27 lines
912 B
Python
27 lines
912 B
Python
#!/usr/bin/env python3
|
|
"""Validate the local Red Hat CSAF mirror."""
|
|
import argparse
|
|
import json
|
|
from pathlib import Path
|
|
|
|
|
|
def validate(root):
|
|
root = Path(root)
|
|
state = root / 'state/sync.json'
|
|
if not state.exists():
|
|
raise RuntimeError('Sync state missing')
|
|
obj = json.loads(state.read_text())
|
|
files = list((root / 'data/csaf').glob('*/*.json'))
|
|
if not files:
|
|
raise RuntimeError('No CSAF documents present')
|
|
for path in files:
|
|
data = json.loads(path.read_bytes())
|
|
if not isinstance(data, dict) or not isinstance(data.get('document'), dict):
|
|
raise RuntimeError(f'Invalid CSAF document: {path}')
|
|
print(f'Validated {len(files)} Red Hat CSAF documents; source index entries: {obj["index_count"]}')
|
|
|
|
if __name__ == '__main__':
|
|
ap = argparse.ArgumentParser()
|
|
ap.add_argument('--root', default='.')
|
|
validate(ap.parse_args().root)
|