Skip to content

Commit 0ef58f4

Browse files
committed
feat: add service and task APIs with definitions and RPC methods
1 parent 3724003 commit 0ef58f4

7 files changed

Lines changed: 219 additions & 103 deletions

File tree

vulpescloud/node/v1/node_types.proto

Lines changed: 0 additions & 44 deletions
This file was deleted.

vulpescloud/node/v1/services.proto

Lines changed: 0 additions & 47 deletions
This file was deleted.

vulpescloud/node/v1/template.proto

Lines changed: 0 additions & 12 deletions
This file was deleted.
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
syntax = "proto3";
2+
3+
package vulpescloud.services.v1;
4+
5+
option java_package = "de.vulpescloud.proto.services.v1";
6+
option java_multiple_files = true;
7+
8+
import "vulpescloud/tasks/v1/task_types.proto";
9+
import "vulpescloud/services/v1/service_types.proto";
10+
import "vulpescloud/node/v1/server_software.proto";
11+
12+
message CreateServiceRequest {
13+
vulpescloud.tasks.v1.TaskDefinition task = 1;
14+
}
15+
16+
message CreateServiceResponse {
17+
vulpescloud.services.v1.ServiceDefinition service = 1;
18+
}
19+
20+
message StartServiceRequest {
21+
vulpescloud.services.v1.ServiceDefinition service = 1;
22+
}
23+
24+
message StartServiceResponse {
25+
vulpescloud.services.v1.ServiceDefinition service = 1;
26+
}
27+
28+
message RestartServiceRequest {
29+
vulpescloud.services.v1.ServiceDefinition service = 1;
30+
}
31+
32+
message RestartServiceResponse {
33+
vulpescloud.services.v1.ServiceDefinition service = 1;
34+
}
35+
36+
message StopServiceRequest {
37+
vulpescloud.services.v1.ServiceDefinition service = 1;
38+
}
39+
40+
message StopServiceResponse {
41+
vulpescloud.services.v1.ServiceDefinition service = 1;
42+
}
43+
44+
message GetAllServicesRequest {
45+
}
46+
47+
message GetAllServicesResponse {
48+
repeated vulpescloud.services.v1.ServiceDefinition services = 1;
49+
}
50+
51+
message GetByTaskRequest {
52+
vulpescloud.tasks.v1.TaskDefinition task = 1;
53+
}
54+
55+
message GetByTaskResponse {
56+
repeated vulpescloud.services.v1.ServiceDefinition services = 1;
57+
}
58+
59+
message GetByUuidRequest {
60+
string uuid = 1;
61+
}
62+
63+
message GetByUuidResponse {
64+
vulpescloud.services.v1.ServiceDefinition service = 1;
65+
}
66+
67+
message GetByNameRequest {
68+
string name = 1;
69+
}
70+
71+
message GetByNameResponse {
72+
vulpescloud.services.v1.ServiceDefinition service = 1;
73+
}
74+
75+
message GetBySoftwareTypeRequest {
76+
vulpescloud.node.v1.SoftwareType software_type = 1;
77+
}
78+
79+
message GetBySoftwareTypeResponse {
80+
repeated vulpescloud.services.v1.ServiceDefinition services = 1;
81+
}
82+
83+
service ServiceAPIService {
84+
rpc CreateService(CreateServiceRequest) returns (CreateServiceResponse);
85+
rpc StartService(StartServiceRequest) returns (StartServiceResponse);
86+
rpc RestartService(RestartServiceRequest) returns (RestartServiceResponse);
87+
rpc StopService(StopServiceRequest) returns (StopServiceResponse);
88+
rpc GetAllServices(GetAllServicesRequest) returns (GetAllServicesResponse);
89+
rpc GetByTask(GetByTaskRequest) returns (GetByTaskResponse);
90+
rpc GetByUuid(GetByUuidRequest) returns (GetByUuidResponse);
91+
rpc GetByName(GetByNameRequest) returns (GetByNameResponse);
92+
rpc GetBySoftwareType(GetBySoftwareTypeRequest) returns (GetBySoftwareTypeResponse);
93+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
syntax = "proto3";
2+
3+
package vulpescloud.services.v1;
4+
5+
option java_package = "de.vulpescloud.proto.services.v1";
6+
option java_multiple_files = true;
7+
8+
import "google/protobuf/timestamp.proto";
9+
import "vulpescloud/tasks/v1/task_types.proto";
10+
11+
message ServiceDefinition {
12+
vulpescloud.tasks.v1.TaskDefinition task = 1;
13+
string uuid = 2;
14+
uint32 ordered_id = 3;
15+
uint32 port = 4;
16+
string node = 5;
17+
ServiceState state = 6;
18+
uint32 player_count = 7;
19+
google.protobuf.Timestamp start_time = 8;
20+
}
21+
22+
enum ServiceState {
23+
SERVICE_STATE_UNSPECIFIED = 0;
24+
SERVICE_STATE_RUNNING = 1;
25+
SERVICE_STATE_STARTING = 2;
26+
SERVICE_STATE_PREPARED = 3;
27+
SERVICE_STATE_STOPPED = 4;
28+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
syntax = "proto3";
2+
3+
package vulpescloud.tasks.v1;
4+
5+
option java_package = "de.vulpescloud.proto.tasks.v1";
6+
option java_multiple_files = true;
7+
8+
import "vulpescloud/node/v1/server_software.proto";
9+
10+
message TaskDefinition {
11+
string name = 1;
12+
uint64 minimum_memory = 2;
13+
uint64 maximum_memory = 3;
14+
uint64 start_port = 4;
15+
repeated TemplateDefinition templates = 5;
16+
bool static_services = 6;
17+
uint32 min_online_services = 7;
18+
uint32 max_online_services = 8;
19+
bool maintenance = 9;
20+
bool copy_template_to_static = 10;
21+
string service_factory_name = 11;
22+
string preferred_node = 12;
23+
uint32 max_players = 13;
24+
vulpescloud.node.v1.ServerSoftware server_software = 14;
25+
}
26+
27+
message TemplateDefinition {
28+
string name = 1;
29+
TemplateStorage storage = 2;
30+
int32 weight = 3;
31+
}
32+
33+
enum TemplateStorage {
34+
TEMPLATE_STORAGE_LOCAL_UNSPECIFIED = 0;
35+
TEMPLATE_STORAGE_S3 = 1;
36+
}
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
syntax = "proto3";
2+
3+
package vulpescloud.tasks.v1;
4+
5+
option java_package = "de.vulpescloud.proto.tasks.v1";
6+
option java_multiple_files = true;
7+
8+
import "vulpescloud/tasks/v1/task_types.proto";
9+
10+
message CreateTaskRequest {
11+
vulpescloud.tasks.v1.TaskDefinition task = 1;
12+
}
13+
14+
message CreateTaskResponse {
15+
vulpescloud.tasks.v1.TaskDefinition task = 1;
16+
}
17+
18+
message DeleteTaskRequest {
19+
vulpescloud.tasks.v1.TaskDefinition task = 1;
20+
}
21+
22+
message DeleteTaskResponse {
23+
vulpescloud.tasks.v1.TaskDefinition task = 1;
24+
}
25+
26+
message GetAllTasksRequest {
27+
}
28+
29+
message GetAllTasksResponse {
30+
repeated vulpescloud.tasks.v1.TaskDefinition tasks = 1;
31+
}
32+
33+
message GetByNameRequest {
34+
string name = 1;
35+
}
36+
37+
38+
message GetByTemplateRequest {
39+
vulpescloud.tasks.v1.TaskDefinition template = 1;
40+
}
41+
42+
message GetByTemplateResponse {
43+
repeated vulpescloud.tasks.v1.TaskDefinition tasks = 1;
44+
}
45+
46+
message GetByNameResponse {
47+
vulpescloud.tasks.v1.TaskDefinition task = 1;
48+
}
49+
50+
message GetAllTemplatesRequest {
51+
}
52+
53+
message GetAllTemplatesResponse {
54+
repeated vulpescloud.tasks.v1.TaskDefinition templates = 1;
55+
}
56+
57+
service TasksAPIService {
58+
rpc CreateTask(CreateTaskRequest) returns (CreateTaskResponse);
59+
rpc DeleteTask(DeleteTaskRequest) returns (DeleteTaskResponse);
60+
rpc GetAllTasks(GetAllTasksRequest) returns (GetAllTasksResponse);
61+
rpc GetByName(GetByNameRequest) returns (GetByNameResponse);
62+
}

0 commit comments

Comments
 (0)