gcp

package
v0.15.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 28, 2024 License: MIT Imports: 18 Imported by: 1

README

Google Cloud Storage Driver

This driver provides support for storing module files in Google Cloud storage.

Configuration

NOTE: The GCP storage driver currently only supports the uploading of modules and so can not be used at this time as a storage back end.

Minimal configuration is needed, just the name of a storage bucket and an authentication method for that project, and then tell Athens you want to use that as your storage medium.

Driver Configuration

You will need to set an environment variable for the bucket name. ATHENS_STORAGE_GCP_BUCKET should be set to the name of the bucket you wish to use. It should be something like fancy-pony-339288.appspot.com.

The only currently supported authentication type is a service account key file in json format. For more information on appengine service accounts see here.

The service account requires a minimum of Storage Object Creator level of permission for the project on GCP. This path to this file must be set in the environment variable ATHENS_STORAGE_GCP_SA.

Athens Configuration

In order to tell Proxy to use GCP storage set ATHENS_STORAGE_TYPE to gcp.

Contributing

If you would like to contribute to this driver you will need a service account for the test project in order to run tests.

Please contact robbie for access.

Documentation

Overview

Package gcp provides a storage driver to upload module files to a google cloud platform storage bucket.

Configuration

Environment variables:

ATHENS_STORAGE_GCP_BUCKET	// full name of storage bucket
ATHENS_STORAGE_GCP_SA		// path to json keyfile of a service account

Example:

Bash:
	export ATHENS_STORAGE_GCP_BUCKET="fancy-pony-33928.appspot.com"
Fish:
	set -x ATHENS_STORAGE_GCP_BUCKET fancy-pony-339288.appspot.com

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Storage

type Storage struct {
	// contains filtered or unexported fields
}

Storage implements the (./pkg/storage).Backend interface.

func New added in v0.1.0

func New(ctx context.Context, gcpConf *config.GCPConfig, timeout time.Duration) (*Storage, error)

New returns a new Storage instance backed by a Google Cloud Storage bucket. The bucket name to be used will be loaded from the environment variable ATHENS_STORAGE_GCP_BUCKET.

If you're not running on GCP, set the GOOGLE_APPLICATION_CREDENTIALS environment variable to the path of your service account file. If you're running on GCP (e.g. AppEngine), credentials will be automatically provided. See https://cloud.google.com/docs/authentication/getting-started.

func (*Storage) Catalog added in v0.3.0

func (s *Storage) Catalog(ctx context.Context, token string, pageSize int) ([]paths.AllPathParams, string, error)

Catalog implements the (./pkg/storage).Catalog interface It returns a list of versions, if any, for a given module.

func (*Storage) Delete

func (s *Storage) Delete(ctx context.Context, module, version string) error

Delete implements the (./pkg/storage).Deleter interface and removes a version of a module from storage. Returning ErrNotFound if the version does not exist.

func (*Storage) Exists

func (s *Storage) Exists(ctx context.Context, module, version string) (bool, error)

Exists implements the (./pkg/storage).Checker interface returning true if the module at version exists in storage.

func (*Storage) GoMod added in v0.1.0

func (s *Storage) GoMod(ctx context.Context, module, version string) ([]byte, error)

GoMod implements Getter.

func (*Storage) Info added in v0.1.0

func (s *Storage) Info(ctx context.Context, module, version string) ([]byte, error)

Info implements Getter.

func (*Storage) List

func (s *Storage) List(ctx context.Context, module string) ([]string, error)

List implements the (./pkg/storage).Lister interface. It returns a list of versions, if any, for a given module.

func (*Storage) Save

func (s *Storage) Save(ctx context.Context, module, version string, mod []byte, zip io.Reader, info []byte) error

Save uploads the module's .mod, .zip and .info files for a given version It expects a context, which can be provided using context.Background from the standard library until context has been threaded down the stack. see issue: https://github.com/gomods/athens/issues/174

Uploaded files are publicly accessible in the storage bucket as per an ACL rule.

func (*Storage) SetStaleThreshold added in v0.14.1

func (s *Storage) SetStaleThreshold(threshold time.Duration)

SetStaleThreshold sets the threshold of how long we consider a lock metadata stale after.

func (*Storage) Zip added in v0.1.0

func (s *Storage) Zip(ctx context.Context, module, version string) (pkgstorage.SizeReadCloser, error)

Zip implements Getter.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL