Package pulp :: Package client :: Package core :: Module core_consumergroup
[hide private]
[frames] | no frames]

Source Code for Module pulp.client.core.core_consumergroup

  1  #!/usr/bin/python 
  2  # 
  3  # Pulp Repo management module 
  4  # 
  5  # Copyright (c) 2010 Red Hat, Inc. 
  6   
  7  # This software is licensed to you under the GNU General Public License, 
  8  # version 2 (GPLv2). There is NO WARRANTY for this software, express or 
  9  # implied, including the implied warranties of MERCHANTABILITY or FITNESS 
 10  # FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2 
 11  # along with this software; if not, see 
 12  # http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt. 
 13  # 
 14  # Red Hat trademarks are not licensed under GPLv2. No permission is 
 15  # granted to use or replicate Red Hat trademarks that are incorporated 
 16  # in this software or its documentation. 
 17  # 
 18   
 19  import os 
 20  import sys 
 21   
 22  import pulp.client.constants as constants 
 23  from pulp.client.core.basecore import BaseCore, systemExit 
 24  from pulp.client.connection import ConsumerGroupConnection, RestlibException 
 25  from pulp.client.logutil import getLogger 
 26  from pulp.client.repolib import RepoLib 
 27  from pulp.client.config import Config 
 28  CFG = Config() 
 29   
 30  import gettext 
 31  _ = gettext.gettext 
 32  log = getLogger(__name__) 
 33   
34 -class consumergroup(BaseCore):
35 - def __init__(self):
36 usage = "consumergroup [OPTIONS]" 37 shortdesc = "consumer group specific actions to pulp server." 38 desc = "" 39 self.name = "consumergroup" 40 self.actions = {"create" : "Create a consumer group", 41 "add_consumer" : "Add a consumer to the group", 42 "delete_consumer" : "Delete a consumer from the group", 43 "list" : "List available consumer groups", 44 "delete" : "Delete the consumer group", 45 "bind" : "Bind the consumer group to listed repos", 46 "unbind" : "Unbind the consumer group from repos",} 47 BaseCore.__init__(self, "consumergroup", usage, shortdesc, desc) 48 self.repolib = RepoLib()
49
50 - def load_server(self):
51 self.cgconn = ConsumerGroupConnection(host=CFG.server.host or "localhost", 52 port=CFG.server.port or 443, 53 username=self.username, 54 password=self.password, 55 cert_file=self.cert_filename, 56 key_file=self.key_filename)
57
58 - def generate_options(self):
59 self.action = self._get_action() 60 if self.action == "create": 61 usage = "consumergroup create [OPTIONS]" 62 self.setup_option_parser(usage, "", True) 63 self.parser.add_option("--id", dest="id", 64 help="consumer group id"), 65 self.parser.add_option("--description", dest="description", 66 help="description of consumer group") 67 self.parser.add_option("--consumerids", dest="consumerids", 68 help="consumer id list to be included in this group") 69 if self.action == "delete": 70 usage = "consumergroup delete [OPTIONS]" 71 self.setup_option_parser(usage, "", True) 72 self.parser.add_option("--id", dest="id", 73 help="Consumer group id") 74 if self.action == "list": 75 usage = "consumergroup list [OPTIONS]" 76 self.setup_option_parser(usage, "", True) 77 if self.action == "add_consumer": 78 usage = "consumergroup add_consumer [OPTIONS]" 79 self.setup_option_parser(usage, "", True) 80 self.parser.add_option("--consumerid", dest="consumerid", 81 help="Consumer Identifier") 82 self.parser.add_option("--id", dest="groupid", 83 help="Consumer Group Identifier") 84 if self.action == "delete_consumer": 85 usage = "consumergroup delete_consumer [OPTIONS]" 86 self.setup_option_parser(usage, "", True) 87 self.parser.add_option("--consumerid", dest="consumerid", 88 help="Consumer Identifier") 89 self.parser.add_option("--id", dest="groupid", 90 help="Consumer Group Identifier") 91 if self.action == "bind": 92 usage = "consumergroup bind [OPTIONS]" 93 self.setup_option_parser(usage, "", True) 94 self.parser.add_option("--repoid", dest="repoid", 95 help="Repo Identifier") 96 self.parser.add_option("--id", dest="groupid", 97 help="Consumer Group Identifier") 98 if self.action == "unbind": 99 usage = "consumergroup unbind [OPTIONS]" 100 self.setup_option_parser(usage, "", True) 101 self.parser.add_option("--repoid", dest="repoid", 102 help="Repo Identifier") 103 self.parser.add_option("--id", dest="groupid", 104 help="Consumer Group Identifier")
105
106 - def _do_core(self):
107 if self.action == "create": 108 self._create() 109 if self.action == "list": 110 self._list() 111 if self.action == "delete": 112 self._delete() 113 if self.action == "add_consumer": 114 self._add_consumer() 115 if self.action == "delete_consumer": 116 self._delete_consumer() 117 if self.action == "bind": 118 self._bind() 119 if self.action == "unbind": 120 self._unbind()
121
122 - def _create(self):
123 if not self.options.id: 124 print("consumer group id required. Try --help") 125 sys.exit(0) 126 if not self.options.description: 127 self.options.description = "" 128 if not self.options.consumerids: 129 print("Creating empty consumer group") 130 self.options.consumerids = [] 131 else: 132 self.options.consumerids = self.options.consumerids.split(",") 133 try: 134 consumergroup = self.cgconn.create(self.options.id, self.options.description, 135 self.options.consumerids) 136 print _(" Successfully created Consumer group [ %s ] with description [ %s ]" % \ 137 (consumergroup['id'], consumergroup["description"])) 138 except RestlibException, re: 139 log.error("Error: %s" % re) 140 systemExit(re.code, re.msg) 141 except Exception, e: 142 log.error("Error: %s" % e) 143 raise
144
145 - def _list(self):
146 try: 147 groups = self.cgconn.consumergroups() 148 if not len(groups): 149 print _("No consumer groups available to list") 150 sys.exit(0) 151 print """+-------------------------------------------+\n List of Available Consumer Groups \n+-------------------------------------------+""" 152 for group in groups: 153 print constants.AVAILABLE_CONSUMER_GROUP_INFO % (group["id"], group["description"], group["consumerids"] ) 154 except RestlibException, re: 155 log.error("Error: %s" % re) 156 systemExit(re.code, re.msg) 157 except Exception, e: 158 log.error("Error: %s" % e) 159 raise
160 161
162 - def _delete(self):
163 if not self.options.id: 164 print("Group id required. Try --help") 165 sys.exit(0) 166 group = self.cgconn.consumergroup(id=self.options.id) 167 if not group: 168 print _(" Consumer Group [ %s ] does not exist" % \ 169 self.options.id) 170 sys.exit(-1) 171 try: 172 self.cgconn.delete(id=self.options.id) 173 print _(" Successfully deleted Consumer Group [ %s ] " % self.options.id) 174 except RestlibException, re: 175 print _(" Delete operation failed Consumer Group [ %s ] " % \ 176 self.options.id) 177 log.error("Error: %s" % re) 178 sys.exit(-1) 179 except Exception, e: 180 print _(" Delete operation failed on Consumer Group [ %s ]. " % \ 181 self.options.id) 182 log.error("Error: %s" % e) 183 sys.exit(-1)
184 185
186 - def _add_consumer(self):
187 if not self.options.consumerid: 188 print("consumer id required. Try --help") 189 sys.exit(0) 190 if not self.options.groupid: 191 print("group id required. Try --help") 192 sys.exit(0) 193 try: 194 self.cgconn.add_consumer(self.options.groupid, self.options.consumerid) 195 print _(" Successfully added Consumer [%s] to Group [%s]" % (self.options.consumerid, self.options.groupid)) 196 except RestlibException, re: 197 print _(" Adding consumer failed ") 198 log.error("Error: %s" % re) 199 sys.exit(-1) 200 except Exception, e: 201 log.error("Error: %s" % e) 202 raise
203
204 - def _delete_consumer(self):
205 if not self.options.consumerid: 206 print("consumer id required. Try --help") 207 sys.exit(0) 208 if not self.options.groupid: 209 print("group id required. Try --help") 210 sys.exit(0) 211 try: 212 self.cgconn.delete_consumer(self.options.groupid, self.options.consumerid) 213 print _(" Successfully deleted Consumer [%s] from Group [%s]" % (self.options.consumerid, self.options.groupid)) 214 except RestlibException, re: 215 log.error("Error: %s" % re) 216 systemExit(re.code, re.msg) 217 except Exception, e: 218 log.error("Error: %s" % e) 219 raise
220
221 - def _bind(self):
222 if not self.options.groupid: 223 print("consumer group id required. Try --help") 224 sys.exit(0) 225 if not self.options.repoid: 226 print("repo id required. Try --help") 227 sys.exit(0) 228 try: 229 self.cgconn.bind(self.options.groupid, self.options.repoid) 230 self.repolib.update() 231 print _(" Successfully subscribed Consumer Group [%s] to Repo [%s]" % (self.options.groupid, self.options.repoid)) 232 except RestlibException, re: 233 log.error("Error: %s" % re) 234 systemExit(re.code, re.msg) 235 except Exception, e: 236 log.error("Error: %s" % e) 237 raise
238
239 - def _unbind(self):
240 if not self.options.groupid: 241 print("consumer group id required. Try --help") 242 sys.exit(0) 243 if not self.options.repoid: 244 print("repo id required. Try --help") 245 sys.exit(0) 246 try: 247 self.cgconn.unbind(self.options.groupid, self.options.repoid) 248 self.repolib.update() 249 print _(" Successfully unsubscribed Consumer Group [%s] from Repo [%s]" % (self.options.groupid, self.options.repoid)) 250 except RestlibException, re: 251 log.error("Error: %s" % re) 252 systemExit(re.code, re.msg) 253 except Exception, e: 254 log.error("Error: %s" % e) 255 raise
256