private void VerifyPrivateEndpointConnections(PrivateLinkServiceConnection expectedValue, CosmosDBPrivateEndpointConnectionResource actualValue)
 {
     // Services will give diffferent ids and names for the incoming private endpoint connections, so comparing them is meaningless
     //Assert.AreEqual(expectedValue.Id, actualValue.Id);
     //Assert.AreEqual(expectedValue.Name, actualValue.Data.Name);
     Assert.AreEqual(expectedValue.ConnectionState.Status, actualValue.Data.ConnectionState.Status);
     Assert.AreEqual(expectedValue.ConnectionState.Description, actualValue.Data.ConnectionState.Description);
     Assert.AreEqual(expectedValue.ConnectionState.ActionsRequired, actualValue.Data.ConnectionState.ActionsRequired);
 }
Пример #2
0
        public PrivateEndpoint CreatePrivateEndpoint(string resourceGroupName, string privateEndpointNamePrefix, string privateLinkResourceId, string groupId, string subnetId, string location)
        {
            var privateEndpointName   = $"{privateEndpointNamePrefix}PrivateEndpoint";
            var serviceConnectionName = $"{privateEndpointNamePrefix}ServiceConnection";
            var groupIds = new List <string>()
            {
                groupId
            };
            var pe = new PrivateEndpoint();

            pe.Subnet   = new Subnet(id: subnetId);
            pe.Location = location;
            var plsConnection = new PrivateLinkServiceConnection();

            plsConnection.Name = serviceConnectionName;
            plsConnection.PrivateLinkServiceId = privateLinkResourceId;
            plsConnection.GroupIds             = groupIds;
            pe.PrivateLinkServiceConnections   = new List <PrivateLinkServiceConnection>()
            {
                plsConnection
            };
            return(WrappedNetworkClient.PrivateEndpoints.CreateOrUpdate(resourceGroupName, privateEndpointName, pe));
        }
Пример #3
0
        internal static PrivateEndpointData DeserializePrivateEndpointData(JsonElement element)
        {
            Optional <ExtendedLocation>                         extendedLocation = default;
            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 <SubnetData>                               subnet                              = default;
            Optional <IReadOnlyList <NetworkInterfaceData> >    networkInterfaces                   = default;
            Optional <NetworkProvisioningState>                 provisioningState                   = default;
            Optional <IList <PrivateLinkServiceConnection> >    privateLinkServiceConnections       = default;
            Optional <IList <PrivateLinkServiceConnection> >    manualPrivateLinkServiceConnections = default;
            Optional <IList <CustomDnsConfigPropertiesFormat> > customDnsConfigs                    = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("extendedLocation"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    extendedLocation = ExtendedLocation.DeserializeExtendedLocation(property.Value);
                    continue;
                }
                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("subnet"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            subnet = SubnetData.DeserializeSubnetData(property0.Value);
                            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("provisioningState"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            provisioningState = new NetworkProvisioningState(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("privateLinkServiceConnections"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <PrivateLinkServiceConnection> array = new List <PrivateLinkServiceConnection>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(PrivateLinkServiceConnection.DeserializePrivateLinkServiceConnection(item));
                            }
                            privateLinkServiceConnections = array;
                            continue;
                        }
                        if (property0.NameEquals("manualPrivateLinkServiceConnections"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <PrivateLinkServiceConnection> array = new List <PrivateLinkServiceConnection>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(PrivateLinkServiceConnection.DeserializePrivateLinkServiceConnection(item));
                            }
                            manualPrivateLinkServiceConnections = array;
                            continue;
                        }
                        if (property0.NameEquals("customDnsConfigs"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            List <CustomDnsConfigPropertiesFormat> array = new List <CustomDnsConfigPropertiesFormat>();
                            foreach (var item in property0.Value.EnumerateArray())
                            {
                                array.Add(CustomDnsConfigPropertiesFormat.DeserializeCustomDnsConfigPropertiesFormat(item));
                            }
                            customDnsConfigs = array;
                            continue;
                        }
                    }
                    continue;
                }
            }
            return(new PrivateEndpointData(id.Value, name.Value, Optional.ToNullable(type), Optional.ToNullable(location), Optional.ToDictionary(tags), extendedLocation.Value, Optional.ToNullable(etag), subnet.Value, Optional.ToList(networkInterfaces), Optional.ToNullable(provisioningState), Optional.ToList(privateLinkServiceConnections), Optional.ToList(manualPrivateLinkServiceConnections), Optional.ToList(customDnsConfigs)));
        }
        public async Task PrivateEndpointOperationsTest()
        {
            using (MockContext context = MockContext.Start(this.GetType()))
            {
                string resourceGroupName   = TestUtilities.GenerateName("sjrg");
                string clusterName         = TestUtilities.GenerateName("sj");
                string privateEndpointName = TestUtilities.GenerateName("testpe");

                var    resourceManagementClient        = this.GetResourceManagementClient(context);
                var    streamAnalyticsManagementClient = this.GetStreamAnalyticsManagementClient(context);
                string expectedClusterResourceId       = TestHelper.GetClusterResourceId(
                    streamAnalyticsManagementClient.SubscriptionId, resourceGroupName, clusterName);
                string expectedPrivateEndpointResourceId = TestHelper.GetPrivateEndpointResourceId(
                    streamAnalyticsManagementClient.SubscriptionId, resourceGroupName, clusterName, privateEndpointName);
                string expectedPrivateLinkServiceId = "/subscriptions/113d0adc-1017-40e9-84ff-763f52896cc2/resourceGroups/sjrg5830/providers/Microsoft.EventHub/namespaces/testeventhub4asacluster";

                Cluster exceptedCluster = new Cluster()
                {
                    Location = TestHelper.DefaultLocation,
                    Sku      = new ClusterSku()
                    {
                        Name     = ClusterSkuName.Default,
                        Capacity = 36
                    }
                };

                // Create Resource Group
                resourceManagementClient.ResourceGroups.CreateOrUpdate(resourceGroupName, new ResourceGroup {
                    Location = TestHelper.DefaultLocation
                });

                PrivateLinkServiceConnection privateLinkServiceConnection = new PrivateLinkServiceConnection()
                {
                    PrivateLinkServiceId = expectedPrivateLinkServiceId,
                    GroupIds             = new string[] { "namespace" }
                };

                PrivateEndpoint exceptedPrivateEndpoint = new PrivateEndpoint()
                {
                    Properties = new PrivateEndpointProperties()
                    {
                        ManualPrivateLinkServiceConnections = new List <PrivateLinkServiceConnection> {
                            privateLinkServiceConnection
                        }
                    }
                };

                // PUT cluster
                var putCluster = await streamAnalyticsManagementClient.Clusters.CreateOrUpdateWithHttpMessagesAsync(exceptedCluster, resourceGroupName, clusterName);;

                // PUT privateendpoint
                var putPrivateEndpoint = await streamAnalyticsManagementClient.PrivateEndpoints.CreateOrUpdateWithHttpMessagesAsync(exceptedPrivateEndpoint, resourceGroupName, clusterName, privateEndpointName);;

                // Null out because secrets are not returned in responses
                Assert.Equal(expectedClusterResourceId, putCluster.Body.Id);
                Assert.Equal(clusterName, putCluster.Body.Name);
                Assert.Equal(TestHelper.ClusterFullResourceType, putCluster.Body.Type);
                Assert.Equal("Succeeded", putCluster.Body.Properties.ProvisioningState);

                Assert.Equal(privateEndpointName, putPrivateEndpoint.Body.Name);
                Assert.Equal(expectedPrivateLinkServiceId, putPrivateEndpoint.Body.Properties.ManualPrivateLinkServiceConnections[0].PrivateLinkServiceId);
                Assert.Equal(TestHelper.PrivateEndpointFullResourceType, putPrivateEndpoint.Body.Type);
                Assert.Equal("PendingCreation", putPrivateEndpoint.Body.Properties.ManualPrivateLinkServiceConnections[0].PrivateLinkServiceConnectionState.Status);

                // Verify GET request returns expected private endpoint
                var getPrivateEndpoint = await streamAnalyticsManagementClient.PrivateEndpoints.GetWithHttpMessagesAsync(resourceGroupName, clusterName, privateEndpointName);

                Assert.Equal(putPrivateEndpoint.Body.Etag, getPrivateEndpoint.Body.Etag);

                // List private endpoints
                var listByCluster = streamAnalyticsManagementClient.PrivateEndpoints.ListByCluster(resourceGroupName, clusterName);
                Assert.Single(listByCluster);

                // Delete private endpoints
                streamAnalyticsManagementClient.PrivateEndpoints.Delete(resourceGroupName, clusterName, privateEndpointName);

                // Verify that list operation returns an empty list after deleting the job
                listByCluster = streamAnalyticsManagementClient.PrivateEndpoints.ListByCluster(resourceGroupName, clusterName);
                Assert.Empty(listByCluster);
            }
        }