/
upload.py
42 lines (33 loc) · 1.32 KB
/
upload.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from pulp_rpm.app.shared_utils import _prepare_package
from pulp_rpm.app.models import Package
from pulpcore.app.models.task import CreatedResource
from pulpcore.app.models.content import ContentArtifact
from pulpcore.app.models.repository import RepositoryVersion
def one_shot_upload(artifact, filename, repository=None):
"""
One shot upload for RPM package.
Args:
artifact: validated artifact for a file
filename : name of file
repository: repository to extend with new pkg
"""
# export META from rpm and prepare dict as saveable format
try:
new_pkg = _prepare_package(artifact, filename)
except OSError:
raise OSError('RPM file cannot be parsed for metadata.')
pkg, created = Package.objects.get_or_create(**new_pkg)
if not created:
raise OSError('RPM package {} already exists.'.format(pkg.filename))
ContentArtifact.objects.create(
artifact=artifact,
content=pkg,
relative_path=filename
)
resource = CreatedResource(content_object=pkg)
resource.save()
if repository:
content_to_add = Package.objects.filter(pkgId=pkg.pkgId)
# create new repo version with uploaded package
with RepositoryVersion.create(repository) as new_version:
new_version.add_content(content_to_add)