Skip to content

Commit a960121

Browse files
utam0kroboquat
utam0k
authored andcommitted
ws-dameon: implement the SetupPairVeths function.
1 parent 59527b3 commit a960121

File tree

13 files changed

+1559
-63
lines changed

13 files changed

+1559
-63
lines changed

components/workspacekit/cmd/rings.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -495,6 +495,18 @@ var ring1Cmd = &cobra.Command{
495495
//nolint:errcheck
496496
defer slirpCmd.Process.Kill()
497497

498+
client, err = connectToInWorkspaceDaemonService(ctx)
499+
if err != nil {
500+
log.WithError(err).Error("cannot connect to daemon")
501+
return
502+
}
503+
_, err = client.SetupPairVeths(ctx, &daemonapi.SetupPairVethsRequest{Pid: int64(cmd.Process.Pid)})
504+
if err != nil {
505+
log.WithError(err).Error("cannot setup pair of veths")
506+
return
507+
}
508+
client.Close()
509+
498510
log.Info("signaling to child process")
499511
_, err = msgutil.MarshalToWriter(ring2Conn, ringSyncMsg{
500512
Stage: 1,

components/ws-daemon-api/go/mock/mock.go

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/ws-daemon-api/go/workspace_daemon.pb.go

Lines changed: 181 additions & 59 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/ws-daemon-api/go/workspace_daemon_grpc.pb.go

Lines changed: 38 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

components/ws-daemon-api/typescript/src/workspace_daemon_grpc_pb.d.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ interface IInWorkspaceServiceService extends grpc.ServiceDefinition<grpc.Untyped
2222
mountSysfs: IInWorkspaceServiceService_IMountSysfs;
2323
umountSysfs: IInWorkspaceServiceService_IUmountSysfs;
2424
teardown: IInWorkspaceServiceService_ITeardown;
25+
setupPairVeths: IInWorkspaceServiceService_ISetupPairVeths;
2526
}
2627

2728
interface IInWorkspaceServiceService_IPrepareForUserNS extends grpc.MethodDefinition<workspace_daemon_pb.PrepareForUserNSRequest, workspace_daemon_pb.PrepareForUserNSResponse> {
@@ -96,6 +97,15 @@ interface IInWorkspaceServiceService_ITeardown extends grpc.MethodDefinition<wor
9697
responseSerialize: grpc.serialize<workspace_daemon_pb.TeardownResponse>;
9798
responseDeserialize: grpc.deserialize<workspace_daemon_pb.TeardownResponse>;
9899
}
100+
interface IInWorkspaceServiceService_ISetupPairVeths extends grpc.MethodDefinition<workspace_daemon_pb.SetupPairVethsRequest, workspace_daemon_pb.SetupPairVethsResponse> {
101+
path: "/iws.InWorkspaceService/SetupPairVeths";
102+
requestStream: false;
103+
responseStream: false;
104+
requestSerialize: grpc.serialize<workspace_daemon_pb.SetupPairVethsRequest>;
105+
requestDeserialize: grpc.deserialize<workspace_daemon_pb.SetupPairVethsRequest>;
106+
responseSerialize: grpc.serialize<workspace_daemon_pb.SetupPairVethsResponse>;
107+
responseDeserialize: grpc.deserialize<workspace_daemon_pb.SetupPairVethsResponse>;
108+
}
99109

100110
export const InWorkspaceServiceService: IInWorkspaceServiceService;
101111

@@ -108,6 +118,7 @@ export interface IInWorkspaceServiceServer extends grpc.UntypedServiceImplementa
108118
mountSysfs: grpc.handleUnaryCall<workspace_daemon_pb.MountProcRequest, workspace_daemon_pb.MountProcResponse>;
109119
umountSysfs: grpc.handleUnaryCall<workspace_daemon_pb.UmountProcRequest, workspace_daemon_pb.UmountProcResponse>;
110120
teardown: grpc.handleUnaryCall<workspace_daemon_pb.TeardownRequest, workspace_daemon_pb.TeardownResponse>;
121+
setupPairVeths: grpc.handleUnaryCall<workspace_daemon_pb.SetupPairVethsRequest, workspace_daemon_pb.SetupPairVethsResponse>;
111122
}
112123

113124
export interface IInWorkspaceServiceClient {
@@ -135,6 +146,9 @@ export interface IInWorkspaceServiceClient {
135146
teardown(request: workspace_daemon_pb.TeardownRequest, callback: (error: grpc.ServiceError | null, response: workspace_daemon_pb.TeardownResponse) => void): grpc.ClientUnaryCall;
136147
teardown(request: workspace_daemon_pb.TeardownRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: workspace_daemon_pb.TeardownResponse) => void): grpc.ClientUnaryCall;
137148
teardown(request: workspace_daemon_pb.TeardownRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: workspace_daemon_pb.TeardownResponse) => void): grpc.ClientUnaryCall;
149+
setupPairVeths(request: workspace_daemon_pb.SetupPairVethsRequest, callback: (error: grpc.ServiceError | null, response: workspace_daemon_pb.SetupPairVethsResponse) => void): grpc.ClientUnaryCall;
150+
setupPairVeths(request: workspace_daemon_pb.SetupPairVethsRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: workspace_daemon_pb.SetupPairVethsResponse) => void): grpc.ClientUnaryCall;
151+
setupPairVeths(request: workspace_daemon_pb.SetupPairVethsRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: workspace_daemon_pb.SetupPairVethsResponse) => void): grpc.ClientUnaryCall;
138152
}
139153

140154
export class InWorkspaceServiceClient extends grpc.Client implements IInWorkspaceServiceClient {
@@ -163,4 +177,7 @@ export class InWorkspaceServiceClient extends grpc.Client implements IInWorkspac
163177
public teardown(request: workspace_daemon_pb.TeardownRequest, callback: (error: grpc.ServiceError | null, response: workspace_daemon_pb.TeardownResponse) => void): grpc.ClientUnaryCall;
164178
public teardown(request: workspace_daemon_pb.TeardownRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: workspace_daemon_pb.TeardownResponse) => void): grpc.ClientUnaryCall;
165179
public teardown(request: workspace_daemon_pb.TeardownRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: workspace_daemon_pb.TeardownResponse) => void): grpc.ClientUnaryCall;
180+
public setupPairVeths(request: workspace_daemon_pb.SetupPairVethsRequest, callback: (error: grpc.ServiceError | null, response: workspace_daemon_pb.SetupPairVethsResponse) => void): grpc.ClientUnaryCall;
181+
public setupPairVeths(request: workspace_daemon_pb.SetupPairVethsRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: workspace_daemon_pb.SetupPairVethsResponse) => void): grpc.ClientUnaryCall;
182+
public setupPairVeths(request: workspace_daemon_pb.SetupPairVethsRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: workspace_daemon_pb.SetupPairVethsResponse) => void): grpc.ClientUnaryCall;
166183
}

components/ws-daemon-api/typescript/src/workspace_daemon_grpc_pb.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,28 @@ function deserialize_iws_PrepareForUserNSResponse(buffer_arg) {
7676
return workspace_daemon_pb.PrepareForUserNSResponse.deserializeBinary(new Uint8Array(buffer_arg));
7777
}
7878

79+
function serialize_iws_SetupPairVethsRequest(arg) {
80+
if (!(arg instanceof workspace_daemon_pb.SetupPairVethsRequest)) {
81+
throw new Error('Expected argument of type iws.SetupPairVethsRequest');
82+
}
83+
return Buffer.from(arg.serializeBinary());
84+
}
85+
86+
function deserialize_iws_SetupPairVethsRequest(buffer_arg) {
87+
return workspace_daemon_pb.SetupPairVethsRequest.deserializeBinary(new Uint8Array(buffer_arg));
88+
}
89+
90+
function serialize_iws_SetupPairVethsResponse(arg) {
91+
if (!(arg instanceof workspace_daemon_pb.SetupPairVethsResponse)) {
92+
throw new Error('Expected argument of type iws.SetupPairVethsResponse');
93+
}
94+
return Buffer.from(arg.serializeBinary());
95+
}
96+
97+
function deserialize_iws_SetupPairVethsResponse(buffer_arg) {
98+
return workspace_daemon_pb.SetupPairVethsResponse.deserializeBinary(new Uint8Array(buffer_arg));
99+
}
100+
79101
function serialize_iws_TeardownRequest(arg) {
80102
if (!(arg instanceof workspace_daemon_pb.TeardownRequest)) {
81103
throw new Error('Expected argument of type iws.TeardownRequest');
@@ -257,6 +279,18 @@ teardown: {
257279
responseSerialize: serialize_iws_TeardownResponse,
258280
responseDeserialize: deserialize_iws_TeardownResponse,
259281
},
282+
// Set up a pair of veths that interconnect the specified PID and the workspace container's network namename.
283+
setupPairVeths: {
284+
path: '/iws.InWorkspaceService/SetupPairVeths',
285+
requestStream: false,
286+
responseStream: false,
287+
requestType: workspace_daemon_pb.SetupPairVethsRequest,
288+
responseType: workspace_daemon_pb.SetupPairVethsResponse,
289+
requestSerialize: serialize_iws_SetupPairVethsRequest,
290+
requestDeserialize: deserialize_iws_SetupPairVethsRequest,
291+
responseSerialize: serialize_iws_SetupPairVethsResponse,
292+
responseDeserialize: deserialize_iws_SetupPairVethsResponse,
293+
},
260294
};
261295

262296
exports.InWorkspaceServiceClient = grpc.makeGenericClientConstructor(InWorkspaceServiceService);

components/ws-daemon-api/typescript/src/workspace_daemon_pb.d.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,43 @@ export namespace TeardownResponse {
282282
}
283283
}
284284

285+
export class SetupPairVethsRequest extends jspb.Message {
286+
getPid(): number;
287+
setPid(value: number): SetupPairVethsRequest;
288+
289+
serializeBinary(): Uint8Array;
290+
toObject(includeInstance?: boolean): SetupPairVethsRequest.AsObject;
291+
static toObject(includeInstance: boolean, msg: SetupPairVethsRequest): SetupPairVethsRequest.AsObject;
292+
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
293+
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
294+
static serializeBinaryToWriter(message: SetupPairVethsRequest, writer: jspb.BinaryWriter): void;
295+
static deserializeBinary(bytes: Uint8Array): SetupPairVethsRequest;
296+
static deserializeBinaryFromReader(message: SetupPairVethsRequest, reader: jspb.BinaryReader): SetupPairVethsRequest;
297+
}
298+
299+
export namespace SetupPairVethsRequest {
300+
export type AsObject = {
301+
pid: number,
302+
}
303+
}
304+
305+
export class SetupPairVethsResponse extends jspb.Message {
306+
307+
serializeBinary(): Uint8Array;
308+
toObject(includeInstance?: boolean): SetupPairVethsResponse.AsObject;
309+
static toObject(includeInstance: boolean, msg: SetupPairVethsResponse): SetupPairVethsResponse.AsObject;
310+
static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
311+
static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
312+
static serializeBinaryToWriter(message: SetupPairVethsResponse, writer: jspb.BinaryWriter): void;
313+
static deserializeBinary(bytes: Uint8Array): SetupPairVethsResponse;
314+
static deserializeBinaryFromReader(message: SetupPairVethsResponse, reader: jspb.BinaryReader): SetupPairVethsResponse;
315+
}
316+
317+
export namespace SetupPairVethsResponse {
318+
export type AsObject = {
319+
}
320+
}
321+
285322
export enum FSShiftMethod {
286323
SHIFTFS = 0,
287324
FUSE = 1,

0 commit comments

Comments
 (0)