google-cloud-storage 1.14.2 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/lib/google/cloud/storage/bucket.rb +216 -1
- data/lib/google/cloud/storage/file.rb +260 -0
- data/lib/google/cloud/storage/service.rb +14 -1
- data/lib/google/cloud/storage/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e598fdd23bab0f17c14744298b77e1519458f52a7e0b0e9d66c3986ca3da10cc
|
4
|
+
data.tar.gz: 7c1d3ec1f9a93e032f8f40a81eb4adfa725fc90970293f1dce573ded20bc0f49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c47223d54f4bbac666083252a49b3a1853afeca995640e8ee54bf8b1f53e36231efb67e3ed57ea06a7da63328df829161b3eade1913bf7c374117f99400108c0
|
7
|
+
data.tar.gz: a68d2d5325c0414c5e0c4d9179ff1321b03f970d72c36544541a33e9458bf4c659e3d2be0c2f1eeb181a76001196f5cb76c132065dbbf64308a6035c53431ff6
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
# Release History
|
2
2
|
|
3
|
+
### 1.15.0 / 2018-10-03
|
4
|
+
|
5
|
+
* Add Bucket retention policy
|
6
|
+
* Add retention_policy fields and default_event_based_hold to Bucket.
|
7
|
+
* Add retention_policy and hold fields to File.
|
8
|
+
* Add Bucket#lock_retention_policy!
|
9
|
+
* Add Bucket#metageneration.
|
10
|
+
* Add Bucket#retention_policy_locked?
|
11
|
+
* Add File#(set|release)_temporary_hold!
|
12
|
+
* Add File#(set|release)_event_based_hold!
|
13
|
+
|
3
14
|
### 1.14.2 / 2018-09-20
|
4
15
|
|
5
16
|
* Update documentation.
|
@@ -132,6 +132,15 @@ module Google
|
|
132
132
|
@gapi.time_created
|
133
133
|
end
|
134
134
|
|
135
|
+
##
|
136
|
+
# The metadata generation of the bucket.
|
137
|
+
#
|
138
|
+
# @return [Integer] The metageneration.
|
139
|
+
#
|
140
|
+
def metageneration
|
141
|
+
@gapi.metageneration
|
142
|
+
end
|
143
|
+
|
135
144
|
##
|
136
145
|
# Returns the current CORS configuration for a static website served
|
137
146
|
# from the bucket.
|
@@ -545,6 +554,209 @@ module Google
|
|
545
554
|
patch_gapi! :encryption
|
546
555
|
end
|
547
556
|
|
557
|
+
##
|
558
|
+
# The period of time (in seconds) that files in the bucket must be
|
559
|
+
# retained, and cannot be deleted, overwritten, or archived.
|
560
|
+
# The value must be between 0 and 100 years (in seconds.)
|
561
|
+
#
|
562
|
+
# See also: {#retention_period=}, {#retention_effective_at}, and
|
563
|
+
# {#retention_policy_locked?}.
|
564
|
+
#
|
565
|
+
# @return [Integer, nil] The retention period defined in seconds, if a
|
566
|
+
# retention policy exists for the bucket.
|
567
|
+
#
|
568
|
+
def retention_period
|
569
|
+
@gapi.retention_policy && @gapi.retention_policy.retention_period
|
570
|
+
end
|
571
|
+
|
572
|
+
##
|
573
|
+
# The period of time (in seconds) that files in the bucket must be
|
574
|
+
# retained, and cannot be deleted, overwritten, or archived. Passing a
|
575
|
+
# valid Integer value will add a new retention policy to the bucket
|
576
|
+
# if none exists. Passing `nil` will remove the retention policy from
|
577
|
+
# the bucket if it exists, unless the policy is locked.
|
578
|
+
#
|
579
|
+
# Locked policies can be extended in duration by using this method
|
580
|
+
# to set a higher value. Such an extension is permanent, and it cannot
|
581
|
+
# later be reduced. The extended duration will apply retroactively to
|
582
|
+
# all files currently in the bucket.
|
583
|
+
#
|
584
|
+
# See also: {#lock_retention_policy!}, {#retention_period},
|
585
|
+
# {#retention_effective_at}, and {#retention_policy_locked?}.
|
586
|
+
#
|
587
|
+
# @param [Integer, nil] new_retention_period The retention period
|
588
|
+
# defined in seconds. The value must be between 0 and 100 years (in
|
589
|
+
# seconds), or `nil`.
|
590
|
+
#
|
591
|
+
# @example
|
592
|
+
# require "google/cloud/storage"
|
593
|
+
#
|
594
|
+
# storage = Google::Cloud::Storage.new
|
595
|
+
#
|
596
|
+
# bucket = storage.bucket "my-bucket"
|
597
|
+
#
|
598
|
+
# bucket.retention_period = 2592000 # 30 days in seconds
|
599
|
+
#
|
600
|
+
# file = bucket.create_file "path/to/local.file.ext"
|
601
|
+
# file.delete # raises Google::Cloud::PermissionDeniedError
|
602
|
+
#
|
603
|
+
def retention_period= new_retention_period
|
604
|
+
if new_retention_period.nil?
|
605
|
+
@gapi.retention_policy = nil
|
606
|
+
else
|
607
|
+
@gapi.retention_policy ||= \
|
608
|
+
Google::Apis::StorageV1::Bucket::RetentionPolicy.new
|
609
|
+
@gapi.retention_policy.retention_period = new_retention_period
|
610
|
+
end
|
611
|
+
|
612
|
+
patch_gapi! :retention_policy
|
613
|
+
end
|
614
|
+
|
615
|
+
##
|
616
|
+
# The time from which the retention policy was effective. Whenever a
|
617
|
+
# retention policy is created or extended, GCS updates the effective
|
618
|
+
# date of the policy. The effective date signals the date starting from
|
619
|
+
# which objects were guaranteed to be retained for the full duration of
|
620
|
+
# the policy.
|
621
|
+
#
|
622
|
+
# This field is updated when the retention policy is created or
|
623
|
+
# modified, including extension of a locked policy.
|
624
|
+
#
|
625
|
+
# @return [DateTime, nil] The effective date of the bucket's retention
|
626
|
+
# policy, if a policy exists.
|
627
|
+
#
|
628
|
+
def retention_effective_at
|
629
|
+
@gapi.retention_policy && @gapi.retention_policy.effective_time
|
630
|
+
end
|
631
|
+
|
632
|
+
##
|
633
|
+
# Whether the bucket's file retention policy is locked and its retention
|
634
|
+
# period cannot be reduced. See {#retention_period=} and
|
635
|
+
# {#lock_retention_policy!}.
|
636
|
+
#
|
637
|
+
# This value can only be set to `true` by calling
|
638
|
+
# {Bucket#lock_retention_policy!}.
|
639
|
+
#
|
640
|
+
# @return [Boolean] Returns `false` if there is no retention policy or
|
641
|
+
# if the retention policy is unlocked and the retention period can be
|
642
|
+
# reduced. Returns `true` if the retention policy is locked and the
|
643
|
+
# retention period cannot be reduced.
|
644
|
+
#
|
645
|
+
# @example
|
646
|
+
# require "google/cloud/storage"
|
647
|
+
#
|
648
|
+
# storage = Google::Cloud::Storage.new
|
649
|
+
#
|
650
|
+
# bucket = storage.bucket "my-bucket"
|
651
|
+
#
|
652
|
+
# bucket.retention_period = 2592000 # 30 days in seconds
|
653
|
+
# bucket.lock_retention_policy!
|
654
|
+
# bucket.retention_policy_locked? # true
|
655
|
+
#
|
656
|
+
# file = bucket.create_file "path/to/local.file.ext"
|
657
|
+
# file.delete # raises Google::Cloud::PermissionDeniedError
|
658
|
+
#
|
659
|
+
def retention_policy_locked?
|
660
|
+
return false unless @gapi.retention_policy
|
661
|
+
!@gapi.retention_policy.is_locked.nil? &&
|
662
|
+
@gapi.retention_policy.is_locked
|
663
|
+
end
|
664
|
+
|
665
|
+
##
|
666
|
+
# Whether the `event_based_hold` field for newly-created files in the
|
667
|
+
# bucket will be initially set to `true`. See
|
668
|
+
# {#default_event_based_hold=}, {File#event_based_hold?} and
|
669
|
+
# {File#set_event_based_hold!}.
|
670
|
+
#
|
671
|
+
# @return [Boolean] Returns `true` if the `event_based_hold` field for
|
672
|
+
# newly-created files in the bucket will be initially set to `true`,
|
673
|
+
# otherwise `false`.
|
674
|
+
#
|
675
|
+
def default_event_based_hold?
|
676
|
+
!@gapi.default_event_based_hold.nil? && @gapi.default_event_based_hold
|
677
|
+
end
|
678
|
+
|
679
|
+
##
|
680
|
+
# Updates the default event-based hold field for the bucket. This field
|
681
|
+
# controls the initial state of the `event_based_hold` field for
|
682
|
+
# newly-created files in the bucket.
|
683
|
+
#
|
684
|
+
# See {File#event_based_hold?} and {File#set_event_based_hold!}.
|
685
|
+
#
|
686
|
+
# @param [Boolean] new_default_event_based_hold The default event-based
|
687
|
+
# hold field for the bucket.
|
688
|
+
#
|
689
|
+
# @example
|
690
|
+
# require "google/cloud/storage"
|
691
|
+
#
|
692
|
+
# storage = Google::Cloud::Storage.new
|
693
|
+
#
|
694
|
+
# bucket = storage.bucket "my-bucket"
|
695
|
+
#
|
696
|
+
# bucket.update do |b|
|
697
|
+
# b.retention_period = 2592000 # 30 days in seconds
|
698
|
+
# b.default_event_based_hold = true
|
699
|
+
# end
|
700
|
+
#
|
701
|
+
# file = bucket.create_file "path/to/local.file.ext"
|
702
|
+
# file.event_based_hold? # true
|
703
|
+
# file.delete # raises Google::Cloud::PermissionDeniedError
|
704
|
+
# file.release_event_based_hold!
|
705
|
+
#
|
706
|
+
# # The end of the retention period is calculated from the time that
|
707
|
+
# # the event-based hold was released.
|
708
|
+
# file.retention_expires_at
|
709
|
+
#
|
710
|
+
def default_event_based_hold= new_default_event_based_hold
|
711
|
+
@gapi.default_event_based_hold = new_default_event_based_hold
|
712
|
+
patch_gapi! :default_event_based_hold
|
713
|
+
end
|
714
|
+
|
715
|
+
##
|
716
|
+
# PERMANENTLY locks the retention policy (see {#retention_period=}) on
|
717
|
+
# the bucket if one exists. The policy is transitioned to a locked state
|
718
|
+
# in which its duration cannot be reduced.
|
719
|
+
#
|
720
|
+
# Locked policies can be extended in duration by setting
|
721
|
+
# {#retention_period=} to a higher value. Such an extension is
|
722
|
+
# permanent, and it cannot later be reduced. The extended duration will
|
723
|
+
# apply retroactively to all files currently in the bucket.
|
724
|
+
#
|
725
|
+
# This method also [creates a
|
726
|
+
# lien](https://cloud.google.com/resource-manager/reference/rest/v1/liens/create)
|
727
|
+
# on the `resourcemanager.projects.delete` permission for the project
|
728
|
+
# containing the bucket.
|
729
|
+
#
|
730
|
+
# The bucket's metageneration value is required for the lock policy API
|
731
|
+
# call. Attempting to call this method on a bucket that was loaded with
|
732
|
+
# the `skip_lookup: true` option will result in an error.
|
733
|
+
#
|
734
|
+
# @return [Boolean] Returns `true` if the lock operation is successful.
|
735
|
+
#
|
736
|
+
# @example
|
737
|
+
# require "google/cloud/storage"
|
738
|
+
#
|
739
|
+
# storage = Google::Cloud::Storage.new
|
740
|
+
#
|
741
|
+
# bucket = storage.bucket "my-bucket"
|
742
|
+
#
|
743
|
+
# bucket.retention_period = 2592000 # 30 days in seconds
|
744
|
+
# bucket.lock_retention_policy!
|
745
|
+
# bucket.retention_policy_locked? # true
|
746
|
+
#
|
747
|
+
# file = bucket.create_file "path/to/local.file.ext"
|
748
|
+
# file.delete # raises Google::Cloud::PermissionDeniedError
|
749
|
+
#
|
750
|
+
# # Locked policies can be extended in duration
|
751
|
+
# bucket.retention_period = 7776000 # 90 days in seconds
|
752
|
+
#
|
753
|
+
def lock_retention_policy!
|
754
|
+
ensure_service!
|
755
|
+
@gapi = service.lock_bucket_retention_policy \
|
756
|
+
name, metageneration, user_project: user_project
|
757
|
+
true
|
758
|
+
end
|
759
|
+
|
548
760
|
##
|
549
761
|
# Updates the bucket with changes made in the given block in a single
|
550
762
|
# PATCH request. The following attributes may be set: {#cors},
|
@@ -909,7 +1121,8 @@ module Google
|
|
909
1121
|
content_disposition: nil, content_encoding: nil,
|
910
1122
|
content_language: nil, content_type: nil,
|
911
1123
|
crc32c: nil, md5: nil, metadata: nil,
|
912
|
-
storage_class: nil, encryption_key: nil, kms_key: nil
|
1124
|
+
storage_class: nil, encryption_key: nil, kms_key: nil,
|
1125
|
+
temporary_hold: nil, event_based_hold: nil
|
913
1126
|
ensure_service!
|
914
1127
|
options = { acl: File::Acl.predefined_rule_for(acl), md5: md5,
|
915
1128
|
cache_control: cache_control, content_type: content_type,
|
@@ -918,6 +1131,8 @@ module Google
|
|
918
1131
|
content_language: content_language, key: encryption_key,
|
919
1132
|
kms_key: kms_key,
|
920
1133
|
storage_class: storage_class_for(storage_class),
|
1134
|
+
temporary_hold: temporary_hold,
|
1135
|
+
event_based_hold: event_based_hold,
|
921
1136
|
user_project: user_project }
|
922
1137
|
ensure_io_or_file_exists! file
|
923
1138
|
path ||= file.path if file.respond_to? :path
|
@@ -447,6 +447,261 @@ module Google
|
|
447
447
|
update_gapi! :storage_class
|
448
448
|
end
|
449
449
|
|
450
|
+
##
|
451
|
+
# Whether there is a temporary hold on the file. A temporary hold will
|
452
|
+
# be enforced on the file as long as this property is `true`, even if
|
453
|
+
# the bucket-level retention policy would normally allow deletion. When
|
454
|
+
# the temporary hold is removed, the normal bucket-level policy rules
|
455
|
+
# once again apply. The default value is `false`.
|
456
|
+
#
|
457
|
+
# @return [Boolean] Returns `true` if there is a temporary hold on the
|
458
|
+
# file, otherwise `false`.
|
459
|
+
#
|
460
|
+
# @example
|
461
|
+
# require "google/cloud/storage"
|
462
|
+
#
|
463
|
+
# storage = Google::Cloud::Storage.new
|
464
|
+
#
|
465
|
+
# bucket = storage.bucket "my-bucket"
|
466
|
+
# file = bucket.file "path/to/my-file.ext"
|
467
|
+
#
|
468
|
+
# file.temporary_hold? #=> false
|
469
|
+
# file.set_temporary_hold!
|
470
|
+
# file.delete # raises Google::Cloud::PermissionDeniedError
|
471
|
+
#
|
472
|
+
def temporary_hold?
|
473
|
+
!@gapi.temporary_hold.nil? && @gapi.temporary_hold
|
474
|
+
end
|
475
|
+
|
476
|
+
##
|
477
|
+
# Sets the temporary hold property of the file to `true`. This property
|
478
|
+
# is used to enforce a temporary hold on a file. While it is set to
|
479
|
+
# `true`, the file is protected against deletion and overwrites. Once
|
480
|
+
# removed, the file's `retention_expires_at` date is not changed. The
|
481
|
+
# default value is `false`.
|
482
|
+
#
|
483
|
+
# See {#retention_expires_at}.
|
484
|
+
#
|
485
|
+
# @example
|
486
|
+
# require "google/cloud/storage"
|
487
|
+
#
|
488
|
+
# storage = Google::Cloud::Storage.new
|
489
|
+
#
|
490
|
+
# bucket = storage.bucket "my-bucket"
|
491
|
+
# file = bucket.file "path/to/my-file.ext"
|
492
|
+
#
|
493
|
+
# file.temporary_hold? #=> false
|
494
|
+
# file.set_temporary_hold!
|
495
|
+
# file.delete # raises Google::Cloud::PermissionDeniedError
|
496
|
+
#
|
497
|
+
def set_temporary_hold!
|
498
|
+
@gapi.temporary_hold = true
|
499
|
+
update_gapi! :temporary_hold
|
500
|
+
end
|
501
|
+
|
502
|
+
##
|
503
|
+
# Sets the temporary hold property of the file to `false`. This property
|
504
|
+
# is used to enforce a temporary hold on a file. While it is set to
|
505
|
+
# `true`, the file is protected against deletion and overwrites. Once
|
506
|
+
# removed, the file's `retention_expires_at` date is not changed. The
|
507
|
+
# default value is `false`.
|
508
|
+
#
|
509
|
+
# See {#retention_expires_at}.
|
510
|
+
#
|
511
|
+
# @example
|
512
|
+
# require "google/cloud/storage"
|
513
|
+
#
|
514
|
+
# storage = Google::Cloud::Storage.new
|
515
|
+
#
|
516
|
+
# bucket = storage.bucket "my-bucket"
|
517
|
+
# file = bucket.file "path/to/my-file.ext"
|
518
|
+
#
|
519
|
+
# file.temporary_hold? #=> false
|
520
|
+
# file.set_temporary_hold!
|
521
|
+
# file.delete # raises Google::Cloud::PermissionDeniedError
|
522
|
+
#
|
523
|
+
# file.release_temporary_hold!
|
524
|
+
# file.delete
|
525
|
+
#
|
526
|
+
def release_temporary_hold!
|
527
|
+
@gapi.temporary_hold = false
|
528
|
+
update_gapi! :temporary_hold
|
529
|
+
end
|
530
|
+
|
531
|
+
##
|
532
|
+
# Whether there is an event-based hold on the file. An event-based
|
533
|
+
# hold will be enforced on the file as long as this property is `true`,
|
534
|
+
# even if the bucket-level retention policy would normally allow
|
535
|
+
# deletion. Removing the event-based hold extends the retention duration
|
536
|
+
# of the file to the current date plus the bucket-level policy duration.
|
537
|
+
# Removing the event-based hold represents that a retention-related
|
538
|
+
# event has occurred, and thus the retention clock ticks from the moment
|
539
|
+
# of the event as opposed to the creation date of the object. The
|
540
|
+
# default value is configured at the bucket level (which defaults to
|
541
|
+
# `false`), and is assigned to newly-created objects.
|
542
|
+
#
|
543
|
+
# See {#set_event_based_hold!}, {#release_event_based_hold!},
|
544
|
+
# {Bucket#default_event_based_hold?} and
|
545
|
+
# {Bucket#default_event_based_hold=}.
|
546
|
+
#
|
547
|
+
# If a bucket's retention policy duration is modified after the
|
548
|
+
# event-based hold flag is unset, the updated retention duration applies
|
549
|
+
# retroactively to objects that previously had event-based holds. For
|
550
|
+
# example:
|
551
|
+
#
|
552
|
+
# * If the bucket's [unlocked] retention policy is removed, objects with
|
553
|
+
# event-based holds may be deleted immediately after the hold is
|
554
|
+
# removed (the duration of a nonexistent policy for the purpose of
|
555
|
+
# event-based holds is considered to be zero).
|
556
|
+
# * If the bucket's [unlocked] policy is reduced, objects with
|
557
|
+
# previously released event-based holds will be have their retention
|
558
|
+
# expiration dates reduced accordingly.
|
559
|
+
# * If the bucket's policy is extended, objects with previously released
|
560
|
+
# event-based holds will have their retention expiration dates
|
561
|
+
# extended accordingly. However, note that objects with event-based
|
562
|
+
# holds released prior to the effective date of the new policy may
|
563
|
+
# have already been deleted by the user.
|
564
|
+
#
|
565
|
+
# @return [Boolean] Returns `true` if there is an event-based hold on
|
566
|
+
# the file, otherwise `false`.
|
567
|
+
#
|
568
|
+
# @example
|
569
|
+
# require "google/cloud/storage"
|
570
|
+
#
|
571
|
+
# storage = Google::Cloud::Storage.new
|
572
|
+
#
|
573
|
+
# bucket = storage.bucket "my-bucket"
|
574
|
+
# bucket.retention_period = 2592000 # 30 days in seconds
|
575
|
+
#
|
576
|
+
# file = bucket.file "path/to/my-file.ext"
|
577
|
+
#
|
578
|
+
# file.event_based_hold? #=> false
|
579
|
+
# file.set_event_based_hold!
|
580
|
+
# file.delete # raises Google::Cloud::PermissionDeniedError
|
581
|
+
# file.release_event_based_hold!
|
582
|
+
#
|
583
|
+
# # The end of the retention period is calculated from the time that
|
584
|
+
# # the event-based hold was released.
|
585
|
+
# file.retention_expires_at
|
586
|
+
#
|
587
|
+
def event_based_hold?
|
588
|
+
!@gapi.event_based_hold.nil? && @gapi.event_based_hold
|
589
|
+
end
|
590
|
+
|
591
|
+
##
|
592
|
+
# Sets the event-based hold property of the file to `true`. This
|
593
|
+
# property enforces an event-based hold on the file as long as this
|
594
|
+
# property is `true`, even if the bucket-level retention policy would
|
595
|
+
# normally allow deletion. The default value is configured at the
|
596
|
+
# bucket level (which defaults to `false`), and is assigned to
|
597
|
+
# newly-created objects.
|
598
|
+
#
|
599
|
+
# See {#event_based_hold?}, {#release_event_based_hold!},
|
600
|
+
# {Bucket#default_event_based_hold?} and
|
601
|
+
# {Bucket#default_event_based_hold=}.
|
602
|
+
#
|
603
|
+
# If a bucket's retention policy duration is modified after the
|
604
|
+
# event-based hold is removed, the updated retention duration applies
|
605
|
+
# retroactively to objects that previously had event-based holds. For
|
606
|
+
# example:
|
607
|
+
#
|
608
|
+
# * If the bucket's [unlocked] retention policy is removed, objects with
|
609
|
+
# event-based holds may be deleted immediately after the hold is
|
610
|
+
# removed (the duration of a nonexistent policy for the purpose of
|
611
|
+
# event-based holds is considered to be zero).
|
612
|
+
# * If the bucket's [unlocked] policy is reduced, objects with
|
613
|
+
# previously released event-based holds will be have their retention
|
614
|
+
# expiration dates reduced accordingly.
|
615
|
+
# * If the bucket's policy is extended, objects with previously released
|
616
|
+
# event-based holds will have their retention expiration dates
|
617
|
+
# extended accordingly. However, note that objects with event-based
|
618
|
+
# holds released prior to the effective date of the new policy may
|
619
|
+
# have already been deleted by the user.
|
620
|
+
#
|
621
|
+
# @example
|
622
|
+
# require "google/cloud/storage"
|
623
|
+
#
|
624
|
+
# storage = Google::Cloud::Storage.new
|
625
|
+
#
|
626
|
+
# bucket = storage.bucket "my-bucket"
|
627
|
+
# bucket.retention_period = 2592000 # 30 days in seconds
|
628
|
+
#
|
629
|
+
# file = bucket.file "path/to/my-file.ext"
|
630
|
+
#
|
631
|
+
# file.event_based_hold? #=> false
|
632
|
+
# file.set_event_based_hold!
|
633
|
+
# file.delete # raises Google::Cloud::PermissionDeniedError
|
634
|
+
# file.release_event_based_hold!
|
635
|
+
#
|
636
|
+
# # The end of the retention period is calculated from the time that
|
637
|
+
# # the event-based hold was released.
|
638
|
+
# file.retention_expires_at
|
639
|
+
#
|
640
|
+
def set_event_based_hold!
|
641
|
+
@gapi.event_based_hold = true
|
642
|
+
update_gapi! :event_based_hold
|
643
|
+
end
|
644
|
+
|
645
|
+
##
|
646
|
+
# Sets the event-based hold property of the file to `false`. Removing
|
647
|
+
# the event-based hold extends the retention duration of the file to the
|
648
|
+
# current date plus the bucket-level policy duration. Removing the
|
649
|
+
# event-based hold represents that a retention-related event has
|
650
|
+
# occurred, and thus the retention clock ticks from the moment of the
|
651
|
+
# event as opposed to the creation date of the object. The default value
|
652
|
+
# is configured at the bucket level (which defaults to `false`), and is
|
653
|
+
# assigned to newly-created objects.
|
654
|
+
#
|
655
|
+
# See {#event_based_hold?}, {#set_event_based_hold!},
|
656
|
+
# {Bucket#default_event_based_hold?} and
|
657
|
+
# {Bucket#default_event_based_hold=}.
|
658
|
+
#
|
659
|
+
# @example
|
660
|
+
# require "google/cloud/storage"
|
661
|
+
#
|
662
|
+
# storage = Google::Cloud::Storage.new
|
663
|
+
#
|
664
|
+
# bucket = storage.bucket "my-bucket"
|
665
|
+
# bucket.retention_period = 2592000 # 30 days in seconds
|
666
|
+
#
|
667
|
+
# file = bucket.file "path/to/my-file.ext"
|
668
|
+
#
|
669
|
+
# file.event_based_hold? #=> false
|
670
|
+
# file.set_event_based_hold!
|
671
|
+
# file.delete # raises Google::Cloud::PermissionDeniedError
|
672
|
+
# file.release_event_based_hold!
|
673
|
+
#
|
674
|
+
# # The end of the retention period is calculated from the time that
|
675
|
+
# # the event-based hold was released.
|
676
|
+
# file.retention_expires_at
|
677
|
+
#
|
678
|
+
def release_event_based_hold!
|
679
|
+
@gapi.event_based_hold = false
|
680
|
+
update_gapi! :event_based_hold
|
681
|
+
end
|
682
|
+
|
683
|
+
##
|
684
|
+
# The retention expiration time of the file. This field is indirectly
|
685
|
+
# mutable when the retention policy applicable to the object changes.
|
686
|
+
# The date represents the earliest time that the object could be
|
687
|
+
# deleted, assuming no temporary hold is set. (See {#temporary_hold?}.)
|
688
|
+
# It is provided when both of the following are true:
|
689
|
+
#
|
690
|
+
# * There is a retention policy on the bucket.
|
691
|
+
# * The eventBasedHold flag is unset on the object.
|
692
|
+
#
|
693
|
+
# Note that it can be provided even when {#temporary_hold?} is `true`
|
694
|
+
# (so that the user can reason about policy without having to first
|
695
|
+
# unset the temporary hold).
|
696
|
+
#
|
697
|
+
# @return [DateTime, nil] A DateTime representing the earliest time at
|
698
|
+
# which the object can be deleted, or `nil` if there are no
|
699
|
+
# restrictions on deleting the object.
|
700
|
+
#
|
701
|
+
def retention_expires_at
|
702
|
+
@gapi.retention_expiration_time
|
703
|
+
end
|
704
|
+
|
450
705
|
##
|
451
706
|
# Retrieves a list of versioned files for the current object.
|
452
707
|
#
|
@@ -1041,6 +1296,11 @@ module Google
|
|
1041
1296
|
##
|
1042
1297
|
# Permanently deletes the file.
|
1043
1298
|
#
|
1299
|
+
# Raises PermissionDeniedError if the object is subject to an active
|
1300
|
+
# retention policy or hold. (See {#retention_expires_at},
|
1301
|
+
# {Bucket#retention_period}, {#temporary_hold?} and
|
1302
|
+
# {#event_based_hold?}.)
|
1303
|
+
#
|
1044
1304
|
# @param [Boolean, Integer] generation Specify a version of the file to
|
1045
1305
|
# delete. When `true`, it will delete the version returned by
|
1046
1306
|
# {#generation}. The default behavior is to delete the latest version
|
@@ -127,6 +127,17 @@ module Google
|
|
127
127
|
end
|
128
128
|
end
|
129
129
|
|
130
|
+
##
|
131
|
+
# Locks retention policy on a bucket.
|
132
|
+
def lock_bucket_retention_policy bucket_name, metageneration,
|
133
|
+
user_project: nil
|
134
|
+
execute do
|
135
|
+
service.lock_bucket_retention_policy \
|
136
|
+
bucket_name, metageneration,
|
137
|
+
user_project: user_project(user_project)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
130
141
|
##
|
131
142
|
# Retrieves a list of ACLs for the given bucket.
|
132
143
|
def list_bucket_acls bucket_name, user_project: nil
|
@@ -283,13 +294,15 @@ module Google
|
|
283
294
|
content_encoding: nil, content_language: nil,
|
284
295
|
content_type: nil, crc32c: nil, md5: nil, metadata: nil,
|
285
296
|
storage_class: nil, key: nil, kms_key: nil,
|
297
|
+
temporary_hold: nil, event_based_hold: nil,
|
286
298
|
user_project: nil
|
287
299
|
file_obj = Google::Apis::StorageV1::Object.new(
|
288
300
|
{ cache_control: cache_control, content_type: content_type,
|
289
301
|
content_disposition: content_disposition, md5_hash: md5,
|
290
302
|
content_encoding: content_encoding, crc32c: crc32c,
|
291
303
|
content_language: content_language, metadata: metadata,
|
292
|
-
storage_class: storage_class
|
304
|
+
storage_class: storage_class, temporary_hold: temporary_hold,
|
305
|
+
event_based_hold: event_based_hold }.delete_if { |_k, v| v.nil? }
|
293
306
|
)
|
294
307
|
content_type ||= mime_type_for(path || Pathname(source).to_path)
|
295
308
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-cloud-storage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Moore
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-
|
12
|
+
date: 2018-10-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: google-cloud-core
|