remoteasset

package
v2.4.4 Latest Latest
Warning

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

Go to latest
Published: May 11, 2024 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

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 *duration.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 *timestamp.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"`
	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
	XXX_unrecognized     []byte       `json:"-"`
	XXX_sizecache        int32        `json:"-"`
}

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

func (*FetchBlobRequest) Descriptor

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

func (*FetchBlobRequest) GetInstanceName

func (m *FetchBlobRequest) GetInstanceName() string

func (*FetchBlobRequest) GetOldestContentAccepted

func (m *FetchBlobRequest) GetOldestContentAccepted() *timestamp.Timestamp

func (*FetchBlobRequest) GetQualifiers

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

func (*FetchBlobRequest) GetTimeout

func (m *FetchBlobRequest) GetTimeout() *duration.Duration

func (*FetchBlobRequest) GetUris

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

func (*FetchBlobRequest) ProtoMessage

func (*FetchBlobRequest) ProtoMessage()

func (*FetchBlobRequest) Reset

func (m *FetchBlobRequest) Reset()

func (*FetchBlobRequest) String

func (m *FetchBlobRequest) String() string

func (*FetchBlobRequest) XXX_DiscardUnknown

func (m *FetchBlobRequest) XXX_DiscardUnknown()

func (*FetchBlobRequest) XXX_Marshal

func (m *FetchBlobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*FetchBlobRequest) XXX_Merge

func (m *FetchBlobRequest) XXX_Merge(src proto.Message)

func (*FetchBlobRequest) XXX_Size

func (m *FetchBlobRequest) XXX_Size() int

func (*FetchBlobRequest) XXX_Unmarshal

func (m *FetchBlobRequest) XXX_Unmarshal(b []byte) error

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.
	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 *timestamp.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"`
	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
	XXX_unrecognized     []byte     `json:"-"`
	XXX_sizecache        int32      `json:"-"`
}

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

func (*FetchBlobResponse) Descriptor

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

func (*FetchBlobResponse) GetBlobDigest

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

func (*FetchBlobResponse) GetExpiresAt

func (m *FetchBlobResponse) GetExpiresAt() *timestamp.Timestamp

func (*FetchBlobResponse) GetQualifiers

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

func (*FetchBlobResponse) GetStatus

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

func (*FetchBlobResponse) GetUri

func (m *FetchBlobResponse) GetUri() string

func (*FetchBlobResponse) ProtoMessage

func (*FetchBlobResponse) ProtoMessage()

func (*FetchBlobResponse) Reset

func (m *FetchBlobResponse) Reset()

func (*FetchBlobResponse) String

func (m *FetchBlobResponse) String() string

func (*FetchBlobResponse) XXX_DiscardUnknown

func (m *FetchBlobResponse) XXX_DiscardUnknown()

func (*FetchBlobResponse) XXX_Marshal

func (m *FetchBlobResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*FetchBlobResponse) XXX_Merge

func (m *FetchBlobResponse) XXX_Merge(src proto.Message)

func (*FetchBlobResponse) XXX_Size

func (m *FetchBlobResponse) XXX_Size() int

func (*FetchBlobResponse) XXX_Unmarshal

func (m *FetchBlobResponse) XXX_Unmarshal(b []byte) error

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.ClientConn) 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 *duration.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 *timestamp.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"`
	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
	XXX_unrecognized     []byte       `json:"-"`
	XXX_sizecache        int32        `json:"-"`
}

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

func (*FetchDirectoryRequest) Descriptor

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

func (*FetchDirectoryRequest) GetInstanceName

func (m *FetchDirectoryRequest) GetInstanceName() string

func (*FetchDirectoryRequest) GetOldestContentAccepted

func (m *FetchDirectoryRequest) GetOldestContentAccepted() *timestamp.Timestamp

func (*FetchDirectoryRequest) GetQualifiers

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

func (*FetchDirectoryRequest) GetTimeout

func (m *FetchDirectoryRequest) GetTimeout() *duration.Duration

func (*FetchDirectoryRequest) GetUris

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

func (*FetchDirectoryRequest) ProtoMessage

func (*FetchDirectoryRequest) ProtoMessage()

func (*FetchDirectoryRequest) Reset

func (m *FetchDirectoryRequest) Reset()

func (*FetchDirectoryRequest) String

func (m *FetchDirectoryRequest) String() string

func (*FetchDirectoryRequest) XXX_DiscardUnknown

func (m *FetchDirectoryRequest) XXX_DiscardUnknown()

func (*FetchDirectoryRequest) XXX_Marshal

func (m *FetchDirectoryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*FetchDirectoryRequest) XXX_Merge

func (m *FetchDirectoryRequest) XXX_Merge(src proto.Message)

func (*FetchDirectoryRequest) XXX_Size

func (m *FetchDirectoryRequest) XXX_Size() int

func (*FetchDirectoryRequest) XXX_Unmarshal

func (m *FetchDirectoryRequest) XXX_Unmarshal(b []byte) error

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.
	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 *timestamp.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"`
	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
	XXX_unrecognized     []byte     `json:"-"`
	XXX_sizecache        int32      `json:"-"`
}

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

func (*FetchDirectoryResponse) Descriptor

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

func (*FetchDirectoryResponse) GetExpiresAt

func (m *FetchDirectoryResponse) GetExpiresAt() *timestamp.Timestamp

func (*FetchDirectoryResponse) GetQualifiers

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

func (*FetchDirectoryResponse) GetRootDirectoryDigest

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

func (*FetchDirectoryResponse) GetStatus

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

func (*FetchDirectoryResponse) GetUri

func (m *FetchDirectoryResponse) GetUri() string

func (*FetchDirectoryResponse) ProtoMessage

func (*FetchDirectoryResponse) ProtoMessage()

func (*FetchDirectoryResponse) Reset

func (m *FetchDirectoryResponse) Reset()

func (*FetchDirectoryResponse) String

func (m *FetchDirectoryResponse) String() string

func (*FetchDirectoryResponse) XXX_DiscardUnknown

func (m *FetchDirectoryResponse) XXX_DiscardUnknown()

func (*FetchDirectoryResponse) XXX_Marshal

func (m *FetchDirectoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*FetchDirectoryResponse) XXX_Merge

func (m *FetchDirectoryResponse) XXX_Merge(src proto.Message)

func (*FetchDirectoryResponse) XXX_Size

func (m *FetchDirectoryResponse) XXX_Size() int

func (*FetchDirectoryResponse) XXX_Unmarshal

func (m *FetchDirectoryResponse) XXX_Unmarshal(b []byte) error

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 *timestamp.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"`
	XXX_NoUnkeyedLiteral  struct{}     `json:"-"`
	XXX_unrecognized      []byte       `json:"-"`
	XXX_sizecache         int32        `json:"-"`
}

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

func (*PushBlobRequest) Descriptor

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

func (*PushBlobRequest) GetBlobDigest

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

func (*PushBlobRequest) GetExpireAt

func (m *PushBlobRequest) GetExpireAt() *timestamp.Timestamp

func (*PushBlobRequest) GetInstanceName

func (m *PushBlobRequest) GetInstanceName() string

func (*PushBlobRequest) GetQualifiers

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

func (*PushBlobRequest) GetReferencesBlobs

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

func (*PushBlobRequest) GetReferencesDirectories

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

func (*PushBlobRequest) GetUris

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

func (*PushBlobRequest) ProtoMessage

func (*PushBlobRequest) ProtoMessage()

func (*PushBlobRequest) Reset

func (m *PushBlobRequest) Reset()

func (*PushBlobRequest) String

func (m *PushBlobRequest) String() string

func (*PushBlobRequest) XXX_DiscardUnknown

func (m *PushBlobRequest) XXX_DiscardUnknown()

func (*PushBlobRequest) XXX_Marshal

func (m *PushBlobRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*PushBlobRequest) XXX_Merge

func (m *PushBlobRequest) XXX_Merge(src proto.Message)

func (*PushBlobRequest) XXX_Size

func (m *PushBlobRequest) XXX_Size() int

func (*PushBlobRequest) XXX_Unmarshal

func (m *PushBlobRequest) XXX_Unmarshal(b []byte) error

type PushBlobResponse

type PushBlobResponse struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (*PushBlobResponse) Descriptor

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

func (*PushBlobResponse) ProtoMessage

func (*PushBlobResponse) ProtoMessage()

func (*PushBlobResponse) Reset

func (m *PushBlobResponse) Reset()

func (*PushBlobResponse) String

func (m *PushBlobResponse) String() string

func (*PushBlobResponse) XXX_DiscardUnknown

func (m *PushBlobResponse) XXX_DiscardUnknown()

func (*PushBlobResponse) XXX_Marshal

func (m *PushBlobResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*PushBlobResponse) XXX_Merge

func (m *PushBlobResponse) XXX_Merge(src proto.Message)

func (*PushBlobResponse) XXX_Size

func (m *PushBlobResponse) XXX_Size() int

func (*PushBlobResponse) XXX_Unmarshal

func (m *PushBlobResponse) XXX_Unmarshal(b []byte) error

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.ClientConn) 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 *timestamp.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"`
	XXX_NoUnkeyedLiteral  struct{}     `json:"-"`
	XXX_unrecognized      []byte       `json:"-"`
	XXX_sizecache         int32        `json:"-"`
}

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

func (*PushDirectoryRequest) Descriptor

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

func (*PushDirectoryRequest) GetExpireAt

func (m *PushDirectoryRequest) GetExpireAt() *timestamp.Timestamp

func (*PushDirectoryRequest) GetInstanceName

func (m *PushDirectoryRequest) GetInstanceName() string

func (*PushDirectoryRequest) GetQualifiers

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

func (*PushDirectoryRequest) GetReferencesBlobs

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

func (*PushDirectoryRequest) GetReferencesDirectories

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

func (*PushDirectoryRequest) GetRootDirectoryDigest

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

func (*PushDirectoryRequest) GetUris

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

func (*PushDirectoryRequest) ProtoMessage

func (*PushDirectoryRequest) ProtoMessage()

func (*PushDirectoryRequest) Reset

func (m *PushDirectoryRequest) Reset()

func (*PushDirectoryRequest) String

func (m *PushDirectoryRequest) String() string

func (*PushDirectoryRequest) XXX_DiscardUnknown

func (m *PushDirectoryRequest) XXX_DiscardUnknown()

func (*PushDirectoryRequest) XXX_Marshal

func (m *PushDirectoryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*PushDirectoryRequest) XXX_Merge

func (m *PushDirectoryRequest) XXX_Merge(src proto.Message)

func (*PushDirectoryRequest) XXX_Size

func (m *PushDirectoryRequest) XXX_Size() int

func (*PushDirectoryRequest) XXX_Unmarshal

func (m *PushDirectoryRequest) XXX_Unmarshal(b []byte) error

type PushDirectoryResponse

type PushDirectoryResponse struct {
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

func (*PushDirectoryResponse) Descriptor

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

func (*PushDirectoryResponse) ProtoMessage

func (*PushDirectoryResponse) ProtoMessage()

func (*PushDirectoryResponse) Reset

func (m *PushDirectoryResponse) Reset()

func (*PushDirectoryResponse) String

func (m *PushDirectoryResponse) String() string

func (*PushDirectoryResponse) XXX_DiscardUnknown

func (m *PushDirectoryResponse) XXX_DiscardUnknown()

func (*PushDirectoryResponse) XXX_Marshal

func (m *PushDirectoryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*PushDirectoryResponse) XXX_Merge

func (m *PushDirectoryResponse) XXX_Merge(src proto.Message)

func (*PushDirectoryResponse) XXX_Size

func (m *PushDirectoryResponse) XXX_Size() int

func (*PushDirectoryResponse) XXX_Unmarshal

func (m *PushDirectoryResponse) XXX_Unmarshal(b []byte) error

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"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

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

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

func (*Qualifier) GetName

func (m *Qualifier) GetName() string

func (*Qualifier) GetValue

func (m *Qualifier) GetValue() string

func (*Qualifier) ProtoMessage

func (*Qualifier) ProtoMessage()

func (*Qualifier) Reset

func (m *Qualifier) Reset()

func (*Qualifier) String

func (m *Qualifier) String() string

func (*Qualifier) XXX_DiscardUnknown

func (m *Qualifier) XXX_DiscardUnknown()

func (*Qualifier) XXX_Marshal

func (m *Qualifier) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Qualifier) XXX_Merge

func (m *Qualifier) XXX_Merge(src proto.Message)

func (*Qualifier) XXX_Size

func (m *Qualifier) XXX_Size() int

func (*Qualifier) XXX_Unmarshal

func (m *Qualifier) XXX_Unmarshal(b []byte) error

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