| ... | ... |
@@ -529,23 +529,34 @@ class S3(object): |
| 529 | 529 |
def expiration_info(self, uri, bucket_location = None): |
| 530 | 530 |
bucket = uri.bucket() |
| 531 | 531 |
|
| 532 |
- request = self.create_request("BUCKET_LIST", bucket = bucket,
|
|
| 533 |
- uri_params = {'lifecycle': None})
|
|
| 532 |
+ request = self.create_request("BUCKET_LIST", bucket=bucket,
|
|
| 533 |
+ uri_params={'lifecycle': None})
|
|
| 534 | 534 |
try: |
| 535 | 535 |
response = self.send_request(request) |
| 536 |
- response['prefix'] = getTextFromXml(response['data'], ".//Rule//Prefix") |
|
| 537 |
- response['date'] = getTextFromXml(response['data'], ".//Rule//Expiration//Date") |
|
| 538 |
- response['days'] = getTextFromXml(response['data'], ".//Rule//Expiration//Days") |
|
| 539 |
- return response |
|
| 540 | 536 |
except S3Error as e: |
| 541 | 537 |
if e.status == 404: |
| 542 |
- debug("Could not get /?lifecycle - lifecycle probably not configured for this bucket")
|
|
| 538 |
+ debug("Could not get /?lifecycle - lifecycle probably not "
|
|
| 539 |
+ "configured for this bucket") |
|
| 543 | 540 |
return None |
| 544 | 541 |
elif e.status == 501: |
| 545 |
- debug("Could not get /?lifecycle - lifecycle support not implemented by the server")
|
|
| 542 |
+ debug("Could not get /?lifecycle - lifecycle support not "
|
|
| 543 |
+ "implemented by the server") |
|
| 546 | 544 |
return None |
| 547 | 545 |
raise |
| 548 | 546 |
|
| 547 |
+ root_tag_name = getRootTagName(response['data']) |
|
| 548 |
+ if root_tag_name != "LifecycleConfiguration": |
|
| 549 |
+ debug("Could not get /?lifecycle - unexpected xml response: "
|
|
| 550 |
+ "%s", root_tag_name) |
|
| 551 |
+ return None |
|
| 552 |
+ response['prefix'] = getTextFromXml(response['data'], |
|
| 553 |
+ ".//Rule//Prefix") |
|
| 554 |
+ response['date'] = getTextFromXml(response['data'], |
|
| 555 |
+ ".//Rule//Expiration//Date") |
|
| 556 |
+ response['days'] = getTextFromXml(response['data'], |
|
| 557 |
+ ".//Rule//Expiration//Days") |
|
| 558 |
+ return response |
|
| 559 |
+ |
|
| 549 | 560 |
def expiration_set(self, uri, bucket_location = None): |
| 550 | 561 |
if self.config.expiry_date and self.config.expiry_days: |
| 551 | 562 |
raise ParameterError("Expect either --expiry-day or --expiry-date")
|
| ... | ... |
@@ -977,7 +977,7 @@ def cmd_info(args): |
| 977 | 977 |
expiration_desc = "Expiration Rule: " |
| 978 | 978 |
if expiration['prefix'] == "": |
| 979 | 979 |
expiration_desc += "all objects in this bucket " |
| 980 |
- else: |
|
| 980 |
+ elif expiration['prefix'] is not None: |
|
| 981 | 981 |
expiration_desc += "objects with key prefix '" + expiration['prefix'] + "' " |
| 982 | 982 |
expiration_desc += "will expire in '" |
| 983 | 983 |
if expiration['days']: |