@@ -8,6 +8,7 @@ namespace Docker.DotNet
8
8
using System . Threading . Tasks ;
9
9
using System . Threading ;
10
10
using Models ;
11
+ using System . IO ;
11
12
12
13
internal class SwarmOperations : ISwarmOperations
13
14
{
@@ -156,7 +157,42 @@ async Task<ServiceUpdateResponse> ISwarmOperations.UpdateServiceAsync(string id,
156
157
return this . _client . JsonSerializer . DeserializeObject < ServiceUpdateResponse > ( response . Body ) ;
157
158
}
158
159
159
- async Task ISwarmOperations . UpdateSwarmAsync ( SwarmUpdateParameters parameters , CancellationToken cancellationToken )
160
+ public Task < Stream > GetServiceLogsAsync ( string id , ServiceLogsParameters parameters , CancellationToken cancellationToken = default ( CancellationToken ) )
161
+ {
162
+ if ( string . IsNullOrEmpty ( id ) )
163
+ {
164
+ throw new ArgumentNullException ( nameof ( id ) ) ;
165
+ }
166
+
167
+ if ( parameters == null )
168
+ {
169
+ throw new ArgumentNullException ( nameof ( parameters ) ) ;
170
+ }
171
+
172
+ IQueryString queryParameters = new QueryString < ServiceLogsParameters > ( parameters ) ;
173
+ return this . _client . MakeRequestForStreamAsync ( new [ ] { SwarmResponseHandler } , HttpMethod . Get , $ "services/{ id } /logs", queryParameters , cancellationToken ) ;
174
+ }
175
+
176
+ public async Task < MultiplexedStream > GetServiceLogsAsync ( string id , bool tty , ServiceLogsParameters parameters , CancellationToken cancellationToken = default ( CancellationToken ) )
177
+ {
178
+ if ( string . IsNullOrEmpty ( id ) )
179
+ {
180
+ throw new ArgumentNullException ( nameof ( id ) ) ;
181
+ }
182
+
183
+ if ( parameters == null )
184
+ {
185
+ throw new ArgumentNullException ( nameof ( parameters ) ) ;
186
+ }
187
+
188
+ IQueryString queryParameters = new QueryString < ServiceLogsParameters > ( parameters ) ;
189
+
190
+ Stream result = await this . _client . MakeRequestForStreamAsync ( new [ ] { SwarmResponseHandler } , HttpMethod . Get , $ "services/{ id } /logs", queryParameters , cancellationToken ) . ConfigureAwait ( false ) ;
191
+
192
+ return new MultiplexedStream ( result , ! tty ) ;
193
+ }
194
+
195
+ async Task ISwarmOperations . UpdateSwarmAsync ( SwarmUpdateParameters parameters , CancellationToken cancellationToken )
160
196
{
161
197
var query = new QueryString < SwarmUpdateParameters > ( parameters ?? throw new ArgumentNullException ( nameof ( parameters ) ) ) ;
162
198
var body = new JsonRequestContent < Spec > ( parameters . Spec ?? throw new ArgumentNullException ( nameof ( parameters . Spec ) ) , this . _client . JsonSerializer ) ;
@@ -211,7 +247,7 @@ async Task<NodeListResponse> ISwarmOperations.InspectNodeAsync(string id, Cancel
211
247
async Task ISwarmOperations . RemoveNodeAsync ( string id , bool force , CancellationToken cancellationToken )
212
248
{
213
249
if ( string . IsNullOrEmpty ( id ) ) throw new ArgumentNullException ( nameof ( id ) ) ;
214
- var parameters = new NodeRemoveParameters { Force = force } ;
250
+ var parameters = new NodeRemoveParameters { Force = force } ;
215
251
var query = new QueryString < NodeRemoveParameters > ( parameters ) ;
216
252
await this . _client . MakeRequestAsync ( new [ ] { SwarmResponseHandler } , HttpMethod . Delete , $ "nodes/{ id } ", query , cancellationToken ) . ConfigureAwait ( false ) ;
217
253
}
0 commit comments