Skip to content

Commit 4c0c8d4

Browse files
authored
Merge pull request #53 from gtardif/sync_protos_compose
Sync gRPC Compose API, added compose example
2 parents cd16904 + 368663c commit 4c0c8d4

File tree

7 files changed

+1853
-4
lines changed

7 files changed

+1853
-4
lines changed

examples/compose.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
Copyright 2020 Docker CLI JavaScript SDK authors
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
import * as grpc from '@grpc/grpc-js';
18+
19+
import { Compose } from '../src';
20+
import { ComposeStacksRequest, ComposeStacksResponse } from '../src/compose';
21+
22+
const client = new Compose();
23+
24+
client.stacks(new ComposeStacksRequest(),
25+
(error: grpc.ServiceError | null, res: ComposeStacksResponse) => {
26+
if (error != null) {
27+
throw error;
28+
}
29+
res.getStacksList().forEach(stack => {
30+
console.log(stack.getName() + " - " + stack.getStatus())
31+
});
32+
}
33+
)

src/compose.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/*
2+
Copyright 2020 Docker CLI JavaScript SDK authors
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
export * from './protos/compose/v1/compose_pb';

src/protos/compose/v1/compose.proto

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ option go_package = "github.com/docker/compose-cli/protos/compose/v1;v1";
2222
service Compose {
2323
rpc Up(ComposeUpRequest) returns (ComposeUpResponse);
2424
rpc Down(ComposeDownRequest) returns (ComposeDownResponse);
25+
rpc Stacks(ComposeStacksRequest)returns (ComposeStacksResponse);
26+
rpc Services(ComposeServicesRequest)returns (ComposeServicesResponse);
2527
}
2628

2729
message ComposeUpRequest {
@@ -31,10 +33,48 @@ message ComposeUpRequest {
3133
}
3234

3335
message ComposeUpResponse {
36+
string projectName = 1;
3437
}
3538

3639
message ComposeDownRequest {
40+
string projectName = 1;
41+
string workDir = 2;
42+
repeated string files = 3;
3743
}
3844

3945
message ComposeDownResponse {
46+
string projectName = 1;
47+
}
48+
49+
message ComposeStacksRequest {
50+
string projectName = 1;
51+
}
52+
53+
message ComposeStacksResponse {
54+
repeated Stack stacks = 1;
55+
}
56+
57+
message Stack {
58+
string id = 1;
59+
string name = 2;
60+
string status = 3;
61+
string reason = 4;
62+
}
63+
64+
message ComposeServicesRequest {
65+
string projectName = 1;
66+
string workDir = 2;
67+
repeated string files = 3;
68+
}
69+
70+
message ComposeServicesResponse {
71+
repeated Service services = 1;
72+
}
73+
74+
message Service {
75+
string id = 1;
76+
string name = 2;
77+
uint32 replicas = 3;
78+
uint32 desired = 4;
79+
repeated string Ports = 5;
4080
}

src/protos/compose/v1/compose_grpc_pb.d.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import * as compose_v1_compose_pb from "../../compose/v1/compose_pb";
1111
interface IComposeService extends grpc.ServiceDefinition<grpc.UntypedServiceImplementation> {
1212
up: IComposeService_IUp;
1313
down: IComposeService_IDown;
14+
stacks: IComposeService_IStacks;
15+
services: IComposeService_IServices;
1416
}
1517

1618
interface IComposeService_IUp extends grpc.MethodDefinition<compose_v1_compose_pb.ComposeUpRequest, compose_v1_compose_pb.ComposeUpResponse> {
@@ -31,12 +33,32 @@ interface IComposeService_IDown extends grpc.MethodDefinition<compose_v1_compose
3133
responseSerialize: grpc.serialize<compose_v1_compose_pb.ComposeDownResponse>;
3234
responseDeserialize: grpc.deserialize<compose_v1_compose_pb.ComposeDownResponse>;
3335
}
36+
interface IComposeService_IStacks extends grpc.MethodDefinition<compose_v1_compose_pb.ComposeStacksRequest, compose_v1_compose_pb.ComposeStacksResponse> {
37+
path: string; // "/com.docker.api.protos.compose.v1.Compose/Stacks"
38+
requestStream: false;
39+
responseStream: false;
40+
requestSerialize: grpc.serialize<compose_v1_compose_pb.ComposeStacksRequest>;
41+
requestDeserialize: grpc.deserialize<compose_v1_compose_pb.ComposeStacksRequest>;
42+
responseSerialize: grpc.serialize<compose_v1_compose_pb.ComposeStacksResponse>;
43+
responseDeserialize: grpc.deserialize<compose_v1_compose_pb.ComposeStacksResponse>;
44+
}
45+
interface IComposeService_IServices extends grpc.MethodDefinition<compose_v1_compose_pb.ComposeServicesRequest, compose_v1_compose_pb.ComposeServicesResponse> {
46+
path: string; // "/com.docker.api.protos.compose.v1.Compose/Services"
47+
requestStream: false;
48+
responseStream: false;
49+
requestSerialize: grpc.serialize<compose_v1_compose_pb.ComposeServicesRequest>;
50+
requestDeserialize: grpc.deserialize<compose_v1_compose_pb.ComposeServicesRequest>;
51+
responseSerialize: grpc.serialize<compose_v1_compose_pb.ComposeServicesResponse>;
52+
responseDeserialize: grpc.deserialize<compose_v1_compose_pb.ComposeServicesResponse>;
53+
}
3454

3555
export const ComposeService: IComposeService;
3656

3757
export interface IComposeServer {
3858
up: grpc.handleUnaryCall<compose_v1_compose_pb.ComposeUpRequest, compose_v1_compose_pb.ComposeUpResponse>;
3959
down: grpc.handleUnaryCall<compose_v1_compose_pb.ComposeDownRequest, compose_v1_compose_pb.ComposeDownResponse>;
60+
stacks: grpc.handleUnaryCall<compose_v1_compose_pb.ComposeStacksRequest, compose_v1_compose_pb.ComposeStacksResponse>;
61+
services: grpc.handleUnaryCall<compose_v1_compose_pb.ComposeServicesRequest, compose_v1_compose_pb.ComposeServicesResponse>;
4062
}
4163

4264
export interface IComposeClient {
@@ -46,6 +68,12 @@ export interface IComposeClient {
4668
down(request: compose_v1_compose_pb.ComposeDownRequest, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeDownResponse) => void): grpc.ClientUnaryCall;
4769
down(request: compose_v1_compose_pb.ComposeDownRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeDownResponse) => void): grpc.ClientUnaryCall;
4870
down(request: compose_v1_compose_pb.ComposeDownRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeDownResponse) => void): grpc.ClientUnaryCall;
71+
stacks(request: compose_v1_compose_pb.ComposeStacksRequest, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeStacksResponse) => void): grpc.ClientUnaryCall;
72+
stacks(request: compose_v1_compose_pb.ComposeStacksRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeStacksResponse) => void): grpc.ClientUnaryCall;
73+
stacks(request: compose_v1_compose_pb.ComposeStacksRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeStacksResponse) => void): grpc.ClientUnaryCall;
74+
services(request: compose_v1_compose_pb.ComposeServicesRequest, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeServicesResponse) => void): grpc.ClientUnaryCall;
75+
services(request: compose_v1_compose_pb.ComposeServicesRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeServicesResponse) => void): grpc.ClientUnaryCall;
76+
services(request: compose_v1_compose_pb.ComposeServicesRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeServicesResponse) => void): grpc.ClientUnaryCall;
4977
}
5078

5179
export class ComposeClient extends grpc.Client implements IComposeClient {
@@ -56,4 +84,10 @@ export class ComposeClient extends grpc.Client implements IComposeClient {
5684
public down(request: compose_v1_compose_pb.ComposeDownRequest, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeDownResponse) => void): grpc.ClientUnaryCall;
5785
public down(request: compose_v1_compose_pb.ComposeDownRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeDownResponse) => void): grpc.ClientUnaryCall;
5886
public down(request: compose_v1_compose_pb.ComposeDownRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeDownResponse) => void): grpc.ClientUnaryCall;
87+
public stacks(request: compose_v1_compose_pb.ComposeStacksRequest, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeStacksResponse) => void): grpc.ClientUnaryCall;
88+
public stacks(request: compose_v1_compose_pb.ComposeStacksRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeStacksResponse) => void): grpc.ClientUnaryCall;
89+
public stacks(request: compose_v1_compose_pb.ComposeStacksRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeStacksResponse) => void): grpc.ClientUnaryCall;
90+
public services(request: compose_v1_compose_pb.ComposeServicesRequest, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeServicesResponse) => void): grpc.ClientUnaryCall;
91+
public services(request: compose_v1_compose_pb.ComposeServicesRequest, metadata: grpc.Metadata, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeServicesResponse) => void): grpc.ClientUnaryCall;
92+
public services(request: compose_v1_compose_pb.ComposeServicesRequest, metadata: grpc.Metadata, options: Partial<grpc.CallOptions>, callback: (error: grpc.ServiceError | null, response: compose_v1_compose_pb.ComposeServicesResponse) => void): grpc.ClientUnaryCall;
5993
}

src/protos/compose/v1/compose_grpc_pb.js

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,50 @@ function deserialize_com_docker_api_protos_compose_v1_ComposeDownResponse(buffer
4242
return compose_v1_compose_pb.ComposeDownResponse.deserializeBinary(new Uint8Array(buffer_arg));
4343
}
4444

45+
function serialize_com_docker_api_protos_compose_v1_ComposeServicesRequest(arg) {
46+
if (!(arg instanceof compose_v1_compose_pb.ComposeServicesRequest)) {
47+
throw new Error('Expected argument of type com.docker.api.protos.compose.v1.ComposeServicesRequest');
48+
}
49+
return Buffer.from(arg.serializeBinary());
50+
}
51+
52+
function deserialize_com_docker_api_protos_compose_v1_ComposeServicesRequest(buffer_arg) {
53+
return compose_v1_compose_pb.ComposeServicesRequest.deserializeBinary(new Uint8Array(buffer_arg));
54+
}
55+
56+
function serialize_com_docker_api_protos_compose_v1_ComposeServicesResponse(arg) {
57+
if (!(arg instanceof compose_v1_compose_pb.ComposeServicesResponse)) {
58+
throw new Error('Expected argument of type com.docker.api.protos.compose.v1.ComposeServicesResponse');
59+
}
60+
return Buffer.from(arg.serializeBinary());
61+
}
62+
63+
function deserialize_com_docker_api_protos_compose_v1_ComposeServicesResponse(buffer_arg) {
64+
return compose_v1_compose_pb.ComposeServicesResponse.deserializeBinary(new Uint8Array(buffer_arg));
65+
}
66+
67+
function serialize_com_docker_api_protos_compose_v1_ComposeStacksRequest(arg) {
68+
if (!(arg instanceof compose_v1_compose_pb.ComposeStacksRequest)) {
69+
throw new Error('Expected argument of type com.docker.api.protos.compose.v1.ComposeStacksRequest');
70+
}
71+
return Buffer.from(arg.serializeBinary());
72+
}
73+
74+
function deserialize_com_docker_api_protos_compose_v1_ComposeStacksRequest(buffer_arg) {
75+
return compose_v1_compose_pb.ComposeStacksRequest.deserializeBinary(new Uint8Array(buffer_arg));
76+
}
77+
78+
function serialize_com_docker_api_protos_compose_v1_ComposeStacksResponse(arg) {
79+
if (!(arg instanceof compose_v1_compose_pb.ComposeStacksResponse)) {
80+
throw new Error('Expected argument of type com.docker.api.protos.compose.v1.ComposeStacksResponse');
81+
}
82+
return Buffer.from(arg.serializeBinary());
83+
}
84+
85+
function deserialize_com_docker_api_protos_compose_v1_ComposeStacksResponse(buffer_arg) {
86+
return compose_v1_compose_pb.ComposeStacksResponse.deserializeBinary(new Uint8Array(buffer_arg));
87+
}
88+
4589
function serialize_com_docker_api_protos_compose_v1_ComposeUpRequest(arg) {
4690
if (!(arg instanceof compose_v1_compose_pb.ComposeUpRequest)) {
4791
throw new Error('Expected argument of type com.docker.api.protos.compose.v1.ComposeUpRequest');
@@ -88,6 +132,28 @@ var ComposeService = exports.ComposeService = {
88132
responseSerialize: serialize_com_docker_api_protos_compose_v1_ComposeDownResponse,
89133
responseDeserialize: deserialize_com_docker_api_protos_compose_v1_ComposeDownResponse,
90134
},
135+
stacks: {
136+
path: '/com.docker.api.protos.compose.v1.Compose/Stacks',
137+
requestStream: false,
138+
responseStream: false,
139+
requestType: compose_v1_compose_pb.ComposeStacksRequest,
140+
responseType: compose_v1_compose_pb.ComposeStacksResponse,
141+
requestSerialize: serialize_com_docker_api_protos_compose_v1_ComposeStacksRequest,
142+
requestDeserialize: deserialize_com_docker_api_protos_compose_v1_ComposeStacksRequest,
143+
responseSerialize: serialize_com_docker_api_protos_compose_v1_ComposeStacksResponse,
144+
responseDeserialize: deserialize_com_docker_api_protos_compose_v1_ComposeStacksResponse,
145+
},
146+
services: {
147+
path: '/com.docker.api.protos.compose.v1.Compose/Services',
148+
requestStream: false,
149+
responseStream: false,
150+
requestType: compose_v1_compose_pb.ComposeServicesRequest,
151+
responseType: compose_v1_compose_pb.ComposeServicesResponse,
152+
requestSerialize: serialize_com_docker_api_protos_compose_v1_ComposeServicesRequest,
153+
requestDeserialize: deserialize_com_docker_api_protos_compose_v1_ComposeServicesRequest,
154+
responseSerialize: serialize_com_docker_api_protos_compose_v1_ComposeServicesResponse,
155+
responseDeserialize: deserialize_com_docker_api_protos_compose_v1_ComposeServicesResponse,
156+
},
91157
};
92158

93159
exports.ComposeClient = grpc.makeGenericClientConstructor(ComposeService);

0 commit comments

Comments
 (0)