@@ -19,12 +19,14 @@ import (
1919
2020// GCP is a state provider type, leveraging GCS
2121type GCP struct {
22- svc * storage.Client
23- buckets []string
22+ svc * storage.Client
23+ buckets []string
24+ noLocks bool
25+ noVersioning bool
2426}
2527
2628// NewGCP creates an GCP object
27- func NewGCP (gcp config.GCPConfig ) (* GCP , error ) {
29+ func NewGCP (gcp config.GCPConfig , noLocks , noVersioning bool ) (* GCP , error ) {
2830 ctx := context .Background ()
2931
3032 var client * storage.Client
@@ -52,8 +54,10 @@ func NewGCP(gcp config.GCPConfig) (*GCP, error) {
5254 }
5355
5456 gcpInstance = & GCP {
55- svc : client ,
56- buckets : gcp .GCSBuckets ,
57+ svc : client ,
58+ buckets : gcp .GCSBuckets ,
59+ noLocks : noLocks ,
60+ noVersioning : noVersioning ,
5761 }
5862
5963 log .WithFields (log.Fields {
@@ -67,7 +71,7 @@ func NewGCP(gcp config.GCPConfig) (*GCP, error) {
6771func NewGCPCollection (c * config.Config ) ([]* GCP , error ) {
6872 var gcpInstances []* GCP
6973 for _ , gcp := range c .GCP {
70- gcpInstance , err := NewGCP (gcp )
74+ gcpInstance , err := NewGCP (gcp , c . Provider . NoLocks , c . Provider . NoVersioning )
7175 if err != nil || gcpInstance == nil {
7276 return nil , err
7377 }
@@ -79,6 +83,11 @@ func NewGCPCollection(c *config.Config) ([]*GCP, error) {
7983
8084// GetLocks returns a map of locks by State path
8185func (a * GCP ) GetLocks () (locks map [string ]LockInfo , err error ) {
86+ if a .noLocks {
87+ locks = make (map [string ]LockInfo )
88+ return
89+ }
90+
8291 ctx := context .Background ()
8392 ctx , cancel := context .WithTimeout (ctx , time .Second * 60 )
8493 defer cancel ()
@@ -167,7 +176,7 @@ func (a *GCP) GetState(st, versionID string) (sf *statefile.File, err error) {
167176 fileName := st [bucketSplit + 1 :]
168177
169178 obj := a .svc .Bucket (bucketName ).Object (fileName )
170- if versionID != "" {
179+ if versionID != "" && ! a . noVersioning {
171180 version , err := strconv .ParseInt (versionID , 10 , 64 )
172181 if err != nil {
173182 return nil , err
@@ -205,6 +214,14 @@ func (a *GCP) GetState(st, versionID string) (sf *statefile.File, err error) {
205214
206215// GetVersions returns a slice of Version objects
207216func (a * GCP ) GetVersions (state string ) (versions []Version , err error ) {
217+ if a .noVersioning {
218+ versions = append (versions , Version {
219+ ID : state ,
220+ LastModified : time .Now (),
221+ })
222+ return
223+ }
224+
208225 versions = []Version {}
209226 ctx := context .Background ()
210227 ctx , cancel := context .WithTimeout (ctx , time .Second * 60 )
0 commit comments