Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cmd/backup/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ type Config struct {
GoogleDriveImpersonateSubject string `split_words:"true"`
GoogleDriveEndpoint string `split_words:"true"`
GoogleDriveTokenURL string `split_words:"true"`
GoogleDriveTeamDriveID string `split_words:"true"`
Timezone string `envconfig:"TZ"`
source string
additionalEnvVars map[string]string
Expand Down
1 change: 1 addition & 0 deletions cmd/backup/script.go
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,7 @@ func (s *script) init() error {
ImpersonateSubject: s.c.GoogleDriveImpersonateSubject,
Endpoint: s.c.GoogleDriveEndpoint,
TokenURL: s.c.GoogleDriveTokenURL,
TeamDriveID: s.c.GoogleDriveTeamDriveID,
}
googleDriveBackend, err := googledrive.NewStorageBackend(googleDriveConfig, logFunc)
if err != nil {
Expand Down
8 changes: 8 additions & 0 deletions docs/reference/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -429,6 +429,14 @@ If you need to confirm what the container actually loaded, see [Show loaded conf
# ---
# In case you are storing your archives in a "Team Drive", this value needs to be set.
# Note that you will still need to set GOOGLE_DRIVE_FOLDER_ID to determine where
# archives will be store.
# GOOGLE_DRIVE_TEAM_DRIVE_ID=""
# ---
# The email address of the user to impersonate when accessing Google Drive (domain-wide delegation).
# This is required becasue your service account needs to act on behalf of a user in your organization in order to upload files.
# How to: https://support.google.com/a/answer/162106
Expand Down
10 changes: 8 additions & 2 deletions internal/storage/googledrive/googledrive.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ import (

type googleDriveStorage struct {
storage.StorageBackend
client *drive.Service
client *drive.Service
teamDriveID string
}

// Config allows to configure a Google Drive storage backend.
Expand All @@ -35,6 +36,7 @@ type Config struct {
ImpersonateSubject string
Endpoint string
TokenURL string
TeamDriveID string
}

// NewStorageBackend creates and initializes a new Google Drive storage backend.
Expand Down Expand Up @@ -78,7 +80,8 @@ func NewStorageBackend(opts Config, logFunc storage.Log) (storage.Backend, error
DestinationPath: opts.FolderID,
Log: logFunc,
},
client: srv,
client: srv,
teamDriveID: opts.TeamDriveID,
}, nil
}

Expand Down Expand Up @@ -135,6 +138,9 @@ func (b *googleDriveStorage) Prune(deadline time.Time, pruningPrefix string) (*s
pageToken := ""
for {
req := b.client.Files.List().Q(query).SupportsAllDrives(true).Fields("files(id, name, createdTime, parents)").PageToken(pageToken)
if b.teamDriveID != "" {
req = req.DriveId(b.teamDriveID).IncludeItemsFromAllDrives(true).Corpora("drive")
}
res, err := req.Do()
if err != nil {
return nil, errwrap.Wrap(err, "listing files")
Expand Down
Loading