remoteasset

package
v0.0.0-...-1f36c31 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2024 License: Apache-2.0 Imports: 13 Imported by: 10

Documentation

Index

Constants

This section is empty.

Variables

View Source
var File_build_bazel_remote_asset_v1_remote_asset_proto protoreflect.FileDescriptor

Functions

func RegisterFetchServer

func RegisterFetchServer(s *grpc.Server, srv FetchServer)

func RegisterPushServer

func RegisterPushServer(s *grpc.Server, srv PushServer)

Types

type FetchBlobRequest

type FetchBlobRequest struct {

	// The instance of the execution system to operate against. A server may
	// support multiple instances of the execution system (with their own workers,
	// storage, caches, etc.). The server MAY require use of this field to select
	// between them in an implementation-defined fashion, otherwise it can be
	// omitted.
	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"`
	// The timeout for the underlying fetch, if content needs to be retrieved from
	// origin.
	//
	// If unset, the server *MAY* apply an implementation-defined timeout.
	//
	// If set, and the user-provided timeout exceeds the RPC deadline, the server
	// *SHOULD* keep the fetch going after the RPC completes, to be made
	// available for future Fetch calls. The server may also enforce (via clamping
	// and/or an INVALID_ARGUMENT error) implementation-defined minimum and
	// maximum timeout values.
	//
	// If this timeout is exceeded on an attempt to retrieve content from origin
	// the client will receive DEADLINE_EXCEEDED in [FetchBlobResponse.status].
	Timeout *durationpb.Duration `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
	// The oldest content the client is willing to accept, as measured from the
	// time it was Push'd or when the underlying retrieval from origin was
	// started.
	// Upon retries of Fetch requests that cannot be completed within a single
	// RPC, clients *SHOULD* provide the same value for subsequent requests as the
	// original, to simplify combining the request with the previous attempt.
	//
	// If unset, the client *SHOULD* accept content of any age.
	OldestContentAccepted *timestamppb.Timestamp `` /* 126-byte string literal not displayed */
	// The URI(s) of the content to fetch. These may be resources that the server
	// can directly fetch from origin, in which case multiple URIs *SHOULD*
	// represent the same content available at different locations (such as an
	// origin and secondary mirrors). These may also be URIs for content known to
	// the server through other mechanisms, e.g. pushed via the [Push][build.bazel.remote.asset.v1.Push]
	// service.
	//
	// Clients *MUST* supply at least one URI. Servers *MAY* match any one of the
	// supplied URIs.
	Uris []string `protobuf:"bytes,4,rep,name=uris,proto3" json:"uris,omitempty"`
	// Qualifiers sub-specifying the content to fetch - see comments on
	// [Qualifier][build.bazel.remote.asset.v1.Qualifier].
	// The same qualifiers apply to all URIs.
	//
	// Specified qualifier names *MUST* be unique.
	Qualifiers []*Qualifier `protobuf:"bytes,5,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"`
	// contains filtered or unexported fields
}

A request message for [Fetch.FetchBlob][build.bazel.remote.asset.v1.Fetch.FetchBlob].

func (*FetchBlobRequest) Descriptor deprecated

func (*FetchBlobRequest) Descriptor() ([]byte, []int)

Deprecated: Use FetchBlobRequest.ProtoReflect.Descriptor instead.

func (*FetchBlobRequest) GetInstanceName

func (x *FetchBlobRequest) GetInstanceName() string

func (*FetchBlobRequest) GetOldestContentAccepted

func (x *FetchBlobRequest) GetOldestContentAccepted() *timestamppb.Timestamp

func (*FetchBlobRequest) GetQualifiers

func (x *FetchBlobRequest) GetQualifiers() []*Qualifier

func (*FetchBlobRequest) GetTimeout

func (x *FetchBlobRequest) GetTimeout() *durationpb.Duration

func (*FetchBlobRequest) GetUris

func (x *FetchBlobRequest) GetUris() []string

func (*FetchBlobRequest) ProtoMessage

func (*FetchBlobRequest) ProtoMessage()

func (*FetchBlobRequest) ProtoReflect

func (x *FetchBlobRequest) ProtoReflect() protoreflect.Message

func (*FetchBlobRequest) Reset

func (x *FetchBlobRequest) Reset()

func (*FetchBlobRequest) String

func (x *FetchBlobRequest) String() string

type FetchBlobResponse

type FetchBlobResponse struct {

	// If the status has a code other than `OK`, it indicates that the operation
	// was unable to be completed for reasons outside the servers' control.
	// The possible fetch errors include:
	//   - `DEADLINE_EXCEEDED`: The operation could not be completed within the
	//     specified timeout.
	//   - `NOT_FOUND`: The requested asset was not found at the specified location.
	//   - `PERMISSION_DENIED`: The request was rejected by a remote server, or
	//     requested an asset from a disallowed origin.
	//   - `ABORTED`: The operation could not be completed, typically due to a
	//     failed consistency check.
	//   - `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to
	//     perform the requested operation. The client may retry after a delay.
	Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
	// The uri from the request that resulted in a successful retrieval, or from
	// which the error indicated in `status` was obtained.
	Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`
	// Any qualifiers known to the server and of interest to clients.
	Qualifiers []*Qualifier `protobuf:"bytes,3,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"`
	// A minimum timestamp the content is expected to be available through.
	// Servers *MAY* omit this field, if not known with confidence.
	ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
	// The result of the fetch, if the status had code `OK`.
	// The digest of the file's contents, available for download through the CAS.
	BlobDigest *v2.Digest `protobuf:"bytes,5,opt,name=blob_digest,json=blobDigest,proto3" json:"blob_digest,omitempty"`
	// contains filtered or unexported fields
}

A response message for [Fetch.FetchBlob][build.bazel.remote.asset.v1.Fetch.FetchBlob].

func (*FetchBlobResponse) Descriptor deprecated

func (*FetchBlobResponse) Descriptor() ([]byte, []int)

Deprecated: Use FetchBlobResponse.ProtoReflect.Descriptor instead.

func (*FetchBlobResponse) GetBlobDigest

func (x *FetchBlobResponse) GetBlobDigest() *v2.Digest

func (*FetchBlobResponse) GetExpiresAt

func (x *FetchBlobResponse) GetExpiresAt() *timestamppb.Timestamp

func (*FetchBlobResponse) GetQualifiers

func (x *FetchBlobResponse) GetQualifiers() []*Qualifier

func (*FetchBlobResponse) GetStatus

func (x *FetchBlobResponse) GetStatus() *status.Status

func (*FetchBlobResponse) GetUri

func (x *FetchBlobResponse) GetUri() string

func (*FetchBlobResponse) ProtoMessage

func (*FetchBlobResponse) ProtoMessage()

func (*FetchBlobResponse) ProtoReflect

func (x *FetchBlobResponse) ProtoReflect() protoreflect.Message

func (*FetchBlobResponse) Reset

func (x *FetchBlobResponse) Reset()

func (*FetchBlobResponse) String

func (x *FetchBlobResponse) String() string

type FetchClient

type FetchClient interface {
	// Resolve or fetch referenced assets, making them available to the caller and
	// other consumers in the [ContentAddressableStorage][build.bazel.remote.execution.v2.ContentAddressableStorage].
	//
	// Servers *MAY* fetch content that they do not already have cached, for any
	// URLs they support.
	//
	// Servers *SHOULD* ensure that referenced files are present in the CAS at the
	// time of the response, and (if supported) that they will remain available
	// for a reasonable period of time. The lifetimes of the referenced blobs *SHOULD*
	// be increased if necessary and applicable.
	// In the event that a client receives a reference to content that is no
	// longer present, it *MAY* re-issue the request with
	// `oldest_content_accepted` set to a more recent timestamp than the original
	// attempt, to induce a re-fetch from origin.
	//
	// Servers *MAY* cache fetched content and reuse it for subsequent requests,
	// subject to `oldest_content_accepted`.
	//
	// Servers *MAY* support the complementary [Push][build.bazel.remote.asset.v1.Push]
	// API and allow content to be directly inserted for use in future fetch
	// responses.
	//
	// Servers *MUST* ensure Fetch'd content matches all the specified
	// qualifiers except in the case of previously Push'd resources, for which
	// the server *MAY* trust the pushing client to have set the qualifiers
	// correctly, without validation.
	//
	// Servers not implementing the complementary [Push][build.bazel.remote.asset.v1.Push]
	// API *MUST* reject requests containing qualifiers it does not support.
	//
	// Servers *MAY* transform assets as part of the fetch. For example a
	// tarball fetched by [FetchDirectory][build.bazel.remote.asset.v1.Fetch.FetchDirectory]
	// might be unpacked, or a Git repository
	// fetched by [FetchBlob][build.bazel.remote.asset.v1.Fetch.FetchBlob]
	// might be passed through `git-archive`.
	//
	// Errors handling the requested assets will be returned as gRPC Status errors
	// here; errors outside the server's control will be returned inline in the
	// `status` field of the response (see comment there for details).
	// The possible RPC errors include:
	//   - `INVALID_ARGUMENT`: One or more arguments were invalid, such as a
	//     qualifier that is not supported by the server.
	//   - `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to
	//     perform the requested operation. The client may retry after a delay.
	//   - `UNAVAILABLE`: Due to a transient condition the operation could not be
	//     completed. The client should retry.
	//   - `INTERNAL`: An internal error occurred while performing the operation.
	//     The client should retry.
	//   - `DEADLINE_EXCEEDED`: The fetch could not be completed within the given
	//     RPC deadline. The client should retry for at least as long as the value
	//     provided in `timeout` field of the request.
	//
	// In the case of unsupported qualifiers, the server *SHOULD* additionally
	// send a [BadRequest][google.rpc.BadRequest] error detail where, for each
	// unsupported qualifier, there is a `FieldViolation` with a `field` of
	// `qualifiers.name` and a `description` of `"{qualifier}" not supported`
	// indicating the name of the unsupported qualifier.
	FetchBlob(ctx context.Context, in *FetchBlobRequest, opts ...grpc.CallOption) (*FetchBlobResponse, error)
	FetchDirectory(ctx context.Context, in *FetchDirectoryRequest, opts ...grpc.CallOption) (*FetchDirectoryResponse, error)
}

FetchClient is the client API for Fetch service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewFetchClient

func NewFetchClient(cc grpc.ClientConnInterface) FetchClient

type FetchDirectoryRequest

type FetchDirectoryRequest struct {

	// The instance of the execution system to operate against. A server may
	// support multiple instances of the execution system (with their own workers,
	// storage, caches, etc.). The server MAY require use of this field to select
	// between them in an implementation-defined fashion, otherwise it can be
	// omitted.
	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"`
	// The timeout for the underlying fetch, if content needs to be retrieved from
	// origin. This value is allowed to exceed the RPC deadline, in which case the
	// server *SHOULD* keep the fetch going after the RPC completes, to be made
	// available for future Fetch calls.
	//
	// If this timeout is exceeded on an attempt to retrieve content from origin
	// the client will receive DEADLINE_EXCEEDED in [FetchDirectoryResponse.status].
	Timeout *durationpb.Duration `protobuf:"bytes,2,opt,name=timeout,proto3" json:"timeout,omitempty"`
	// The oldest content the client is willing to accept, as measured from the
	// time it was Push'd or when the underlying retrieval from origin was
	// started.
	// Upon retries of Fetch requests that cannot be completed within a single
	// RPC, clients *SHOULD* provide the same value for subsequent requests as the
	// original, to simplify combining the request with the previous attempt.
	//
	// If unset, the client *SHOULD* accept content of any age.
	OldestContentAccepted *timestamppb.Timestamp `` /* 126-byte string literal not displayed */
	// The URI(s) of the content to fetch. These may be resources that the server
	// can directly fetch from origin, in which case multiple URIs *SHOULD*
	// represent the same content available at different locations (such as an
	// origin and secondary mirrors). These may also be URIs for content known to
	// the server through other mechanisms, e.g. pushed via the [Push][build.bazel.remote.asset.v1.Push]
	// service.
	//
	// Clients *MUST* supply at least one URI. Servers *MAY* match any one of the
	// supplied URIs.
	Uris []string `protobuf:"bytes,4,rep,name=uris,proto3" json:"uris,omitempty"`
	// Qualifiers sub-specifying the content to fetch - see comments on
	// [Qualifier][build.bazel.remote.asset.v1.Qualifier].
	// The same qualifiers apply to all URIs.
	//
	// Specified qualifier names *MUST* be unique.
	Qualifiers []*Qualifier `protobuf:"bytes,5,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"`
	// contains filtered or unexported fields
}

A request message for [Fetch.FetchDirectory][build.bazel.remote.asset.v1.Fetch.FetchDirectory].

func (*FetchDirectoryRequest) Descriptor deprecated

func (*FetchDirectoryRequest) Descriptor() ([]byte, []int)

Deprecated: Use FetchDirectoryRequest.ProtoReflect.Descriptor instead.

func (*FetchDirectoryRequest) GetInstanceName

func (x *FetchDirectoryRequest) GetInstanceName() string

func (*FetchDirectoryRequest) GetOldestContentAccepted

func (x *FetchDirectoryRequest) GetOldestContentAccepted() *timestamppb.Timestamp

func (*FetchDirectoryRequest) GetQualifiers

func (x *FetchDirectoryRequest) GetQualifiers() []*Qualifier

func (*FetchDirectoryRequest) GetTimeout

func (x *FetchDirectoryRequest) GetTimeout() *durationpb.Duration

func (*FetchDirectoryRequest) GetUris

func (x *FetchDirectoryRequest) GetUris() []string

func (*FetchDirectoryRequest) ProtoMessage

func (*FetchDirectoryRequest) ProtoMessage()

func (*FetchDirectoryRequest) ProtoReflect

func (x *FetchDirectoryRequest) ProtoReflect() protoreflect.Message

func (*FetchDirectoryRequest) Reset

func (x *FetchDirectoryRequest) Reset()

func (*FetchDirectoryRequest) String

func (x *FetchDirectoryRequest) String() string

type FetchDirectoryResponse

type FetchDirectoryResponse struct {

	// If the status has a code other than `OK`, it indicates that the operation
	// was unable to be completed for reasons outside the servers' control.
	// The possible fetch errors include:
	//   - `DEADLINE_EXCEEDED`: The operation could not be completed within the
	//     specified timeout.
	//   - `NOT_FOUND`: The requested asset was not found at the specified location.
	//   - `PERMISSION_DENIED`: The request was rejected by a remote server, or
	//     requested an asset from a disallowed origin.
	//   - `ABORTED`: The operation could not be completed, typically due to a
	//     failed consistency check.
	//   - `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to
	//     perform the requested operation. The client may retry after a delay.
	Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
	// The uri from the request that resulted in a successful retrieval, or from
	// which the error indicated in `status` was obtained.
	Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"`
	// Any qualifiers known to the server and of interest to clients.
	Qualifiers []*Qualifier `protobuf:"bytes,3,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"`
	// A minimum timestamp the content is expected to be available through.
	// Servers *MAY* omit this field, if not known with confidence.
	ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"`
	// The result of the fetch, if the status had code `OK`.
	// the root digest of a directory tree, suitable for fetching via
	// [ContentAddressableStorage.GetTree].
	RootDirectoryDigest *v2.Digest `protobuf:"bytes,5,opt,name=root_directory_digest,json=rootDirectoryDigest,proto3" json:"root_directory_digest,omitempty"`
	// contains filtered or unexported fields
}

A response message for [Fetch.FetchDirectory][build.bazel.remote.asset.v1.Fetch.FetchDirectory].

func (*FetchDirectoryResponse) Descriptor deprecated

func (*FetchDirectoryResponse) Descriptor() ([]byte, []int)

Deprecated: Use FetchDirectoryResponse.ProtoReflect.Descriptor instead.

func (*FetchDirectoryResponse) GetExpiresAt

func (x *FetchDirectoryResponse) GetExpiresAt() *timestamppb.Timestamp

func (*FetchDirectoryResponse) GetQualifiers

func (x *FetchDirectoryResponse) GetQualifiers() []*Qualifier

func (*FetchDirectoryResponse) GetRootDirectoryDigest

func (x *FetchDirectoryResponse) GetRootDirectoryDigest() *v2.Digest

func (*FetchDirectoryResponse) GetStatus

func (x *FetchDirectoryResponse) GetStatus() *status.Status

func (*FetchDirectoryResponse) GetUri

func (x *FetchDirectoryResponse) GetUri() string

func (*FetchDirectoryResponse) ProtoMessage

func (*FetchDirectoryResponse) ProtoMessage()

func (*FetchDirectoryResponse) ProtoReflect

func (x *FetchDirectoryResponse) ProtoReflect() protoreflect.Message

func (*FetchDirectoryResponse) Reset

func (x *FetchDirectoryResponse) Reset()

func (*FetchDirectoryResponse) String

func (x *FetchDirectoryResponse) String() string

type FetchServer

type FetchServer interface {
	// Resolve or fetch referenced assets, making them available to the caller and
	// other consumers in the [ContentAddressableStorage][build.bazel.remote.execution.v2.ContentAddressableStorage].
	//
	// Servers *MAY* fetch content that they do not already have cached, for any
	// URLs they support.
	//
	// Servers *SHOULD* ensure that referenced files are present in the CAS at the
	// time of the response, and (if supported) that they will remain available
	// for a reasonable period of time. The lifetimes of the referenced blobs *SHOULD*
	// be increased if necessary and applicable.
	// In the event that a client receives a reference to content that is no
	// longer present, it *MAY* re-issue the request with
	// `oldest_content_accepted` set to a more recent timestamp than the original
	// attempt, to induce a re-fetch from origin.
	//
	// Servers *MAY* cache fetched content and reuse it for subsequent requests,
	// subject to `oldest_content_accepted`.
	//
	// Servers *MAY* support the complementary [Push][build.bazel.remote.asset.v1.Push]
	// API and allow content to be directly inserted for use in future fetch
	// responses.
	//
	// Servers *MUST* ensure Fetch'd content matches all the specified
	// qualifiers except in the case of previously Push'd resources, for which
	// the server *MAY* trust the pushing client to have set the qualifiers
	// correctly, without validation.
	//
	// Servers not implementing the complementary [Push][build.bazel.remote.asset.v1.Push]
	// API *MUST* reject requests containing qualifiers it does not support.
	//
	// Servers *MAY* transform assets as part of the fetch. For example a
	// tarball fetched by [FetchDirectory][build.bazel.remote.asset.v1.Fetch.FetchDirectory]
	// might be unpacked, or a Git repository
	// fetched by [FetchBlob][build.bazel.remote.asset.v1.Fetch.FetchBlob]
	// might be passed through `git-archive`.
	//
	// Errors handling the requested assets will be returned as gRPC Status errors
	// here; errors outside the server's control will be returned inline in the
	// `status` field of the response (see comment there for details).
	// The possible RPC errors include:
	//   - `INVALID_ARGUMENT`: One or more arguments were invalid, such as a
	//     qualifier that is not supported by the server.
	//   - `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to
	//     perform the requested operation. The client may retry after a delay.
	//   - `UNAVAILABLE`: Due to a transient condition the operation could not be
	//     completed. The client should retry.
	//   - `INTERNAL`: An internal error occurred while performing the operation.
	//     The client should retry.
	//   - `DEADLINE_EXCEEDED`: The fetch could not be completed within the given
	//     RPC deadline. The client should retry for at least as long as the value
	//     provided in `timeout` field of the request.
	//
	// In the case of unsupported qualifiers, the server *SHOULD* additionally
	// send a [BadRequest][google.rpc.BadRequest] error detail where, for each
	// unsupported qualifier, there is a `FieldViolation` with a `field` of
	// `qualifiers.name` and a `description` of `"{qualifier}" not supported`
	// indicating the name of the unsupported qualifier.
	FetchBlob(context.Context, *FetchBlobRequest) (*FetchBlobResponse, error)
	FetchDirectory(context.Context, *FetchDirectoryRequest) (*FetchDirectoryResponse, error)
}

FetchServer is the server API for Fetch service.

type PushBlobRequest

type PushBlobRequest struct {

	// The instance of the execution system to operate against. A server may
	// support multiple instances of the execution system (with their own workers,
	// storage, caches, etc.). The server MAY require use of this field to select
	// between them in an implementation-defined fashion, otherwise it can be
	// omitted.
	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"`
	// The URI(s) of the content to associate. If multiple URIs are specified, the
	// pushed content will be available to fetch by specifying any of them.
	Uris []string `protobuf:"bytes,2,rep,name=uris,proto3" json:"uris,omitempty"`
	// Qualifiers sub-specifying the content that is being pushed - see comments
	// on [Qualifier][build.bazel.remote.asset.v1.Qualifier].
	// The same qualifiers apply to all URIs.
	Qualifiers []*Qualifier `protobuf:"bytes,3,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"`
	// A time after which this content should stop being returned via [FetchBlob][build.bazel.remote.asset.v1.Fetch.FetchBlob].
	// Servers *MAY* expire content early, e.g. due to storage pressure.
	ExpireAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expire_at,json=expireAt,proto3" json:"expire_at,omitempty"`
	// The blob to associate.
	BlobDigest *v2.Digest `protobuf:"bytes,5,opt,name=blob_digest,json=blobDigest,proto3" json:"blob_digest,omitempty"`
	// Referenced blobs or directories that need to not expire before expiration
	// of this association, in addition to `blob_digest` itself.
	// These fields are hints - clients *MAY* omit them, and servers *SHOULD*
	// respect them, at the risk of increased incidents of Fetch responses
	// indirectly referencing unavailable blobs.
	ReferencesBlobs       []*v2.Digest `protobuf:"bytes,6,rep,name=references_blobs,json=referencesBlobs,proto3" json:"references_blobs,omitempty"`
	ReferencesDirectories []*v2.Digest `protobuf:"bytes,7,rep,name=references_directories,json=referencesDirectories,proto3" json:"references_directories,omitempty"`
	// contains filtered or unexported fields
}

A request message for [Push.PushBlob][build.bazel.remote.asset.v1.Push.PushBlob].

func (*PushBlobRequest) Descriptor deprecated

func (*PushBlobRequest) Descriptor() ([]byte, []int)

Deprecated: Use PushBlobRequest.ProtoReflect.Descriptor instead.

func (*PushBlobRequest) GetBlobDigest

func (x *PushBlobRequest) GetBlobDigest() *v2.Digest

func (*PushBlobRequest) GetExpireAt

func (x *PushBlobRequest) GetExpireAt() *timestamppb.Timestamp

func (*PushBlobRequest) GetInstanceName

func (x *PushBlobRequest) GetInstanceName() string

func (*PushBlobRequest) GetQualifiers

func (x *PushBlobRequest) GetQualifiers() []*Qualifier

func (*PushBlobRequest) GetReferencesBlobs

func (x *PushBlobRequest) GetReferencesBlobs() []*v2.Digest

func (*PushBlobRequest) GetReferencesDirectories

func (x *PushBlobRequest) GetReferencesDirectories() []*v2.Digest

func (*PushBlobRequest) GetUris

func (x *PushBlobRequest) GetUris() []string

func (*PushBlobRequest) ProtoMessage

func (*PushBlobRequest) ProtoMessage()

func (*PushBlobRequest) ProtoReflect

func (x *PushBlobRequest) ProtoReflect() protoreflect.Message

func (*PushBlobRequest) Reset

func (x *PushBlobRequest) Reset()

func (*PushBlobRequest) String

func (x *PushBlobRequest) String() string

type PushBlobResponse

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

A response message for [Push.PushBlob][build.bazel.remote.asset.v1.Push.PushBlob].

func (*PushBlobResponse) Descriptor deprecated

func (*PushBlobResponse) Descriptor() ([]byte, []int)

Deprecated: Use PushBlobResponse.ProtoReflect.Descriptor instead.

func (*PushBlobResponse) ProtoMessage

func (*PushBlobResponse) ProtoMessage()

func (*PushBlobResponse) ProtoReflect

func (x *PushBlobResponse) ProtoReflect() protoreflect.Message

func (*PushBlobResponse) Reset

func (x *PushBlobResponse) Reset()

func (*PushBlobResponse) String

func (x *PushBlobResponse) String() string

type PushClient

type PushClient interface {
	// These APIs associate the identifying information of a resource, as
	// indicated by URI and optionally Qualifiers, with content available in the
	// CAS. For example, associating a repository url and a commit id with a
	// Directory Digest.
	//
	// Servers *SHOULD* only allow trusted clients to associate content, and *MAY*
	// only allow certain URIs to be pushed.
	//
	// Clients *MUST* ensure associated content is available in CAS prior to
	// pushing.
	//
	// Clients *MUST* ensure the Qualifiers listed correctly match the contents,
	// and Servers *MAY* trust these values without validation.
	// Fetch servers *MAY* require exact match of all qualifiers when returning
	// content previously pushed, or allow fetching content with only a subset of
	// the qualifiers specified on Push.
	//
	// Clients can specify expiration information that the server *SHOULD*
	// respect. Subsequent requests can be used to alter the expiration time.
	//
	// A minimal compliant Fetch implementation may support only Push'd content
	// and return `NOT_FOUND` for any resource that was not pushed first.
	// Alternatively, a compliant implementation may choose to not support Push
	// and only return resources that can be Fetch'd from origin.
	//
	// Errors will be returned as gRPC Status errors.
	// The possible RPC errors include:
	//   - `INVALID_ARGUMENT`: One or more arguments to the RPC were invalid.
	//   - `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to
	//     perform the requested operation. The client may retry after a delay.
	//   - `UNAVAILABLE`: Due to a transient condition the operation could not be
	//     completed. The client should retry.
	//   - `INTERNAL`: An internal error occurred while performing the operation.
	//     The client should retry.
	PushBlob(ctx context.Context, in *PushBlobRequest, opts ...grpc.CallOption) (*PushBlobResponse, error)
	PushDirectory(ctx context.Context, in *PushDirectoryRequest, opts ...grpc.CallOption) (*PushDirectoryResponse, error)
}

PushClient is the client API for Push service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewPushClient

func NewPushClient(cc grpc.ClientConnInterface) PushClient

type PushDirectoryRequest

type PushDirectoryRequest struct {

	// The instance of the execution system to operate against. A server may
	// support multiple instances of the execution system (with their own workers,
	// storage, caches, etc.). The server MAY require use of this field to select
	// between them in an implementation-defined fashion, otherwise it can be
	// omitted.
	InstanceName string `protobuf:"bytes,1,opt,name=instance_name,json=instanceName,proto3" json:"instance_name,omitempty"`
	// The URI(s) of the content to associate. If multiple URIs are specified, the
	// pushed content will be available to fetch by specifying any of them.
	Uris []string `protobuf:"bytes,2,rep,name=uris,proto3" json:"uris,omitempty"`
	// Qualifiers sub-specifying the content that is being pushed - see comments
	// on [Qualifier][build.bazel.remote.asset.v1.Qualifier].
	// The same qualifiers apply to all URIs.
	Qualifiers []*Qualifier `protobuf:"bytes,3,rep,name=qualifiers,proto3" json:"qualifiers,omitempty"`
	// A time after which this content should stop being returned via
	// [FetchDirectory][build.bazel.remote.asset.v1.Fetch.FetchDirectory].
	// Servers *MAY* expire content early, e.g. due to storage pressure.
	ExpireAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=expire_at,json=expireAt,proto3" json:"expire_at,omitempty"`
	// Directory to associate
	RootDirectoryDigest *v2.Digest `protobuf:"bytes,5,opt,name=root_directory_digest,json=rootDirectoryDigest,proto3" json:"root_directory_digest,omitempty"`
	// Referenced blobs or directories that need to not expire before expiration
	// of this association, in addition to `root_directory_digest` itself.
	// These fields are hints - clients *MAY* omit them, and servers *SHOULD*
	// respect them, at the risk of increased incidents of Fetch responses
	// indirectly referencing unavailable blobs.
	ReferencesBlobs       []*v2.Digest `protobuf:"bytes,6,rep,name=references_blobs,json=referencesBlobs,proto3" json:"references_blobs,omitempty"`
	ReferencesDirectories []*v2.Digest `protobuf:"bytes,7,rep,name=references_directories,json=referencesDirectories,proto3" json:"references_directories,omitempty"`
	// contains filtered or unexported fields
}

A request message for [Push.PushDirectory][build.bazel.remote.asset.v1.Push.PushDirectory].

func (*PushDirectoryRequest) Descriptor deprecated

func (*PushDirectoryRequest) Descriptor() ([]byte, []int)

Deprecated: Use PushDirectoryRequest.ProtoReflect.Descriptor instead.

func (*PushDirectoryRequest) GetExpireAt

func (x *PushDirectoryRequest) GetExpireAt() *timestamppb.Timestamp

func (*PushDirectoryRequest) GetInstanceName

func (x *PushDirectoryRequest) GetInstanceName() string

func (*PushDirectoryRequest) GetQualifiers

func (x *PushDirectoryRequest) GetQualifiers() []*Qualifier

func (*PushDirectoryRequest) GetReferencesBlobs

func (x *PushDirectoryRequest) GetReferencesBlobs() []*v2.Digest

func (*PushDirectoryRequest) GetReferencesDirectories

func (x *PushDirectoryRequest) GetReferencesDirectories() []*v2.Digest

func (*PushDirectoryRequest) GetRootDirectoryDigest

func (x *PushDirectoryRequest) GetRootDirectoryDigest() *v2.Digest

func (*PushDirectoryRequest) GetUris

func (x *PushDirectoryRequest) GetUris() []string

func (*PushDirectoryRequest) ProtoMessage

func (*PushDirectoryRequest) ProtoMessage()

func (*PushDirectoryRequest) ProtoReflect

func (x *PushDirectoryRequest) ProtoReflect() protoreflect.Message

func (*PushDirectoryRequest) Reset

func (x *PushDirectoryRequest) Reset()

func (*PushDirectoryRequest) String

func (x *PushDirectoryRequest) String() string

type PushDirectoryResponse

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

A response message for [Push.PushDirectory][build.bazel.remote.asset.v1.Push.PushDirectory].

func (*PushDirectoryResponse) Descriptor deprecated

func (*PushDirectoryResponse) Descriptor() ([]byte, []int)

Deprecated: Use PushDirectoryResponse.ProtoReflect.Descriptor instead.

func (*PushDirectoryResponse) ProtoMessage

func (*PushDirectoryResponse) ProtoMessage()

func (*PushDirectoryResponse) ProtoReflect

func (x *PushDirectoryResponse) ProtoReflect() protoreflect.Message

func (*PushDirectoryResponse) Reset

func (x *PushDirectoryResponse) Reset()

func (*PushDirectoryResponse) String

func (x *PushDirectoryResponse) String() string

type PushServer

type PushServer interface {
	// These APIs associate the identifying information of a resource, as
	// indicated by URI and optionally Qualifiers, with content available in the
	// CAS. For example, associating a repository url and a commit id with a
	// Directory Digest.
	//
	// Servers *SHOULD* only allow trusted clients to associate content, and *MAY*
	// only allow certain URIs to be pushed.
	//
	// Clients *MUST* ensure associated content is available in CAS prior to
	// pushing.
	//
	// Clients *MUST* ensure the Qualifiers listed correctly match the contents,
	// and Servers *MAY* trust these values without validation.
	// Fetch servers *MAY* require exact match of all qualifiers when returning
	// content previously pushed, or allow fetching content with only a subset of
	// the qualifiers specified on Push.
	//
	// Clients can specify expiration information that the server *SHOULD*
	// respect. Subsequent requests can be used to alter the expiration time.
	//
	// A minimal compliant Fetch implementation may support only Push'd content
	// and return `NOT_FOUND` for any resource that was not pushed first.
	// Alternatively, a compliant implementation may choose to not support Push
	// and only return resources that can be Fetch'd from origin.
	//
	// Errors will be returned as gRPC Status errors.
	// The possible RPC errors include:
	//   - `INVALID_ARGUMENT`: One or more arguments to the RPC were invalid.
	//   - `RESOURCE_EXHAUSTED`: There is insufficient quota of some resource to
	//     perform the requested operation. The client may retry after a delay.
	//   - `UNAVAILABLE`: Due to a transient condition the operation could not be
	//     completed. The client should retry.
	//   - `INTERNAL`: An internal error occurred while performing the operation.
	//     The client should retry.
	PushBlob(context.Context, *PushBlobRequest) (*PushBlobResponse, error)
	PushDirectory(context.Context, *PushDirectoryRequest) (*PushDirectoryResponse, error)
}

PushServer is the server API for Push service.

type Qualifier

type Qualifier struct {

	// The "name" of the qualifier, for example "resource_type".
	// No separation is made between 'standard' and 'nonstandard'
	// qualifiers, in accordance with https://tools.ietf.org/html/rfc6648,
	// however implementers *SHOULD* take care to avoid ambiguity.
	Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	// The "value" of the qualifier. Semantics will be dictated by the name.
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// contains filtered or unexported fields
}

Qualifiers are used to disambiguate or sub-select content that shares a URI. This may include specifying a particular commit or branch, in the case of URIs referencing a repository; they could also be used to specify a particular subdirectory of a repository or tarball. Qualifiers may also be used to ensure content matches what the client expects, even when there is no ambiguity to be had - for example, a qualifier specifying a checksum value.

In cases where the semantics of the request are not immediately clear from the URL and/or qualifiers - e.g. dictated by URL scheme - it is recommended to use an additional qualifier to remove the ambiguity. The `resource_type` qualifier is recommended for this purpose.

Qualifiers may be supplied in any order.

func (*Qualifier) Descriptor deprecated

func (*Qualifier) Descriptor() ([]byte, []int)

Deprecated: Use Qualifier.ProtoReflect.Descriptor instead.

func (*Qualifier) GetName

func (x *Qualifier) GetName() string

func (*Qualifier) GetValue

func (x *Qualifier) GetValue() string

func (*Qualifier) ProtoMessage

func (*Qualifier) ProtoMessage()

func (*Qualifier) ProtoReflect

func (x *Qualifier) ProtoReflect() protoreflect.Message

func (*Qualifier) Reset

func (x *Qualifier) Reset()

func (*Qualifier) String

func (x *Qualifier) String() string

type UnimplementedFetchServer

type UnimplementedFetchServer struct {
}

UnimplementedFetchServer can be embedded to have forward compatible implementations.

func (*UnimplementedFetchServer) FetchBlob

func (*UnimplementedFetchServer) FetchDirectory

type UnimplementedPushServer

type UnimplementedPushServer struct {
}

UnimplementedPushServer can be embedded to have forward compatible implementations.

func (*UnimplementedPushServer) PushBlob

func (*UnimplementedPushServer) PushDirectory

Jump to

Keyboard shortcuts

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