public async Task <Response> CreateOrUpdateAsync(string subscriptionId, string resourceGroupName, string networkWatcherName, string flowLogName, FlowLogData parameters, CancellationToken cancellationToken = default) { if (subscriptionId == null) { throw new ArgumentNullException(nameof(subscriptionId)); } if (resourceGroupName == null) { throw new ArgumentNullException(nameof(resourceGroupName)); } if (networkWatcherName == null) { throw new ArgumentNullException(nameof(networkWatcherName)); } if (flowLogName == null) { throw new ArgumentNullException(nameof(flowLogName)); } if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } using var message = CreateCreateOrUpdateRequest(subscriptionId, resourceGroupName, networkWatcherName, flowLogName, parameters); await _pipeline.SendAsync(message, cancellationToken).ConfigureAwait(false); switch (message.Response.Status) { case 200: case 201: return(message.Response); default: throw await _clientDiagnostics.CreateRequestFailedExceptionAsync(message.Response).ConfigureAwait(false); } }
internal FlowLog(ArmClient client, FlowLogData data) : this(client, new ResourceIdentifier(data.Id)) { HasData = true; _data = data; }
internal HttpMessage CreateCreateOrUpdateRequest(string subscriptionId, string resourceGroupName, string networkWatcherName, string flowLogName, FlowLogData parameters) { var message = _pipeline.CreateMessage(); var request = message.Request; request.Method = RequestMethod.Put; var uri = new RawRequestUriBuilder(); uri.Reset(endpoint); uri.AppendPath("/subscriptions/", false); uri.AppendPath(subscriptionId, true); uri.AppendPath("/resourceGroups/", false); uri.AppendPath(resourceGroupName, true); uri.AppendPath("/providers/Microsoft.Network/networkWatchers/", false); uri.AppendPath(networkWatcherName, true); uri.AppendPath("/flowLogs/", false); uri.AppendPath(flowLogName, true); uri.AppendQuery("api-version", apiVersion, true); request.Uri = uri; request.Headers.Add("Accept", "application/json"); request.Headers.Add("Content-Type", "application/json"); var content = new Utf8JsonRequestContent(); content.JsonWriter.WriteObjectValue(parameters); request.Content = content; message.SetProperty("UserAgentOverride", _userAgent); return(message); }
public async virtual Task <FlowLogCreateOrUpdateOperation> CreateOrUpdateAsync(string flowLogName, FlowLogData parameters, bool waitForCompletion = true, CancellationToken cancellationToken = default) { if (flowLogName == null) { throw new ArgumentNullException(nameof(flowLogName)); } if (parameters == null) { throw new ArgumentNullException(nameof(parameters)); } using var scope = _clientDiagnostics.CreateScope("FlowLogCollection.CreateOrUpdate"); scope.Start(); try { var response = await _flowLogsRestClient.CreateOrUpdateAsync(Id.SubscriptionId, Id.ResourceGroupName, Id.Name, flowLogName, parameters, cancellationToken).ConfigureAwait(false); var operation = new FlowLogCreateOrUpdateOperation(Parent, _clientDiagnostics, Pipeline, _flowLogsRestClient.CreateCreateOrUpdateRequest(Id.SubscriptionId, Id.ResourceGroupName, Id.Name, flowLogName, parameters).Request, response); if (waitForCompletion) { await operation.WaitForCompletionAsync(cancellationToken).ConfigureAwait(false); } return(operation); } catch (Exception e) { scope.Failed(e); throw; } }
internal static NetworkSecurityGroupData DeserializeNetworkSecurityGroupData(JsonElement element) { Optional <ETag> etag = default; Optional <ResourceIdentifier> id = default; Optional <string> name = default; Optional <ResourceType> type = default; Optional <AzureLocation> location = default; Optional <IDictionary <string, string> > tags = default; Optional <IList <SecurityRuleData> > securityRules = default; Optional <IReadOnlyList <SecurityRuleData> > defaultSecurityRules = default; Optional <IReadOnlyList <NetworkInterfaceData> > networkInterfaces = default; Optional <IReadOnlyList <SubnetData> > subnets = default; Optional <IReadOnlyList <FlowLogData> > flowLogs = default; Optional <Guid> resourceGuid = default; Optional <NetworkProvisioningState> provisioningState = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("etag")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } etag = new ETag(property.Value.GetString()); continue; } if (property.NameEquals("id")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } id = new ResourceIdentifier(property.Value.GetString()); continue; } if (property.NameEquals("name")) { name = property.Value.GetString(); continue; } if (property.NameEquals("type")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } type = new ResourceType(property.Value.GetString()); continue; } if (property.NameEquals("location")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } location = new AzureLocation(property.Value.GetString()); continue; } if (property.NameEquals("tags")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } Dictionary <string, string> dictionary = new Dictionary <string, string>(); foreach (var property0 in property.Value.EnumerateObject()) { dictionary.Add(property0.Name, property0.Value.GetString()); } tags = dictionary; continue; } if (property.NameEquals("properties")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } foreach (var property0 in property.Value.EnumerateObject()) { if (property0.NameEquals("securityRules")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <SecurityRuleData> array = new List <SecurityRuleData>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(SecurityRuleData.DeserializeSecurityRuleData(item)); } securityRules = array; continue; } if (property0.NameEquals("defaultSecurityRules")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <SecurityRuleData> array = new List <SecurityRuleData>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(SecurityRuleData.DeserializeSecurityRuleData(item)); } defaultSecurityRules = array; continue; } if (property0.NameEquals("networkInterfaces")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <NetworkInterfaceData> array = new List <NetworkInterfaceData>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(NetworkInterfaceData.DeserializeNetworkInterfaceData(item)); } networkInterfaces = array; continue; } if (property0.NameEquals("subnets")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <SubnetData> array = new List <SubnetData>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(SubnetData.DeserializeSubnetData(item)); } subnets = array; continue; } if (property0.NameEquals("flowLogs")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } List <FlowLogData> array = new List <FlowLogData>(); foreach (var item in property0.Value.EnumerateArray()) { array.Add(FlowLogData.DeserializeFlowLogData(item)); } flowLogs = array; continue; } if (property0.NameEquals("resourceGuid")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } resourceGuid = property0.Value.GetGuid(); continue; } if (property0.NameEquals("provisioningState")) { if (property0.Value.ValueKind == JsonValueKind.Null) { property0.ThrowNonNullablePropertyIsNull(); continue; } provisioningState = new NetworkProvisioningState(property0.Value.GetString()); continue; } } continue; } } return(new NetworkSecurityGroupData(id.Value, name.Value, Optional.ToNullable(type), Optional.ToNullable(location), Optional.ToDictionary(tags), Optional.ToNullable(etag), Optional.ToList(securityRules), Optional.ToList(defaultSecurityRules), Optional.ToList(networkInterfaces), Optional.ToList(subnets), Optional.ToList(flowLogs), Optional.ToNullable(resourceGuid), Optional.ToNullable(provisioningState))); }
internal FlowLogResource(ArmClient client, FlowLogData data) : this(client, data.Id) { HasData = true; _data = data; }
public virtual async Task <ArmOperation <FlowLogResource> > CreateOrUpdateAsync(WaitUntil waitUntil, string flowLogName, FlowLogData data, CancellationToken cancellationToken = default) { Argument.AssertNotNullOrEmpty(flowLogName, nameof(flowLogName)); Argument.AssertNotNull(data, nameof(data)); using var scope = _flowLogClientDiagnostics.CreateScope("FlowLogCollection.CreateOrUpdate"); scope.Start(); try { var response = await _flowLogRestClient.CreateOrUpdateAsync(Id.SubscriptionId, Id.ResourceGroupName, Id.Name, flowLogName, data, cancellationToken).ConfigureAwait(false); var operation = new NetworkArmOperation <FlowLogResource>(new FlowLogOperationSource(Client), _flowLogClientDiagnostics, Pipeline, _flowLogRestClient.CreateCreateOrUpdateRequest(Id.SubscriptionId, Id.ResourceGroupName, Id.Name, flowLogName, data).Request, response, OperationFinalStateVia.AzureAsyncOperation); if (waitUntil == WaitUntil.Completed) { await operation.WaitForCompletionAsync(cancellationToken).ConfigureAwait(false); } return(operation); } catch (Exception e) { scope.Failed(e); throw; } }