Package pulp :: Package server :: Package api :: Module package
[hide private]
[frames] | no frames]

Source Code for Module pulp.server.api.package

  1  #!/usr/bin/python 
  2  # 
  3  # Copyright (c) 2010 Red Hat, Inc. 
  4  # 
  5  # This software is licensed to you under the GNU General Public License, 
  6  # version 2 (GPLv2). There is NO WARRANTY for this software, express or 
  7  # implied, including the implied warranties of MERCHANTABILITY or FITNESS 
  8  # FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 
  9  # along with this software; if not, see 
 10  # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 
 11  # 
 12  # Red Hat trademarks are not licensed under GPLv2. No permission is 
 13  # granted to use or replicate Red Hat trademarks that are incorporated 
 14  # in this software or its documentation. 
 15   
 16  import pymongo 
 17   
 18  # Pulp 
 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() 
26 27 28 -class PackageApi(BaseApi):
29
30 - def __init__(self):
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
43 - def _unique_indexes(self):
44 return []
45 46 @property
47 - def _indexes(self):
48 return ["name", "filename", "checksum", "epoch", "version", "release", 49 "arch", "description"]
50
51 - def _getcollection(self):
52 return get_object_db('packages', 53 self._unique_indexes, 54 self._indexes)
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()
69 - def delete(self, id):
70 """ 71 Delete package version object based on "_id" key 72 """ 73 BaseApi.delete(self, _id=id)
74
75 - def package(self, id):
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
106 - def package_by_ivera(self, name, version, epoch, release, arch):
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
113 - def package_descriptions(self, spec=None):
114 ''' 115 List of all package names and descriptions (will not contain package 116 version information). 117 ''' 118 #return list(self.objectdb.find({}, {'name' : True, 'description' : True,})) 119 return list(self.objectdb.find(spec, ['id', 'name', 'description']))
120