1// +build go1.13 2 3// Copyright (c) Microsoft Corporation. All rights reserved. 4// Licensed under the MIT License. See License.txt in the project root for license information. 5// Code generated by Microsoft (R) AutoRest Code Generator. 6// Changes may cause incorrect behavior and will be lost if the code is regenerated. 7 8package armnetwork 9 10import ( 11 "context" 12 "github.com/Azure/azure-sdk-for-go/sdk/armcore" 13 "github.com/Azure/azure-sdk-for-go/sdk/azcore" 14 "net/http" 15 "net/url" 16 "strings" 17 "time" 18) 19 20// PacketCapturesClient contains the methods for the PacketCaptures group. 21// Don't use this type directly, use NewPacketCapturesClient() instead. 22type PacketCapturesClient struct { 23 con *armcore.Connection 24 subscriptionID string 25} 26 27// NewPacketCapturesClient creates a new instance of PacketCapturesClient with the specified values. 28func NewPacketCapturesClient(con *armcore.Connection, subscriptionID string) *PacketCapturesClient { 29 return &PacketCapturesClient{con: con, subscriptionID: subscriptionID} 30} 31 32// BeginCreate - Create and start a packet capture on the specified VM. 33func (client *PacketCapturesClient) BeginCreate(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, parameters PacketCapture, options *PacketCapturesBeginCreateOptions) (PacketCaptureResultPollerResponse, error) { 34 resp, err := client.create(ctx, resourceGroupName, networkWatcherName, packetCaptureName, parameters, options) 35 if err != nil { 36 return PacketCaptureResultPollerResponse{}, err 37 } 38 result := PacketCaptureResultPollerResponse{ 39 RawResponse: resp.Response, 40 } 41 pt, err := armcore.NewPoller("PacketCapturesClient.Create", "azure-async-operation", resp, client.createHandleError) 42 if err != nil { 43 return PacketCaptureResultPollerResponse{}, err 44 } 45 poller := &packetCaptureResultPoller{ 46 pt: pt, 47 pipeline: client.con.Pipeline(), 48 } 49 result.Poller = poller 50 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (PacketCaptureResultResponse, error) { 51 return poller.pollUntilDone(ctx, frequency) 52 } 53 return result, nil 54} 55 56// ResumeCreate creates a new PacketCaptureResultPoller from the specified resume token. 57// token - The value must come from a previous call to PacketCaptureResultPoller.ResumeToken(). 58func (client *PacketCapturesClient) ResumeCreate(token string) (PacketCaptureResultPoller, error) { 59 pt, err := armcore.NewPollerFromResumeToken("PacketCapturesClient.Create", token, client.createHandleError) 60 if err != nil { 61 return nil, err 62 } 63 return &packetCaptureResultPoller{ 64 pipeline: client.con.Pipeline(), 65 pt: pt, 66 }, nil 67} 68 69// Create - Create and start a packet capture on the specified VM. 70func (client *PacketCapturesClient) create(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, parameters PacketCapture, options *PacketCapturesBeginCreateOptions) (*azcore.Response, error) { 71 req, err := client.createCreateRequest(ctx, resourceGroupName, networkWatcherName, packetCaptureName, parameters, options) 72 if err != nil { 73 return nil, err 74 } 75 resp, err := client.con.Pipeline().Do(req) 76 if err != nil { 77 return nil, err 78 } 79 if !resp.HasStatusCode(http.StatusCreated) { 80 return nil, client.createHandleError(resp) 81 } 82 return resp, nil 83} 84 85// createCreateRequest creates the Create request. 86func (client *PacketCapturesClient) createCreateRequest(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, parameters PacketCapture, options *PacketCapturesBeginCreateOptions) (*azcore.Request, error) { 87 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}" 88 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 89 urlPath = strings.ReplaceAll(urlPath, "{networkWatcherName}", url.PathEscape(networkWatcherName)) 90 urlPath = strings.ReplaceAll(urlPath, "{packetCaptureName}", url.PathEscape(packetCaptureName)) 91 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 92 req, err := azcore.NewRequest(ctx, http.MethodPut, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 93 if err != nil { 94 return nil, err 95 } 96 req.Telemetry(telemetryInfo) 97 query := req.URL.Query() 98 query.Set("api-version", "2020-07-01") 99 req.URL.RawQuery = query.Encode() 100 req.Header.Set("Accept", "application/json") 101 return req, req.MarshalAsJSON(parameters) 102} 103 104// createHandleResponse handles the Create response. 105func (client *PacketCapturesClient) createHandleResponse(resp *azcore.Response) (PacketCaptureResultResponse, error) { 106 var val *PacketCaptureResult 107 if err := resp.UnmarshalAsJSON(&val); err != nil { 108 return PacketCaptureResultResponse{}, err 109 } 110 return PacketCaptureResultResponse{RawResponse: resp.Response, PacketCaptureResult: val}, nil 111} 112 113// createHandleError handles the Create error response. 114func (client *PacketCapturesClient) createHandleError(resp *azcore.Response) error { 115 var err ErrorResponse 116 if err := resp.UnmarshalAsJSON(&err); err != nil { 117 return err 118 } 119 return azcore.NewResponseError(&err, resp.Response) 120} 121 122// BeginDelete - Deletes the specified packet capture session. 123func (client *PacketCapturesClient) BeginDelete(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, options *PacketCapturesBeginDeleteOptions) (HTTPPollerResponse, error) { 124 resp, err := client.delete(ctx, resourceGroupName, networkWatcherName, packetCaptureName, options) 125 if err != nil { 126 return HTTPPollerResponse{}, err 127 } 128 result := HTTPPollerResponse{ 129 RawResponse: resp.Response, 130 } 131 pt, err := armcore.NewPoller("PacketCapturesClient.Delete", "location", resp, client.deleteHandleError) 132 if err != nil { 133 return HTTPPollerResponse{}, err 134 } 135 poller := &httpPoller{ 136 pt: pt, 137 pipeline: client.con.Pipeline(), 138 } 139 result.Poller = poller 140 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (*http.Response, error) { 141 return poller.pollUntilDone(ctx, frequency) 142 } 143 return result, nil 144} 145 146// ResumeDelete creates a new HTTPPoller from the specified resume token. 147// token - The value must come from a previous call to HTTPPoller.ResumeToken(). 148func (client *PacketCapturesClient) ResumeDelete(token string) (HTTPPoller, error) { 149 pt, err := armcore.NewPollerFromResumeToken("PacketCapturesClient.Delete", token, client.deleteHandleError) 150 if err != nil { 151 return nil, err 152 } 153 return &httpPoller{ 154 pipeline: client.con.Pipeline(), 155 pt: pt, 156 }, nil 157} 158 159// Delete - Deletes the specified packet capture session. 160func (client *PacketCapturesClient) delete(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, options *PacketCapturesBeginDeleteOptions) (*azcore.Response, error) { 161 req, err := client.deleteCreateRequest(ctx, resourceGroupName, networkWatcherName, packetCaptureName, options) 162 if err != nil { 163 return nil, err 164 } 165 resp, err := client.con.Pipeline().Do(req) 166 if err != nil { 167 return nil, err 168 } 169 if !resp.HasStatusCode(http.StatusAccepted, http.StatusNoContent) { 170 return nil, client.deleteHandleError(resp) 171 } 172 return resp, nil 173} 174 175// deleteCreateRequest creates the Delete request. 176func (client *PacketCapturesClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, options *PacketCapturesBeginDeleteOptions) (*azcore.Request, error) { 177 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}" 178 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 179 urlPath = strings.ReplaceAll(urlPath, "{networkWatcherName}", url.PathEscape(networkWatcherName)) 180 urlPath = strings.ReplaceAll(urlPath, "{packetCaptureName}", url.PathEscape(packetCaptureName)) 181 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 182 req, err := azcore.NewRequest(ctx, http.MethodDelete, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 183 if err != nil { 184 return nil, err 185 } 186 req.Telemetry(telemetryInfo) 187 query := req.URL.Query() 188 query.Set("api-version", "2020-07-01") 189 req.URL.RawQuery = query.Encode() 190 req.Header.Set("Accept", "application/json") 191 return req, nil 192} 193 194// deleteHandleError handles the Delete error response. 195func (client *PacketCapturesClient) deleteHandleError(resp *azcore.Response) error { 196 var err ErrorResponse 197 if err := resp.UnmarshalAsJSON(&err); err != nil { 198 return err 199 } 200 return azcore.NewResponseError(&err, resp.Response) 201} 202 203// Get - Gets a packet capture session by name. 204func (client *PacketCapturesClient) Get(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, options *PacketCapturesGetOptions) (PacketCaptureResultResponse, error) { 205 req, err := client.getCreateRequest(ctx, resourceGroupName, networkWatcherName, packetCaptureName, options) 206 if err != nil { 207 return PacketCaptureResultResponse{}, err 208 } 209 resp, err := client.con.Pipeline().Do(req) 210 if err != nil { 211 return PacketCaptureResultResponse{}, err 212 } 213 if !resp.HasStatusCode(http.StatusOK) { 214 return PacketCaptureResultResponse{}, client.getHandleError(resp) 215 } 216 return client.getHandleResponse(resp) 217} 218 219// getCreateRequest creates the Get request. 220func (client *PacketCapturesClient) getCreateRequest(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, options *PacketCapturesGetOptions) (*azcore.Request, error) { 221 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}" 222 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 223 urlPath = strings.ReplaceAll(urlPath, "{networkWatcherName}", url.PathEscape(networkWatcherName)) 224 urlPath = strings.ReplaceAll(urlPath, "{packetCaptureName}", url.PathEscape(packetCaptureName)) 225 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 226 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 227 if err != nil { 228 return nil, err 229 } 230 req.Telemetry(telemetryInfo) 231 query := req.URL.Query() 232 query.Set("api-version", "2020-07-01") 233 req.URL.RawQuery = query.Encode() 234 req.Header.Set("Accept", "application/json") 235 return req, nil 236} 237 238// getHandleResponse handles the Get response. 239func (client *PacketCapturesClient) getHandleResponse(resp *azcore.Response) (PacketCaptureResultResponse, error) { 240 var val *PacketCaptureResult 241 if err := resp.UnmarshalAsJSON(&val); err != nil { 242 return PacketCaptureResultResponse{}, err 243 } 244 return PacketCaptureResultResponse{RawResponse: resp.Response, PacketCaptureResult: val}, nil 245} 246 247// getHandleError handles the Get error response. 248func (client *PacketCapturesClient) getHandleError(resp *azcore.Response) error { 249 var err ErrorResponse 250 if err := resp.UnmarshalAsJSON(&err); err != nil { 251 return err 252 } 253 return azcore.NewResponseError(&err, resp.Response) 254} 255 256// BeginGetStatus - Query the status of a running packet capture session. 257func (client *PacketCapturesClient) BeginGetStatus(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, options *PacketCapturesBeginGetStatusOptions) (PacketCaptureQueryStatusResultPollerResponse, error) { 258 resp, err := client.getStatus(ctx, resourceGroupName, networkWatcherName, packetCaptureName, options) 259 if err != nil { 260 return PacketCaptureQueryStatusResultPollerResponse{}, err 261 } 262 result := PacketCaptureQueryStatusResultPollerResponse{ 263 RawResponse: resp.Response, 264 } 265 pt, err := armcore.NewPoller("PacketCapturesClient.GetStatus", "location", resp, client.getStatusHandleError) 266 if err != nil { 267 return PacketCaptureQueryStatusResultPollerResponse{}, err 268 } 269 poller := &packetCaptureQueryStatusResultPoller{ 270 pt: pt, 271 pipeline: client.con.Pipeline(), 272 } 273 result.Poller = poller 274 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (PacketCaptureQueryStatusResultResponse, error) { 275 return poller.pollUntilDone(ctx, frequency) 276 } 277 return result, nil 278} 279 280// ResumeGetStatus creates a new PacketCaptureQueryStatusResultPoller from the specified resume token. 281// token - The value must come from a previous call to PacketCaptureQueryStatusResultPoller.ResumeToken(). 282func (client *PacketCapturesClient) ResumeGetStatus(token string) (PacketCaptureQueryStatusResultPoller, error) { 283 pt, err := armcore.NewPollerFromResumeToken("PacketCapturesClient.GetStatus", token, client.getStatusHandleError) 284 if err != nil { 285 return nil, err 286 } 287 return &packetCaptureQueryStatusResultPoller{ 288 pipeline: client.con.Pipeline(), 289 pt: pt, 290 }, nil 291} 292 293// GetStatus - Query the status of a running packet capture session. 294func (client *PacketCapturesClient) getStatus(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, options *PacketCapturesBeginGetStatusOptions) (*azcore.Response, error) { 295 req, err := client.getStatusCreateRequest(ctx, resourceGroupName, networkWatcherName, packetCaptureName, options) 296 if err != nil { 297 return nil, err 298 } 299 resp, err := client.con.Pipeline().Do(req) 300 if err != nil { 301 return nil, err 302 } 303 if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted) { 304 return nil, client.getStatusHandleError(resp) 305 } 306 return resp, nil 307} 308 309// getStatusCreateRequest creates the GetStatus request. 310func (client *PacketCapturesClient) getStatusCreateRequest(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, options *PacketCapturesBeginGetStatusOptions) (*azcore.Request, error) { 311 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/queryStatus" 312 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 313 urlPath = strings.ReplaceAll(urlPath, "{networkWatcherName}", url.PathEscape(networkWatcherName)) 314 urlPath = strings.ReplaceAll(urlPath, "{packetCaptureName}", url.PathEscape(packetCaptureName)) 315 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 316 req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 317 if err != nil { 318 return nil, err 319 } 320 req.Telemetry(telemetryInfo) 321 query := req.URL.Query() 322 query.Set("api-version", "2020-07-01") 323 req.URL.RawQuery = query.Encode() 324 req.Header.Set("Accept", "application/json") 325 return req, nil 326} 327 328// getStatusHandleResponse handles the GetStatus response. 329func (client *PacketCapturesClient) getStatusHandleResponse(resp *azcore.Response) (PacketCaptureQueryStatusResultResponse, error) { 330 var val *PacketCaptureQueryStatusResult 331 if err := resp.UnmarshalAsJSON(&val); err != nil { 332 return PacketCaptureQueryStatusResultResponse{}, err 333 } 334 return PacketCaptureQueryStatusResultResponse{RawResponse: resp.Response, PacketCaptureQueryStatusResult: val}, nil 335} 336 337// getStatusHandleError handles the GetStatus error response. 338func (client *PacketCapturesClient) getStatusHandleError(resp *azcore.Response) error { 339 var err ErrorResponse 340 if err := resp.UnmarshalAsJSON(&err); err != nil { 341 return err 342 } 343 return azcore.NewResponseError(&err, resp.Response) 344} 345 346// List - Lists all packet capture sessions within the specified resource group. 347func (client *PacketCapturesClient) List(ctx context.Context, resourceGroupName string, networkWatcherName string, options *PacketCapturesListOptions) (PacketCaptureListResultResponse, error) { 348 req, err := client.listCreateRequest(ctx, resourceGroupName, networkWatcherName, options) 349 if err != nil { 350 return PacketCaptureListResultResponse{}, err 351 } 352 resp, err := client.con.Pipeline().Do(req) 353 if err != nil { 354 return PacketCaptureListResultResponse{}, err 355 } 356 if !resp.HasStatusCode(http.StatusOK) { 357 return PacketCaptureListResultResponse{}, client.listHandleError(resp) 358 } 359 return client.listHandleResponse(resp) 360} 361 362// listCreateRequest creates the List request. 363func (client *PacketCapturesClient) listCreateRequest(ctx context.Context, resourceGroupName string, networkWatcherName string, options *PacketCapturesListOptions) (*azcore.Request, error) { 364 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures" 365 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 366 urlPath = strings.ReplaceAll(urlPath, "{networkWatcherName}", url.PathEscape(networkWatcherName)) 367 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 368 req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 369 if err != nil { 370 return nil, err 371 } 372 req.Telemetry(telemetryInfo) 373 query := req.URL.Query() 374 query.Set("api-version", "2020-07-01") 375 req.URL.RawQuery = query.Encode() 376 req.Header.Set("Accept", "application/json") 377 return req, nil 378} 379 380// listHandleResponse handles the List response. 381func (client *PacketCapturesClient) listHandleResponse(resp *azcore.Response) (PacketCaptureListResultResponse, error) { 382 var val *PacketCaptureListResult 383 if err := resp.UnmarshalAsJSON(&val); err != nil { 384 return PacketCaptureListResultResponse{}, err 385 } 386 return PacketCaptureListResultResponse{RawResponse: resp.Response, PacketCaptureListResult: val}, nil 387} 388 389// listHandleError handles the List error response. 390func (client *PacketCapturesClient) listHandleError(resp *azcore.Response) error { 391 var err ErrorResponse 392 if err := resp.UnmarshalAsJSON(&err); err != nil { 393 return err 394 } 395 return azcore.NewResponseError(&err, resp.Response) 396} 397 398// BeginStop - Stops a specified packet capture session. 399func (client *PacketCapturesClient) BeginStop(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, options *PacketCapturesBeginStopOptions) (HTTPPollerResponse, error) { 400 resp, err := client.stop(ctx, resourceGroupName, networkWatcherName, packetCaptureName, options) 401 if err != nil { 402 return HTTPPollerResponse{}, err 403 } 404 result := HTTPPollerResponse{ 405 RawResponse: resp.Response, 406 } 407 pt, err := armcore.NewPoller("PacketCapturesClient.Stop", "location", resp, client.stopHandleError) 408 if err != nil { 409 return HTTPPollerResponse{}, err 410 } 411 poller := &httpPoller{ 412 pt: pt, 413 pipeline: client.con.Pipeline(), 414 } 415 result.Poller = poller 416 result.PollUntilDone = func(ctx context.Context, frequency time.Duration) (*http.Response, error) { 417 return poller.pollUntilDone(ctx, frequency) 418 } 419 return result, nil 420} 421 422// ResumeStop creates a new HTTPPoller from the specified resume token. 423// token - The value must come from a previous call to HTTPPoller.ResumeToken(). 424func (client *PacketCapturesClient) ResumeStop(token string) (HTTPPoller, error) { 425 pt, err := armcore.NewPollerFromResumeToken("PacketCapturesClient.Stop", token, client.stopHandleError) 426 if err != nil { 427 return nil, err 428 } 429 return &httpPoller{ 430 pipeline: client.con.Pipeline(), 431 pt: pt, 432 }, nil 433} 434 435// Stop - Stops a specified packet capture session. 436func (client *PacketCapturesClient) stop(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, options *PacketCapturesBeginStopOptions) (*azcore.Response, error) { 437 req, err := client.stopCreateRequest(ctx, resourceGroupName, networkWatcherName, packetCaptureName, options) 438 if err != nil { 439 return nil, err 440 } 441 resp, err := client.con.Pipeline().Do(req) 442 if err != nil { 443 return nil, err 444 } 445 if !resp.HasStatusCode(http.StatusOK, http.StatusAccepted) { 446 return nil, client.stopHandleError(resp) 447 } 448 return resp, nil 449} 450 451// stopCreateRequest creates the Stop request. 452func (client *PacketCapturesClient) stopCreateRequest(ctx context.Context, resourceGroupName string, networkWatcherName string, packetCaptureName string, options *PacketCapturesBeginStopOptions) (*azcore.Request, error) { 453 urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/networkWatchers/{networkWatcherName}/packetCaptures/{packetCaptureName}/stop" 454 urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName)) 455 urlPath = strings.ReplaceAll(urlPath, "{networkWatcherName}", url.PathEscape(networkWatcherName)) 456 urlPath = strings.ReplaceAll(urlPath, "{packetCaptureName}", url.PathEscape(packetCaptureName)) 457 urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID)) 458 req, err := azcore.NewRequest(ctx, http.MethodPost, azcore.JoinPaths(client.con.Endpoint(), urlPath)) 459 if err != nil { 460 return nil, err 461 } 462 req.Telemetry(telemetryInfo) 463 query := req.URL.Query() 464 query.Set("api-version", "2020-07-01") 465 req.URL.RawQuery = query.Encode() 466 req.Header.Set("Accept", "application/json") 467 return req, nil 468} 469 470// stopHandleError handles the Stop error response. 471func (client *PacketCapturesClient) stopHandleError(resp *azcore.Response) error { 472 var err ErrorResponse 473 if err := resp.UnmarshalAsJSON(&err); err != nil { 474 return err 475 } 476 return azcore.NewResponseError(&err, resp.Response) 477} 478