@@ -323,7 +323,7 @@ class LifecycleRuleDelete(dict):
323323 def __init__ (self , ** kw ):
324324 conditions = LifecycleRuleConditions (** kw )
325325 rule = {"action" : {"type" : "Delete" }, "condition" : dict (conditions )}
326- super (LifecycleRuleDelete , self ).__init__ (rule )
326+ super ().__init__ (rule )
327327
328328 @classmethod
329329 def from_api_repr (cls , resource ):
@@ -356,7 +356,7 @@ def __init__(self, storage_class, **kw):
356356 "action" : {"type" : "SetStorageClass" , "storageClass" : storage_class },
357357 "condition" : dict (conditions ),
358358 }
359- super (LifecycleRuleSetStorageClass , self ).__init__ (rule )
359+ super ().__init__ (rule )
360360
361361 @classmethod
362362 def from_api_repr (cls , resource ):
@@ -365,7 +365,7 @@ def from_api_repr(cls, resource):
365365 :type resource: dict
366366 :param resource: mapping as returned from API call.
367367
368- :rtype: :class:`LifecycleRuleDelete `
368+ :rtype: :class:`LifecycleRuleSetStorageClass `
369369 :returns: Instance created from resource.
370370 """
371371 action = resource ["action" ]
@@ -374,6 +374,38 @@ def from_api_repr(cls, resource):
374374 return instance
375375
376376
377+ class LifecycleRuleAbortIncompleteMultipartUpload (dict ):
378+ """Map a rule aborting incomplete multipart uploads of matching items.
379+
380+ The "age" lifecycle condition is the only supported condition for this rule.
381+
382+ :type kw: dict
383+ :params kw: arguments passed to :class:`LifecycleRuleConditions`.
384+ """
385+
386+ def __init__ (self , ** kw ):
387+ conditions = LifecycleRuleConditions (** kw )
388+ rule = {
389+ "action" : {"type" : "AbortIncompleteMultipartUpload" },
390+ "condition" : dict (conditions ),
391+ }
392+ super ().__init__ (rule )
393+
394+ @classmethod
395+ def from_api_repr (cls , resource ):
396+ """Factory: construct instance from resource.
397+
398+ :type resource: dict
399+ :param resource: mapping as returned from API call.
400+
401+ :rtype: :class:`LifecycleRuleAbortIncompleteMultipartUpload`
402+ :returns: Instance created from resource.
403+ """
404+ instance = cls (_factory = True )
405+ instance .update (resource )
406+ return instance
407+
408+
377409_default = object ()
378410
379411
@@ -2240,6 +2272,8 @@ def lifecycle_rules(self):
22402272 yield LifecycleRuleDelete .from_api_repr (rule )
22412273 elif action_type == "SetStorageClass" :
22422274 yield LifecycleRuleSetStorageClass .from_api_repr (rule )
2275+ elif action_type == "AbortIncompleteMultipartUpload" :
2276+ yield LifecycleRuleAbortIncompleteMultipartUpload .from_api_repr (rule )
22432277 else :
22442278 warnings .warn (
22452279 "Unknown lifecycle rule type received: {}. Please upgrade to the latest version of google-cloud-storage." .format (
@@ -2289,7 +2323,7 @@ def add_lifecycle_delete_rule(self, **kw):
22892323 self .lifecycle_rules = rules
22902324
22912325 def add_lifecycle_set_storage_class_rule (self , storage_class , ** kw ):
2292- """Add a "delete " rule to lifestyle rules configured for this bucket .
2326+ """Add a "set storage class " rule to lifestyle rules.
22932327
22942328 See https://cloud.google.com/storage/docs/lifecycle and
22952329 https://cloud.google.com/storage/docs/json_api/v1/buckets
@@ -2309,6 +2343,22 @@ def add_lifecycle_set_storage_class_rule(self, storage_class, **kw):
23092343 rules .append (LifecycleRuleSetStorageClass (storage_class , ** kw ))
23102344 self .lifecycle_rules = rules
23112345
2346+ def add_lifecycle_abort_incomplete_multipart_upload_rule (self , ** kw ):
2347+ """Add a "abort incomplete multipart upload" rule to lifestyle rules.
2348+
2349+ Note that the "age" lifecycle condition is the only supported condition
2350+ for this rule.
2351+
2352+ See https://cloud.google.com/storage/docs/lifecycle and
2353+ https://cloud.google.com/storage/docs/json_api/v1/buckets
2354+
2355+ :type kw: dict
2356+ :params kw: arguments passed to :class:`LifecycleRuleConditions`.
2357+ """
2358+ rules = list (self .lifecycle_rules )
2359+ rules .append (LifecycleRuleAbortIncompleteMultipartUpload (** kw ))
2360+ self .lifecycle_rules = rules
2361+
23122362 _location = _scalar_property ("location" )
23132363
23142364 @property
0 commit comments