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

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

  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 web 
 18   
 19  from pulp.server.api.consumer_group import ConsumerGroupApi 
 20  from pulp.server.webservices.controllers.base import JSONController 
 21  from pulp.server.webservices.role_check import RoleCheck 
 22   
 23  # consumers api --------------------------------------------------------------- 
 24   
 25  api = ConsumerGroupApi() 
26 27 # controllers ----------------------------------------------------------------- 28 29 -class ConsumerGroups(JSONController):
30 31 @JSONController.error_handler 32 @RoleCheck(admin=True)
33 - def GET(self):
34 """ 35 List all available consumergroups. 36 @return: a list of all consumergroups 37 """ 38 # implement filters 39 return self.ok(api.consumergroups())
40 41 @JSONController.error_handler 42 @RoleCheck(admin=True)
43 - def PUT(self):
44 """ 45 Create a new consumer group. 46 @return: consumer group metadata on successful creation 47 """ 48 consumergroup_data = self.params() 49 consumergroup = api.create(consumergroup_data['id'], consumergroup_data['description'], 50 consumergroup_data['consumerids']) 51 return self.created(consumergroup['id'], consumergroup)
52 53 @JSONController.error_handler 54 @RoleCheck(admin=True)
55 - def DELETE(self):
56 """ 57 @return: True on successful deletion of all consumer groups 58 """ 59 api.clean() 60 return self.ok(True)
61
62 63 -class ConsumerGroup(JSONController):
64 65 @JSONController.error_handler 66 @RoleCheck(admin=True)
67 - def GET(self, id):
68 """ 69 Get a consumergroup's meta data. 70 @param id: consumer group id 71 @return: consumer group meta data 72 """ 73 return self.ok(api.consumergroup(id))
74 75 @JSONController.error_handler 76 @RoleCheck(admin=True)
77 - def PUT(self, id):
78 """ 79 Update consumer group 80 @param id: The consumer group id 81 """ 82 consumergroup = self.params() 83 consumergroup = api.update(consumergroup) 84 return self.ok(True)
85 86 @JSONController.error_handler 87 @RoleCheck(admin=True)
88 - def DELETE(self, id):
89 """ 90 Delete a consumer group. 91 @param id: consumer group id 92 @return: True on successful deletion of consumer 93 """ 94 api.delete(id=id) 95 return self.ok(True)
96
97 -class ConsumerGroupActions(JSONController):
98 99 # See pulp.webservices.repositories.RepositoryActions for design 100 101 exposed_actions = ( 102 'bind', 103 'unbind', 104 'add_consumer', 105 'delete_consumer', 106 'installpackages', 107 'installerrata', 108 ) 109
110 - def bind(self, id):
111 """ 112 Bind (subscribe) all the consumers in a consumergroup to a repository. 113 @param id: consumer group id 114 """ 115 data = self.params() 116 api.bind(id, data) 117 return self.ok(True)
118
119 - def unbind(self, id):
120 """ 121 Unbind (unsubscribe) all the consumers in a consumergroup from a repository. 122 @param id: consumer group id 123 """ 124 data = self.params() 125 api.unbind(id, data) 126 return self.ok(None)
127 128
129 - def add_consumer(self, id):
130 """ 131 Add a consumer to the group. 132 @param id: consumer group id 133 """ 134 data = self.params() 135 api.add_consumer(id, data) 136 return self.ok(True)
137
138 - def delete_consumer(self, id):
139 """ 140 Delete a consumer from the group. 141 @param id: consumer group id 142 """ 143 data = self.params() 144 api.delete_consumer(id, data) 145 return self.ok(None)
146 147
148 - def installpackages(self, id):
149 """ 150 Install packages. 151 Body contains a list of package names. 152 """ 153 data = self.params() 154 names = data.get('packagenames', []) 155 return self.ok(api.installpackages(id, names))
156
157 - def installerrata(self, id):
158 """ 159 Install applicable errata 160 Body contains a list of consumer groups 161 """ 162 data = self.params() 163 errataids = data.get('errataids', []) 164 types = data.get('types', []) 165 return self.ok(api.installerrata(id, errataids, types))
166 167 @JSONController.error_handler 168 @RoleCheck(admin=True)
169 - def POST(self, id, action_name):
170 """ 171 Consumer action dispatcher 172 @type id: str 173 @param id: controller id 174 @type action_name: str 175 @param action_name: action name 176 """ 177 action = getattr(self, action_name, None) 178 if action is None: 179 return self.internal_server_error('No implementation for %s found' % action_name) 180 return action(id)
181 182 183 # web.py application ---------------------------------------------------------- 184 185 URLS = ( 186 '/$', 'ConsumerGroups', 187 '/([^/]+)/$', 'ConsumerGroup', 188 '/([^/]+)/(%s)/$' % '|'.join(ConsumerGroupActions.exposed_actions), 189 'ConsumerGroupActions', 190 ) 191 192 application = web.application(URLS, globals()) 193