1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 import pymongo
17
18
19 from pulp.server.api.base import BaseApi
20 from pulp.server.auditing import audit
21 from pulp.server.db import model
22 from pulp.server.db.connection import get_object_db
23
24
25 package_fields = model.Package(None, None, None, None, None, None, None, None, None).keys()
29
31 BaseApi.__init__(self)
32 self.objectdb.ensure_index([('name', pymongo.DESCENDING),
33 ('epoch', pymongo.DESCENDING),
34 ('version', pymongo.DESCENDING),
35 ('release', pymongo.DESCENDING),
36 ('arch', pymongo.DESCENDING),
37 ('filename', pymongo.DESCENDING),
38 ('checksum', pymongo.DESCENDING)],
39 unique=True, background=True)
40
41
42 @property
45
46 @property
48 return ["name", "filename", "checksum", "epoch", "version", "release",
49 "arch", "description"]
50
55
56
57 @audit()
58 - def create(self, name, epoch, version, release, arch, description,
59 checksum_type, checksum, filename):
60 """
61 Create a new Package object and return it
62 """
63 p = model.Package(name, epoch, version, release, arch, description,
64 checksum_type, checksum, filename)
65 self.insert(p)
66 return p
67
68 @audit()
70 """
71 Delete package version object based on "_id" key
72 """
73 BaseApi.delete(self, _id=id)
74
76 """
77 Return a single Package object based on the id
78 """
79 return self.objectdb.find_one({'id': id})
80
81 - def packages(self, name=None, epoch=None, version=None, release=None, arch=None,
82 filename=None, checksum_type=None, checksum=None):
83 """
84 Return a list of all package version objects matching search terms
85 """
86 searchDict = {}
87 if name:
88 searchDict['name'] = name
89 if epoch:
90 searchDict['epoch'] = epoch
91 if version:
92 searchDict['version'] = version
93 if release:
94 searchDict['release'] = release
95 if arch:
96 searchDict['arch'] = arch
97 if filename:
98 searchDict['filename'] = filename
99 if checksum_type and checksum:
100 searchDict['checksum.%s' % checksum_type] = checksum
101 if (len(searchDict.keys()) == 0):
102 return list(self.objectdb.find())
103 else:
104 return list(self.objectdb.find(searchDict))
105
107 """
108 Returns the package version identified by the given package and VERA.
109 """
110 return self.objectdb.find_one({'name' : name, 'version' : version,
111 'epoch' : epoch, 'release' : release, 'arch' : arch,})
112
114 '''
115 List of all package names and descriptions (will not contain package
116 version information).
117 '''
118
119 return list(self.objectdb.find(spec, ['id', 'name', 'description']))
120