Files
coder/tailnet/proto/tailnet_drpc.pb.go
T
Ethan b1298a3c1e feat: add WorkspaceUpdates tailnet RPC (#14847)
Closes #14716
Closes #14717

Adds a new user-scoped tailnet API endpoint (`api/v2/tailnet`) with a new RPC stream for receiving updates on workspaces owned by a specific user, as defined in #14716. 

When a stream is started, the `WorkspaceUpdatesProvider` will begin listening on the user-scoped pubsub events implemented in #14964. When a relevant event type is seen (such as a workspace state transition), the provider will query the DB for all the workspaces (and agents) owned by the user. This gets compared against the result of the previous query to produce a set of workspace updates. 

Workspace updates can be requested for any user ID, however only workspaces the authorised user is permitted to `ActionRead` will have their updates streamed.
Opening a tunnel to an agent requires that the user can perform `ActionSSH` against the workspace containing it.
2024-11-01 14:53:53 +11:00

367 lines
12 KiB
Go

// Code generated by protoc-gen-go-drpc. DO NOT EDIT.
// protoc-gen-go-drpc version: v0.0.33
// source: tailnet/proto/tailnet.proto
package proto
import (
context "context"
errors "errors"
protojson "google.golang.org/protobuf/encoding/protojson"
proto "google.golang.org/protobuf/proto"
drpc "storj.io/drpc"
drpcerr "storj.io/drpc/drpcerr"
)
type drpcEncoding_File_tailnet_proto_tailnet_proto struct{}
func (drpcEncoding_File_tailnet_proto_tailnet_proto) Marshal(msg drpc.Message) ([]byte, error) {
return proto.Marshal(msg.(proto.Message))
}
func (drpcEncoding_File_tailnet_proto_tailnet_proto) MarshalAppend(buf []byte, msg drpc.Message) ([]byte, error) {
return proto.MarshalOptions{}.MarshalAppend(buf, msg.(proto.Message))
}
func (drpcEncoding_File_tailnet_proto_tailnet_proto) Unmarshal(buf []byte, msg drpc.Message) error {
return proto.Unmarshal(buf, msg.(proto.Message))
}
func (drpcEncoding_File_tailnet_proto_tailnet_proto) JSONMarshal(msg drpc.Message) ([]byte, error) {
return protojson.Marshal(msg.(proto.Message))
}
func (drpcEncoding_File_tailnet_proto_tailnet_proto) JSONUnmarshal(buf []byte, msg drpc.Message) error {
return protojson.Unmarshal(buf, msg.(proto.Message))
}
type DRPCTailnetClient interface {
DRPCConn() drpc.Conn
PostTelemetry(ctx context.Context, in *TelemetryRequest) (*TelemetryResponse, error)
StreamDERPMaps(ctx context.Context, in *StreamDERPMapsRequest) (DRPCTailnet_StreamDERPMapsClient, error)
RefreshResumeToken(ctx context.Context, in *RefreshResumeTokenRequest) (*RefreshResumeTokenResponse, error)
Coordinate(ctx context.Context) (DRPCTailnet_CoordinateClient, error)
WorkspaceUpdates(ctx context.Context, in *WorkspaceUpdatesRequest) (DRPCTailnet_WorkspaceUpdatesClient, error)
}
type drpcTailnetClient struct {
cc drpc.Conn
}
func NewDRPCTailnetClient(cc drpc.Conn) DRPCTailnetClient {
return &drpcTailnetClient{cc}
}
func (c *drpcTailnetClient) DRPCConn() drpc.Conn { return c.cc }
func (c *drpcTailnetClient) PostTelemetry(ctx context.Context, in *TelemetryRequest) (*TelemetryResponse, error) {
out := new(TelemetryResponse)
err := c.cc.Invoke(ctx, "/coder.tailnet.v2.Tailnet/PostTelemetry", drpcEncoding_File_tailnet_proto_tailnet_proto{}, in, out)
if err != nil {
return nil, err
}
return out, nil
}
func (c *drpcTailnetClient) StreamDERPMaps(ctx context.Context, in *StreamDERPMapsRequest) (DRPCTailnet_StreamDERPMapsClient, error) {
stream, err := c.cc.NewStream(ctx, "/coder.tailnet.v2.Tailnet/StreamDERPMaps", drpcEncoding_File_tailnet_proto_tailnet_proto{})
if err != nil {
return nil, err
}
x := &drpcTailnet_StreamDERPMapsClient{stream}
if err := x.MsgSend(in, drpcEncoding_File_tailnet_proto_tailnet_proto{}); err != nil {
return nil, err
}
if err := x.CloseSend(); err != nil {
return nil, err
}
return x, nil
}
type DRPCTailnet_StreamDERPMapsClient interface {
drpc.Stream
Recv() (*DERPMap, error)
}
type drpcTailnet_StreamDERPMapsClient struct {
drpc.Stream
}
func (x *drpcTailnet_StreamDERPMapsClient) GetStream() drpc.Stream {
return x.Stream
}
func (x *drpcTailnet_StreamDERPMapsClient) Recv() (*DERPMap, error) {
m := new(DERPMap)
if err := x.MsgRecv(m, drpcEncoding_File_tailnet_proto_tailnet_proto{}); err != nil {
return nil, err
}
return m, nil
}
func (x *drpcTailnet_StreamDERPMapsClient) RecvMsg(m *DERPMap) error {
return x.MsgRecv(m, drpcEncoding_File_tailnet_proto_tailnet_proto{})
}
func (c *drpcTailnetClient) RefreshResumeToken(ctx context.Context, in *RefreshResumeTokenRequest) (*RefreshResumeTokenResponse, error) {
out := new(RefreshResumeTokenResponse)
err := c.cc.Invoke(ctx, "/coder.tailnet.v2.Tailnet/RefreshResumeToken", drpcEncoding_File_tailnet_proto_tailnet_proto{}, in, out)
if err != nil {
return nil, err
}
return out, nil
}
func (c *drpcTailnetClient) Coordinate(ctx context.Context) (DRPCTailnet_CoordinateClient, error) {
stream, err := c.cc.NewStream(ctx, "/coder.tailnet.v2.Tailnet/Coordinate", drpcEncoding_File_tailnet_proto_tailnet_proto{})
if err != nil {
return nil, err
}
x := &drpcTailnet_CoordinateClient{stream}
return x, nil
}
type DRPCTailnet_CoordinateClient interface {
drpc.Stream
Send(*CoordinateRequest) error
Recv() (*CoordinateResponse, error)
}
type drpcTailnet_CoordinateClient struct {
drpc.Stream
}
func (x *drpcTailnet_CoordinateClient) GetStream() drpc.Stream {
return x.Stream
}
func (x *drpcTailnet_CoordinateClient) Send(m *CoordinateRequest) error {
return x.MsgSend(m, drpcEncoding_File_tailnet_proto_tailnet_proto{})
}
func (x *drpcTailnet_CoordinateClient) Recv() (*CoordinateResponse, error) {
m := new(CoordinateResponse)
if err := x.MsgRecv(m, drpcEncoding_File_tailnet_proto_tailnet_proto{}); err != nil {
return nil, err
}
return m, nil
}
func (x *drpcTailnet_CoordinateClient) RecvMsg(m *CoordinateResponse) error {
return x.MsgRecv(m, drpcEncoding_File_tailnet_proto_tailnet_proto{})
}
func (c *drpcTailnetClient) WorkspaceUpdates(ctx context.Context, in *WorkspaceUpdatesRequest) (DRPCTailnet_WorkspaceUpdatesClient, error) {
stream, err := c.cc.NewStream(ctx, "/coder.tailnet.v2.Tailnet/WorkspaceUpdates", drpcEncoding_File_tailnet_proto_tailnet_proto{})
if err != nil {
return nil, err
}
x := &drpcTailnet_WorkspaceUpdatesClient{stream}
if err := x.MsgSend(in, drpcEncoding_File_tailnet_proto_tailnet_proto{}); err != nil {
return nil, err
}
if err := x.CloseSend(); err != nil {
return nil, err
}
return x, nil
}
type DRPCTailnet_WorkspaceUpdatesClient interface {
drpc.Stream
Recv() (*WorkspaceUpdate, error)
}
type drpcTailnet_WorkspaceUpdatesClient struct {
drpc.Stream
}
func (x *drpcTailnet_WorkspaceUpdatesClient) GetStream() drpc.Stream {
return x.Stream
}
func (x *drpcTailnet_WorkspaceUpdatesClient) Recv() (*WorkspaceUpdate, error) {
m := new(WorkspaceUpdate)
if err := x.MsgRecv(m, drpcEncoding_File_tailnet_proto_tailnet_proto{}); err != nil {
return nil, err
}
return m, nil
}
func (x *drpcTailnet_WorkspaceUpdatesClient) RecvMsg(m *WorkspaceUpdate) error {
return x.MsgRecv(m, drpcEncoding_File_tailnet_proto_tailnet_proto{})
}
type DRPCTailnetServer interface {
PostTelemetry(context.Context, *TelemetryRequest) (*TelemetryResponse, error)
StreamDERPMaps(*StreamDERPMapsRequest, DRPCTailnet_StreamDERPMapsStream) error
RefreshResumeToken(context.Context, *RefreshResumeTokenRequest) (*RefreshResumeTokenResponse, error)
Coordinate(DRPCTailnet_CoordinateStream) error
WorkspaceUpdates(*WorkspaceUpdatesRequest, DRPCTailnet_WorkspaceUpdatesStream) error
}
type DRPCTailnetUnimplementedServer struct{}
func (s *DRPCTailnetUnimplementedServer) PostTelemetry(context.Context, *TelemetryRequest) (*TelemetryResponse, error) {
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
}
func (s *DRPCTailnetUnimplementedServer) StreamDERPMaps(*StreamDERPMapsRequest, DRPCTailnet_StreamDERPMapsStream) error {
return drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
}
func (s *DRPCTailnetUnimplementedServer) RefreshResumeToken(context.Context, *RefreshResumeTokenRequest) (*RefreshResumeTokenResponse, error) {
return nil, drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
}
func (s *DRPCTailnetUnimplementedServer) Coordinate(DRPCTailnet_CoordinateStream) error {
return drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
}
func (s *DRPCTailnetUnimplementedServer) WorkspaceUpdates(*WorkspaceUpdatesRequest, DRPCTailnet_WorkspaceUpdatesStream) error {
return drpcerr.WithCode(errors.New("Unimplemented"), drpcerr.Unimplemented)
}
type DRPCTailnetDescription struct{}
func (DRPCTailnetDescription) NumMethods() int { return 5 }
func (DRPCTailnetDescription) Method(n int) (string, drpc.Encoding, drpc.Receiver, interface{}, bool) {
switch n {
case 0:
return "/coder.tailnet.v2.Tailnet/PostTelemetry", drpcEncoding_File_tailnet_proto_tailnet_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return srv.(DRPCTailnetServer).
PostTelemetry(
ctx,
in1.(*TelemetryRequest),
)
}, DRPCTailnetServer.PostTelemetry, true
case 1:
return "/coder.tailnet.v2.Tailnet/StreamDERPMaps", drpcEncoding_File_tailnet_proto_tailnet_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return nil, srv.(DRPCTailnetServer).
StreamDERPMaps(
in1.(*StreamDERPMapsRequest),
&drpcTailnet_StreamDERPMapsStream{in2.(drpc.Stream)},
)
}, DRPCTailnetServer.StreamDERPMaps, true
case 2:
return "/coder.tailnet.v2.Tailnet/RefreshResumeToken", drpcEncoding_File_tailnet_proto_tailnet_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return srv.(DRPCTailnetServer).
RefreshResumeToken(
ctx,
in1.(*RefreshResumeTokenRequest),
)
}, DRPCTailnetServer.RefreshResumeToken, true
case 3:
return "/coder.tailnet.v2.Tailnet/Coordinate", drpcEncoding_File_tailnet_proto_tailnet_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return nil, srv.(DRPCTailnetServer).
Coordinate(
&drpcTailnet_CoordinateStream{in1.(drpc.Stream)},
)
}, DRPCTailnetServer.Coordinate, true
case 4:
return "/coder.tailnet.v2.Tailnet/WorkspaceUpdates", drpcEncoding_File_tailnet_proto_tailnet_proto{},
func(srv interface{}, ctx context.Context, in1, in2 interface{}) (drpc.Message, error) {
return nil, srv.(DRPCTailnetServer).
WorkspaceUpdates(
in1.(*WorkspaceUpdatesRequest),
&drpcTailnet_WorkspaceUpdatesStream{in2.(drpc.Stream)},
)
}, DRPCTailnetServer.WorkspaceUpdates, true
default:
return "", nil, nil, nil, false
}
}
func DRPCRegisterTailnet(mux drpc.Mux, impl DRPCTailnetServer) error {
return mux.Register(impl, DRPCTailnetDescription{})
}
type DRPCTailnet_PostTelemetryStream interface {
drpc.Stream
SendAndClose(*TelemetryResponse) error
}
type drpcTailnet_PostTelemetryStream struct {
drpc.Stream
}
func (x *drpcTailnet_PostTelemetryStream) SendAndClose(m *TelemetryResponse) error {
if err := x.MsgSend(m, drpcEncoding_File_tailnet_proto_tailnet_proto{}); err != nil {
return err
}
return x.CloseSend()
}
type DRPCTailnet_StreamDERPMapsStream interface {
drpc.Stream
Send(*DERPMap) error
}
type drpcTailnet_StreamDERPMapsStream struct {
drpc.Stream
}
func (x *drpcTailnet_StreamDERPMapsStream) Send(m *DERPMap) error {
return x.MsgSend(m, drpcEncoding_File_tailnet_proto_tailnet_proto{})
}
type DRPCTailnet_RefreshResumeTokenStream interface {
drpc.Stream
SendAndClose(*RefreshResumeTokenResponse) error
}
type drpcTailnet_RefreshResumeTokenStream struct {
drpc.Stream
}
func (x *drpcTailnet_RefreshResumeTokenStream) SendAndClose(m *RefreshResumeTokenResponse) error {
if err := x.MsgSend(m, drpcEncoding_File_tailnet_proto_tailnet_proto{}); err != nil {
return err
}
return x.CloseSend()
}
type DRPCTailnet_CoordinateStream interface {
drpc.Stream
Send(*CoordinateResponse) error
Recv() (*CoordinateRequest, error)
}
type drpcTailnet_CoordinateStream struct {
drpc.Stream
}
func (x *drpcTailnet_CoordinateStream) Send(m *CoordinateResponse) error {
return x.MsgSend(m, drpcEncoding_File_tailnet_proto_tailnet_proto{})
}
func (x *drpcTailnet_CoordinateStream) Recv() (*CoordinateRequest, error) {
m := new(CoordinateRequest)
if err := x.MsgRecv(m, drpcEncoding_File_tailnet_proto_tailnet_proto{}); err != nil {
return nil, err
}
return m, nil
}
func (x *drpcTailnet_CoordinateStream) RecvMsg(m *CoordinateRequest) error {
return x.MsgRecv(m, drpcEncoding_File_tailnet_proto_tailnet_proto{})
}
type DRPCTailnet_WorkspaceUpdatesStream interface {
drpc.Stream
Send(*WorkspaceUpdate) error
}
type drpcTailnet_WorkspaceUpdatesStream struct {
drpc.Stream
}
func (x *drpcTailnet_WorkspaceUpdatesStream) Send(m *WorkspaceUpdate) error {
return x.MsgSend(m, drpcEncoding_File_tailnet_proto_tailnet_proto{})
}