Package pulp :: Package server :: Package webservices :: Package controllers :: Module packages
[hide private]
[frames] | no frames]

Source Code for Module pulp.server.webservices.controllers.packages

  1  #!/usr/bin/env python 
  2  # -*- coding: utf-8 -*- 
  3  # 
  4  # Copyright © 2010 Red Hat, Inc. 
  5  # 
  6  # This software is licensed to you under the GNU General Public License, 
  7  # version 2 (GPLv2). There is NO WARRANTY for this software, express or 
  8  # implied, including the implied warranties of MERCHANTABILITY or FITNESS 
  9  # FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 
 10  # along with this software; if not, see 
 11  # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 
 12  # 
 13  # Red Hat trademarks are not licensed under GPLv2. No permission is 
 14  # granted to use or replicate Red Hat trademarks that are incorporated 
 15  # in this software or its documentation. 
 16   
 17  import logging 
 18   
 19  import web 
 20   
 21  from pulp.server.api.package import PackageApi 
 22  from pulp.server.webservices import mongo 
 23  from pulp.server.webservices.controllers.base import JSONController 
 24  from pulp.server.webservices.role_check import RoleCheck 
 25   
 26  # globals --------------------------------------------------------------------- 
 27   
 28  api = PackageApi() 
 29  log = logging.getLogger('pulp') 
30 31 # packages controllers -------------------------------------------------------- 32 33 -class Packages(JSONController):
34 35 @JSONController.error_handler 36 @RoleCheck(admin=True)
37 - def GET(self):
38 """ 39 List available packages. 40 @return: a list of packages 41 """ 42 valid_filters = ('id', 'name') 43 filters = self.filters(valid_filters) 44 spec = mongo.filters_to_re_spec(filters) 45 return self.ok(api.package_descriptions(spec))
46 47 @JSONController.error_handler 48 @RoleCheck(admin=True)
49 - def DELETE(self):
50 """ 51 Delete all packages. 52 @return: True on success 53 """ 54 api.clean() 55 return self.ok(True)
56 57 @JSONController.error_handler 58 @RoleCheck(admin=True)
59 - def PUT(self):
60 """ 61 Create a new package. 62 @return: package meta data on successful creation of package 63 """ 64 data = self.params() 65 package = api.create(data['name'], data['epoch'],data['version'], 66 data['release'], data['arch'], data['description'], 67 data['checksum_type'], data['checksum'], data['filename']) 68 return self.created(None, package)
69
70 71 -class Package(JSONController):
72 73 @JSONController.error_handler 74 @RoleCheck(admin=True)
75 - def GET(self, id):
76 """ 77 Get information on a sinble package. 78 @param id: package id 79 @return: package meta data corresponding to id 80 """ 81 return self.ok(api.package(id))
82 83 @JSONController.error_handler
84 - def DELETE(self, id):
85 ''' 86 @param id: package id 87 ''' 88 api.delete(id) 89 return self.ok(True)
90
91 92 -class PackageDeferredFields(JSONController):
93 94 # NOTE the intersection of exposed_fields and exposed_actions must be empty 95 exposed_fields = ( 96 ) 97 98 @JSONController.error_handler 99 @RoleCheck(admin=True)
100 - def GET(self, id, field_name):
101 field = getattr(self, field_name, None) 102 if field is None: 103 return self.internal_server_error('No implementation for %s found' % field_name) 104 return field(id)
105
106 107 -class PackageActions(JSONController):
108 109 # See pulp.webservices.repositories.RepositoryActions for design 110 111 # NOTE the intersection of exposed_actions and exposed_fields must be empty 112 exposed_actions = ( 113 ) 114 115 @JSONController.error_handler 116 @RoleCheck(admin=True)
117 - def POST(self, id, action_name):
118 action = getattr(self, action_name, None) 119 if action is None: 120 self.internal_server_error('No implementation for %s found' % action_name) 121 return action(id)
122
123 124 -class Versions(JSONController):
125 126 @JSONController.error_handler 127 @RoleCheck(admin=True)
128 - def GET(self, name, version, release, epoch, arch):
129 pv = api.package_by_ivera(name, version, epoch, release, arch) 130 return self.ok(pv)
131 132 # web.py application ---------------------------------------------------------- 133 134 URLS = ( 135 '/$', 'Packages', 136 '/([^/]+)/$', 'Package', 137 #'/([^/]+)/(%s)/$' % '|'.join(PackageDeferredFields.exposed_fields), 'PackageDeferredFields', 138 #'/([^/]+)/(%s)/$' % '|'.join(PackageActions.exposed_actions), 'PackageActions', 139 '/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/', 'Versions', 140 ) 141 142 application = web.application(URLS, globals()) 143