Skip to content

Commit

Permalink
Merge pull request #179 from candlepin/crog/1366301
Browse files Browse the repository at this point in the history
1366301: Entitlement regeneration no longer propagates server errors
  • Loading branch information
vritant committed Aug 25, 2016
2 parents f18c723 + 264bf38 commit 55a7d0a
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 8 deletions.
40 changes: 38 additions & 2 deletions src/rhsm/connection.py
Original file line number Diff line number Diff line change
Expand Up @@ -1345,20 +1345,56 @@ def regenIdCertificate(self, consumerId):
return self.conn.request_post(method)

def regenEntitlementCertificates(self, consumer_id, lazy_regen=True):
"""
Regenerates all entitlements for the given consumer
"""

method = "/consumers/%s/certificates" % self.sanitize(consumer_id)

if lazy_regen:
method += "?lazy_regen=true"

return self.conn.request_put(method)
result = False

try:
self.conn.request_put(method)
result = True
except (RemoteServerException, httpslib.BadStatusLine) as e:
# 404s indicate that the service is unsupported (Candlepin too old, or SAM)
if isinstance(e, httpslib.BadStatusLine) or e.code == 404:
log.debug("Unable to refresh entitlement certificates: Service currently unsupported.")
log.debug(e)
else:
# Something else happened that we should probabaly raise
raise e

return result

def regenEntitlementCertificate(self, consumer_id, entitlement_id, lazy_regen=True):
"""
Regenerates the specified entitlement for the given consumer
"""

method = "/consumers/%s/certificates?entitlement=%s" % (self.sanitize(consumer_id), self.sanitize(entitlement_id))

if lazy_regen:
method += "&lazy_regen=true"

return self.conn.request_put(method)
result = False

try:
self.conn.request_put(method)
result = True
except (RemoteServerException, httpslib.BadStatusLine) as e:
# 404s indicate that the service is unsupported (Candlepin too old, or SAM)
if isinstance(e, httpslib.BadStatusLine) or e.code == 404:
log.debug("Unable to refresh entitlement certificates: Service currently unsupported.")
log.debug(e)
else:
# Something else happened that we should probabaly raise
raise e

return result

def getStatus(self):
method = "/status"
Expand Down
18 changes: 12 additions & 6 deletions test/functional/connection-tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,26 +159,32 @@ def setUp(self):
self.entitlement_id = self.entitlement['id']

def test_regenerate_entitlements_default(self):
self.cp.regenEntitlementCertificates(self.consumer_uuid)
result = self.cp.regenEntitlementCertificates(self.consumer_uuid)
self.assertTrue(result)

def test_regenerate_entitlements_lazy(self):
self.cp.regenEntitlementCertificates(self.consumer_uuid, True)
result = self.cp.regenEntitlementCertificates(self.consumer_uuid, True)
self.assertTrue(result)

def test_regenerate_entitlements_eager(self):
self.cp.regenEntitlementCertificates(self.consumer_uuid, False)
result = self.cp.regenEntitlementCertificates(self.consumer_uuid, False)
self.assertTrue(result)

def test_regenerate_entitlements_bad_uuid(self):
with self.assertRaises(RestlibException):
self.cp.regenEntitlementCertificates("bad_consumer_uuid")

def test_regenerate_entitlement_default(self):
self.cp.regenEntitlementCertificate(self.consumer_uuid, self.entitlement_id)
result = self.cp.regenEntitlementCertificate(self.consumer_uuid, self.entitlement_id)
self.assertTrue(result)

def test_regenerate_entitlement_lazy(self):
self.cp.regenEntitlementCertificate(self.consumer_uuid, self.entitlement_id, True)
result = self.cp.regenEntitlementCertificate(self.consumer_uuid, self.entitlement_id, True)
self.assertTrue(result)

def test_regenerate_entitlement_eager(self):
self.cp.regenEntitlementCertificate(self.consumer_uuid, self.entitlement_id, False)
result = self.cp.regenEntitlementCertificate(self.consumer_uuid, self.entitlement_id, False)
self.assertTrue(result)

def test_regenerate_entitlement_bad_consumer_uuid(self):
with self.assertRaises(RestlibException):
Expand Down

0 comments on commit 55a7d0a

Please sign in to comment.