Пример #1
0
        private void EnsureNameAvailabilityOrThrow()
        {
            var checkNameInputs      = new OperationInputs(this.Name, resourceType);
            var nameAvailabilityInfo = this.IotCentralClient.Apps.CheckNameAvailability(checkNameInputs);

            IotCentralUtils.EnsureAvailabilityOrThrow(nameAvailabilityInfo);
        }
Пример #2
0
        private void EnsureSubdomainAvailabilityOrThrow()
        {
            var checkSubdomainInputs      = new OperationInputs(this.Subdomain, resourceType);
            var subdomainAvailabilityInfo = this.IotCentralClient.Apps.CheckSubdomainAvailability(checkSubdomainInputs);

            IotCentralUtils.EnsureAvailabilityOrThrow(subdomainAvailabilityInfo);
        }
        public override void ExecuteCmdlet()
        {
            if (ShouldProcess(Name, ResourceProperties.Resources.NewIotCentralApp))
            {
                var inputs           = new OperationInputs(this.Name, "IotApps");
                var availabilityInfo = this.IotCentralClient.Apps.CheckNameAvailability(inputs);
                if (!(availabilityInfo.NameAvailable == true))
                {
                    throw new PSArgumentException(availabilityInfo.Message);
                }
                var iotCentralApp = new App()
                {
                    DisplayName = this.GetDisplayName(),
                    Subdomain   = this.Subdomain,
                    Template    = this.Template,
                    Sku         = new AppSkuInfo()
                    {
                        Name = this.GetAppSkuName()
                    },
                    Location = this.GetLocation(),
                    Tags     = this.GetTags()
                };

                this.IotCentralClient.Apps.CreateOrUpdate(this.ResourceGroupName, this.Name, iotCentralApp);
                App createdIotCentralApp = this.IotCentralClient.Apps.Get(this.ResourceGroupName, this.Name);
                this.WriteObject(IotCentralUtils.ToPSIotCentralApp(createdIotCentralApp), false);
            }
        }
Пример #4
0
        /// <summary>
        /// Checks whether given IoTHub name is available.
        /// </summary>
        /// <param name="iotHubName"></param>
        /// <param name="cancellationToken"></param>
        /// <returns>True if name is available, False otherwise.</returns>
        public async Task <bool> CheckNameAvailabilityAsync(
            string iotHubName,
            CancellationToken cancellationToken = default
            )
        {
            try {
                var operationInputs = new OperationInputs {
                    Name = iotHubName
                };

                var nameAvailabilityInfo = await _iotHubClient
                                           .IotHubResource
                                           .CheckNameAvailabilityAsync(
                    operationInputs,
                    cancellationToken
                    );

                if (nameAvailabilityInfo.NameAvailable.HasValue)
                {
                    return(nameAvailabilityInfo.NameAvailable.Value);
                }
            }
            catch (Exception ex) {
                Log.Error(ex, $"Failed to check IoTHub Service name availability for {iotHubName}");
                throw;
            }

            // !nameAvailabilityInfo.NameAvailable.HasValue
            throw new Exception($"Failed to check IoTHub Service name availability for {iotHubName}");
        }
Пример #5
0
        static void Main()
        {
            // Access token from the azure-cli
            // az account get-access-token
            var token          = "";
            var subscriptionId = "";
            var creds          = new TokenCredentials(token, "Bearer");

            var client   = new IotCentralClient(creds);
            var skuInfo  = new AppSkuInfo("ST2");
            var location = "unitedstates";
            var app      = new App(location, skuInfo);

            client.SubscriptionId = subscriptionId;

            var name          = "csharp-test-app";
            var resourceGroup = "myResourceGroup";

            app.Location    = location;
            app.Subdomain   = name;
            app.DisplayName = name;

            Console.WriteLine("Check if the app name is available");
            OperationInputs input         = new OperationInputs(name);
            var             nameAvailable = client.Apps.CheckNameAvailability(input);

            Console.WriteLine(nameAvailable.Message);

            Console.WriteLine("Creating the app");
            client.Apps.CreateOrUpdate(resourceGroup, name, app);

            Console.WriteLine("Getting the app");
            var resultApp = client.Apps.Get(resourceGroup, name);

            Console.WriteLine(resultApp);

            Console.WriteLine("Updating the app");
            var updateApp = new AppPatch();

            updateApp.DisplayName = name + "-new-name";
            var updateResult = client.Apps.Update(resourceGroup, name, updateApp);

            Console.WriteLine(updateResult);

            Console.WriteLine("Listing apps");
            foreach (var currentApp in client.Apps.ListByResourceGroup(resourceGroup))
            {
                Console.WriteLine($"{currentApp.DisplayName} ({currentApp.Id})");
            }

            Console.WriteLine(Environment.NewLine);
            // Console.WriteLine("Removing app");
            // client.Apps.Delete(resourceGroup, name);

            Console.WriteLine("Done");
        }
Пример #6
0
 public virtual Response <AppAvailabilityInfo> CheckSubdomainAvailabilityApp(OperationInputs operationInputs, CancellationToken cancellationToken = default)
 {
     using var scope = IotCentralAppAppsClientDiagnostics.CreateScope("SubscriptionResourceExtensionClient.CheckSubdomainAvailabilityApp");
     scope.Start();
     try
     {
         var response = IotCentralAppAppsRestClient.CheckSubdomainAvailability(Id.SubscriptionId, operationInputs, cancellationToken);
         return(response);
     }
     catch (Exception e)
     {
         scope.Failed(e);
         throw;
     }
 }
Пример #7
0
        public void TestOperationInputsWhenInvalidInput()
        {
            var exceptionThrown = false;

            try
            {
                var             nameInput      = "SOMEINVALIDINPUT";
                OperationInputs operationInput = new OperationInputs(nameInput);
                operationInput.Validate();
            }
            catch (Exception ex)
            {
                exceptionThrown = true;
                Assert.Equal(typeof(ValidationException), ex.GetType());
            }
            Assert.True(exceptionThrown);
        }
Пример #8
0
        /// <summary>
        /// Checks whether given IoTHub name is available.
        /// </summary>
        /// <param name="iotHubName"></param>
        /// <param name="cancellationToken"></param>
        /// <returns>True if name is available, False otherwise.</returns>
        /// <exception cref="Microsoft.Rest.Azure.CloudException"></exception>
        public async Task <bool> CheckNameAvailabilityAsync(
            string iotHubName,
            CancellationToken cancellationToken = default
            )
        {
            try {
                var operationInputs = new OperationInputs {
                    Name = iotHubName
                };

                var nameAvailabilityInfo = await _iotHubClient
                                           .IotHubResource
                                           .CheckNameAvailabilityAsync(
                    operationInputs,
                    cancellationToken
                    );

                if (nameAvailabilityInfo.NameAvailable.HasValue)
                {
                    return(nameAvailabilityInfo.NameAvailable.Value);
                }
            }
            catch (Microsoft.Rest.Azure.CloudException) {
                // Will be thrown if there is no registered resource provider
                // found for specified location and/or api version to perform
                // name availability check.
                throw;
            }
            catch (Exception ex) {
                Log.Error(ex, $"Failed to check IoTHub Service name availability for {iotHubName}");
                throw;
            }

            // !nameAvailabilityInfo.NameAvailable.HasValue
            throw new Exception($"Failed to check IoTHub Service name availability for {iotHubName}");
        }
Пример #9
0
        public void TestIotHubUpdateLifeCycle()
        {
            using (MockContext context = MockContext.Start(this.GetType().FullName))
            {
                this.Initialize(context);

                // Create Resource Group
                var resourceGroup = this.CreateResourceGroup(IotHubTestUtilities.DefaultUpdateResourceGroupName);

                // Check if Hub Exists and Delete
                var operationInputs = new OperationInputs()
                {
                    Name = IotHubTestUtilities.DefaultUpdateIotHubName
                };

                var iotHubNameAvailabilityInfo = this.iotHubClient.IotHubResource.CheckNameAvailability(operationInputs);

                if (!(bool)iotHubNameAvailabilityInfo.NameAvailable)
                {
                    this.iotHubClient.IotHubResource.Delete(
                        IotHubTestUtilities.DefaultResourceGroupName,
                        IotHubTestUtilities.DefaultUpdateIotHubName);

                    iotHubNameAvailabilityInfo = this.iotHubClient.IotHubResource.CheckNameAvailability(operationInputs);
                    Assert.True(iotHubNameAvailabilityInfo.NameAvailable);
                }

                var iotHub = this.CreateIotHub(resourceGroup, IotHubTestUtilities.DefaultLocation, IotHubTestUtilities.DefaultUpdateIotHubName, null);

                Assert.NotNull(iotHub);
                Assert.Equal(IotHubSku.S1, iotHub.Sku.Name);
                Assert.Equal(IotHubTestUtilities.DefaultUpdateIotHubName, iotHub.Name);

                // Update capacity
                iotHub.Sku.Capacity += 1;
                var retIotHub = this.UpdateIotHub(resourceGroup, iotHub, IotHubTestUtilities.DefaultUpdateIotHubName);

                Assert.NotNull(retIotHub);
                Assert.Equal(IotHubSku.S1, retIotHub.Sku.Name);
                Assert.Equal(iotHub.Sku.Capacity, retIotHub.Sku.Capacity);
                Assert.Equal(IotHubTestUtilities.DefaultUpdateIotHubName, retIotHub.Name);

                // Update IotHub with routing rules

                iotHub.Properties.Routing = this.GetIotHubRoutingProperties(resourceGroup);
                retIotHub = this.UpdateIotHub(resourceGroup, iotHub, IotHubTestUtilities.DefaultUpdateIotHubName);

                Assert.NotNull(retIotHub);
                Assert.Equal(IotHubTestUtilities.DefaultUpdateIotHubName, retIotHub.Name);
                Assert.Equal(4, retIotHub.Properties.Routing.Routes.Count);
                Assert.Equal(1, retIotHub.Properties.Routing.Endpoints.EventHubs.Count);
                Assert.Equal(1, retIotHub.Properties.Routing.Endpoints.ServiceBusTopics.Count);
                Assert.Equal(1, retIotHub.Properties.Routing.Endpoints.ServiceBusQueues.Count);
                Assert.Equal("route1", retIotHub.Properties.Routing.Routes[0].Name);

                // Get an Iot Hub
                var iotHubDesc = this.iotHubClient.IotHubResource.Get(
                    IotHubTestUtilities.DefaultUpdateResourceGroupName,
                    IotHubTestUtilities.DefaultUpdateIotHubName);


                Assert.NotNull(iotHubDesc);
                Assert.Equal(IotHubSku.S1, iotHubDesc.Sku.Name);
                Assert.Equal(iotHub.Sku.Capacity, iotHubDesc.Sku.Capacity);
                Assert.Equal(IotHubTestUtilities.DefaultUpdateIotHubName, iotHubDesc.Name);

                // Update Again
                // perform a dummy update
                iotHubDesc.Properties.Routing.Endpoints.EventHubs[0].ResourceGroup = "1";
                retIotHub = this.UpdateIotHub(resourceGroup, iotHubDesc, IotHubTestUtilities.DefaultUpdateIotHubName);

                Assert.NotNull(retIotHub);
                Assert.Equal(IotHubTestUtilities.DefaultUpdateIotHubName, retIotHub.Name);
                Assert.Equal(4, retIotHub.Properties.Routing.Routes.Count);
                Assert.Equal(1, retIotHub.Properties.Routing.Endpoints.EventHubs.Count);
                Assert.Equal(1, retIotHub.Properties.Routing.Endpoints.ServiceBusTopics.Count);
                Assert.Equal(1, retIotHub.Properties.Routing.Endpoints.ServiceBusQueues.Count);
                Assert.Equal("route1", retIotHub.Properties.Routing.Routes[0].Name);
            }
        }
        static void Main()
        {
            // Access token from the azure-cli
            // az account get-access-token
            var token          = "";
            var subscriptionId = "";
            var creds          = new TokenCredentials(token, "Bearer");

            var client   = new IotCentralClient(creds);
            var skuInfo  = new AppSkuInfo("ST2");
            var location = "unitedstates";
            var app      = new App(location, skuInfo);

            client.SubscriptionId = subscriptionId;

            var name          = "csharp-test-app";
            var resourceGroup = "myResourceGroup";

            app.Location    = location;
            app.Subdomain   = name;
            app.DisplayName = name;

            Console.WriteLine("===Check if the app name is available");
            OperationInputs input = new OperationInputs(name);
            var             appNameAvailability = client.Apps.CheckNameAvailability(input);

            if (appNameAvailability.NameAvailable == true)
            {
                Console.WriteLine("app name is available!");
            }
            else
            {
                Console.WriteLine($"app name isn't available because {appNameAvailability.Reason}");
            }

            Console.WriteLine("===Creating the app");
            var createApp = client.Apps.CreateOrUpdate(resourceGroup, name, app);

            Console.WriteLine(createApp.Name);
            Console.WriteLine(createApp.DisplayName);

            Console.WriteLine("===Getting the app");
            var resultApp = client.Apps.Get(resourceGroup, name);

            Console.WriteLine(resultApp.Name);
            Console.WriteLine(resultApp.DisplayName);

            Console.WriteLine("===Updating the app");
            var updateApp = new AppPatch();

            updateApp.DisplayName = name + "-new-name";
            var updateResult = client.Apps.Update(resourceGroup, name, updateApp);

            Console.WriteLine(updateResult.Name);
            Console.WriteLine(updateResult.DisplayName);

            Console.WriteLine($"===Listing all the apps under the resource group of {resourceGroup}");
            foreach (var currentApp in client.Apps.ListByResourceGroup(resourceGroup))
            {
                Console.WriteLine($"{currentApp.DisplayName} ({currentApp.Id})");
            }

            Console.WriteLine("===Listing all the operations in iotc");
            foreach (var currentOperation in client.Operations.List())
            {
                Console.WriteLine(currentOperation.Name);
            }

            Console.WriteLine("===Listing all the app templates in iotc");
            foreach (var currentAppTemplate in client.Apps.ListTemplates())
            {
                Console.WriteLine(currentAppTemplate.Name);
            }

            Console.WriteLine("===Removing app");
            client.Apps.Delete(resourceGroup, name);

            Console.WriteLine("Done");
        }
Пример #11
0
        public void TestIotHubLifeCycle()
        {
            using (MockContext context = MockContext.Start(this.GetType().FullName))
            {
                this.Initialize(context);

                // Create Resource Group
                var resourceGroup = this.CreateResourceGroup();

                // Check if Hub Exists and Delete
                var operationInputs = new OperationInputs()
                {
                    Name = IotHubTestUtilities.DefaultIotHubName
                };

                var iotHubNameAvailabilityInfo = this.iotHubClient.IotHubResource.CheckNameAvailability(operationInputs);

                if (!(bool)iotHubNameAvailabilityInfo.NameAvailable)
                {
                    this.iotHubClient.IotHubResource.Delete(
                        IotHubTestUtilities.DefaultResourceGroupName,
                        IotHubTestUtilities.DefaultIotHubName);

                    iotHubNameAvailabilityInfo = this.iotHubClient.IotHubResource.CheckNameAvailability(operationInputs);
                    Assert.Equal(true, iotHubNameAvailabilityInfo.NameAvailable);
                }


                // Create Hub
                var iotHub = this.CreateDefaultIotHub(resourceGroup);

                Assert.NotNull(iotHub);
                Assert.Equal(IotHubSku.S1, iotHub.Sku.Name);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubName, iotHub.Name);

                // Get quota metrics
                var quotaMetrics = this.iotHubClient.IotHubResource.GetQuotaMetrics(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName);

                Assert.True(quotaMetrics.Count() > 0);
                Assert.True(quotaMetrics.Any(q => q.Name.Equals("TotalMessages", StringComparison.OrdinalIgnoreCase) &&
                                             q.CurrentValue == 0 &&
                                             q.MaxValue == 400000));

                Assert.True(quotaMetrics.Any(q => q.Name.Equals("TotalDeviceCount", StringComparison.OrdinalIgnoreCase) &&
                                             q.CurrentValue == 0 &&
                                             q.MaxValue == 500000));

                // Update capacity
                iotHub.Sku.Capacity += 1;
                var retIotHub = this.UpdateIotHub(resourceGroup, iotHub);

                Assert.NotNull(retIotHub);
                Assert.Equal(IotHubSku.S1, retIotHub.Sku.Name);
                Assert.Equal(iotHub.Sku.Capacity, retIotHub.Sku.Capacity);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubName, retIotHub.Name);

                // Get an Iot Hub
                var iotHubDesc = this.iotHubClient.IotHubResource.Get(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName);


                Assert.NotNull(iotHubDesc);
                Assert.Equal(IotHubSku.S1, iotHubDesc.Sku.Name);
                Assert.Equal(iotHub.Sku.Capacity, iotHubDesc.Sku.Capacity);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubName, iotHubDesc.Name);

                // Get all Iot Hubs in a resource group
                var iotHubs = this.iotHubClient.IotHubResource.ListByResourceGroup(IotHubTestUtilities.DefaultResourceGroupName);
                Assert.True(iotHubs.Count() > 0);

                // Get Valid Skus
                var skus = this.iotHubClient.IotHubResource.GetValidSkus(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName);
                Assert.Equal(3, skus.Count());


                // Get All Iothub Keys
                var keys = this.iotHubClient.IotHubResource.ListKeys(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName);
                Assert.True(keys.Count() > 0);
                Assert.True(keys.Any(k => k.KeyName.Equals("iothubowner", StringComparison.OrdinalIgnoreCase)));

                // Get specific IotHub Key
                var key = this.iotHubClient.IotHubResource.GetKeysForKeyName(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName,
                    "iothubowner");
                Assert.Equal("iothubowner", key.KeyName);

                // Get All EH consumer groups
                var ehConsumerGroups = this.iotHubClient.IotHubResource.ListEventHubConsumerGroups(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName,
                    IotHubTestUtilities.EventsEndpointName);
                Assert.True(ehConsumerGroups.Count() > 0);
                Assert.True(ehConsumerGroups.Any(e => e.Equals("$Default", StringComparison.OrdinalIgnoreCase)));

                // Add EH consumer group
                var ehConsumerGroup = this.iotHubClient.IotHubResource.CreateEventHubConsumerGroup(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName,
                    IotHubTestUtilities.EventsEndpointName,
                    "testConsumerGroup");

                Assert.Equal("testConsumerGroup", ehConsumerGroup.Name);


                // Get EH consumer group
                ehConsumerGroup = this.iotHubClient.IotHubResource.GetEventHubConsumerGroup(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName,
                    IotHubTestUtilities.EventsEndpointName,
                    "testConsumerGroup");

                Assert.Equal("testConsumerGroup", ehConsumerGroup.Name);

                // Delete EH consumer group
                this.iotHubClient.IotHubResource.DeleteEventHubConsumerGroup(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName,
                    IotHubTestUtilities.EventsEndpointName,
                    "testConsumerGroup");

                // Delete Hub
                this.iotHubClient.IotHubResource.Delete(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName);

                iotHubNameAvailabilityInfo = this.iotHubClient.IotHubResource.CheckNameAvailability(operationInputs);
                Assert.Equal(true, iotHubNameAvailabilityInfo.NameAvailable);
            }
        }
        public static async Task <Response <AppAvailabilityInfo> > CheckSubdomainAvailabilityAppAsync(this SubscriptionResource subscriptionResource, OperationInputs operationInputs, CancellationToken cancellationToken = default)
        {
            Argument.AssertNotNull(operationInputs, nameof(operationInputs));

            return(await GetExtensionClient(subscriptionResource).CheckSubdomainAvailabilityAppAsync(operationInputs, cancellationToken).ConfigureAwait(false));
        }
        public static Response <AppAvailabilityInfo> CheckNameAvailabilityApp(this SubscriptionResource subscriptionResource, OperationInputs operationInputs, CancellationToken cancellationToken = default)
        {
            Argument.AssertNotNull(operationInputs, nameof(operationInputs));

            return(GetExtensionClient(subscriptionResource).CheckNameAvailabilityApp(operationInputs, cancellationToken));
        }
 /// <summary>
 /// Check if an IoT Central application subdomain is available.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='operationInputs'>
 /// Set the name parameter in the OperationInputs structure to the subdomain of
 /// the IoT Central application to check.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <AppAvailabilityInfo> CheckSubdomainAvailabilityAsync(this IAppsOperations operations, OperationInputs operationInputs, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.CheckSubdomainAvailabilityWithHttpMessagesAsync(operationInputs, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Пример #15
0
        public void TestIotHubCreateLifeCycle()
        {
            using (MockContext context = MockContext.Start(this.GetType().FullName))
            {
                this.Initialize(context);

                // Create Resource Group
                var resourceGroup = this.CreateResourceGroup(IotHubTestUtilities.DefaultResourceGroupName);

                // Check if Hub Exists and Delete
                var operationInputs = new OperationInputs()
                {
                    Name = IotHubTestUtilities.DefaultIotHubName
                };

                var iotHubNameAvailabilityInfo = this.iotHubClient.IotHubResource.CheckNameAvailability(operationInputs);

                if (!(bool)iotHubNameAvailabilityInfo.NameAvailable)
                {
                    this.iotHubClient.IotHubResource.Delete(
                        IotHubTestUtilities.DefaultResourceGroupName,
                        IotHubTestUtilities.DefaultIotHubName);

                    iotHubNameAvailabilityInfo = this.iotHubClient.IotHubResource.CheckNameAvailability(operationInputs);
                    Assert.True(iotHubNameAvailabilityInfo.NameAvailable);
                }

                //CreateEH and AuthRule
                var properties = new IotHubProperties();
                properties.Routing = this.GetIotHubRoutingProperties(resourceGroup);
                var iotHub = this.CreateIotHub(resourceGroup, IotHubTestUtilities.DefaultLocation, IotHubTestUtilities.DefaultIotHubName, properties);

                Assert.NotNull(iotHub);
                Assert.Equal(IotHubSku.S1, iotHub.Sku.Name);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubName, iotHub.Name);

                // Add and Get Tags
                IDictionary <string, string> tags = new Dictionary <string, string>();
                tags.Add("key1", "value1");
                tags.Add("key2", "value2");
                var tag = new TagsResource(tags);
                iotHub = this.iotHubClient.IotHubResource.Update(IotHubTestUtilities.DefaultResourceGroupName, IotHubTestUtilities.DefaultIotHubName, tag);

                Assert.NotNull(iotHub);
                Assert.True(iotHub.Tags.Count().Equals(2));
                Assert.Equal("value2", iotHub.Tags["key2"]);

                var subscriptionQuota = this.iotHubClient.ResourceProviderCommon.GetSubscriptionQuota();

                Assert.Equal(2, subscriptionQuota.Value.Count);
                Assert.Equal(1, subscriptionQuota.Value.FirstOrDefault(x => x.Name.Value.Equals("freeIotHubCount")).Limit);
                Assert.Equal(100, subscriptionQuota.Value.FirstOrDefault(x => x.Name.Value.Equals("paidIotHubCount")).Limit);

                var endpointHealth = this.iotHubClient.IotHubResource.GetEndpointHealth(IotHubTestUtilities.DefaultResourceGroupName, IotHubTestUtilities.DefaultIotHubName);
                Assert.Equal(4, endpointHealth.Count());
                Assert.Contains(endpointHealth, q => q.EndpointId.Equals("events", StringComparison.OrdinalIgnoreCase));

                TestAllRoutesInput  testAllRoutesInput  = new TestAllRoutesInput(RoutingSource.DeviceMessages, new RoutingMessage(), new RoutingTwin());
                TestAllRoutesResult testAllRoutesResult = this.iotHubClient.IotHubResource.TestAllRoutes(testAllRoutesInput, IotHubTestUtilities.DefaultIotHubName, IotHubTestUtilities.DefaultResourceGroupName);
                Assert.Equal(4, testAllRoutesResult.Routes.Count);

                TestRouteInput  testRouteInput  = new TestRouteInput(properties.Routing.Routes[0], new RoutingMessage(), new RoutingTwin());
                TestRouteResult testRouteResult = this.iotHubClient.IotHubResource.TestRoute(testRouteInput, IotHubTestUtilities.DefaultIotHubName, IotHubTestUtilities.DefaultResourceGroupName);
                Assert.Equal("true", testRouteResult.Result);

                // Get quota metrics
                var quotaMetrics = this.iotHubClient.IotHubResource.GetQuotaMetrics(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName);

                Assert.True(quotaMetrics.Count() > 0);
                Assert.Contains(quotaMetrics, q => q.Name.Equals("TotalMessages", StringComparison.OrdinalIgnoreCase) &&
                                q.CurrentValue == 0 &&
                                q.MaxValue == 400000);

                Assert.Contains(quotaMetrics, q => q.Name.Equals("TotalDeviceCount", StringComparison.OrdinalIgnoreCase) &&
                                q.CurrentValue == 0 &&
                                q.MaxValue == 500000);

                // Get all Iot Hubs in a resource group
                var iotHubs = this.iotHubClient.IotHubResource.ListByResourceGroup(IotHubTestUtilities.DefaultResourceGroupName);
                Assert.True(iotHubs.Count() > 0);

                // Get all Iot Hubs in a subscription
                var iotHubBySubscription = this.iotHubClient.IotHubResource.ListBySubscription();
                Assert.True(iotHubBySubscription.Count() > 0);

                // Get Registry Stats
                var regStats = this.iotHubClient.IotHubResource.GetStats(IotHubTestUtilities.DefaultResourceGroupName, IotHubTestUtilities.DefaultIotHubName);
                Assert.True(regStats.TotalDeviceCount.Value.Equals(0));
                Assert.True(regStats.EnabledDeviceCount.Value.Equals(0));
                Assert.True(regStats.DisabledDeviceCount.Value.Equals(0));

                // Get Valid Skus
                var skus = this.iotHubClient.IotHubResource.GetValidSkus(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName);
                Assert.Equal(3, skus.Count());


                // Get All Iothub Keys
                var keys = this.iotHubClient.IotHubResource.ListKeys(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName);
                Assert.True(keys.Count() > 0);
                Assert.Contains(keys, k => k.KeyName.Equals("iothubowner", StringComparison.OrdinalIgnoreCase));

                // Get specific IotHub Key
                var key = this.iotHubClient.IotHubResource.GetKeysForKeyName(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName,
                    "iothubowner");
                Assert.Equal("iothubowner", key.KeyName);

                // Get All EH consumer groups
                var ehConsumerGroups = this.iotHubClient.IotHubResource.ListEventHubConsumerGroups(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName,
                    IotHubTestUtilities.EventsEndpointName);
                Assert.True(ehConsumerGroups.Count() > 0);
                Assert.Contains(ehConsumerGroups, e => e.Name.Equals("$Default", StringComparison.OrdinalIgnoreCase));

                // Add EH consumer group
                var ehConsumerGroup = this.iotHubClient.IotHubResource.CreateEventHubConsumerGroup(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName,
                    IotHubTestUtilities.EventsEndpointName,
                    "testConsumerGroup");

                Assert.Equal("testConsumerGroup", ehConsumerGroup.Name);


                // Get EH consumer group
                ehConsumerGroup = this.iotHubClient.IotHubResource.GetEventHubConsumerGroup(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName,
                    IotHubTestUtilities.EventsEndpointName,
                    "testConsumerGroup");

                Assert.Equal("testConsumerGroup", ehConsumerGroup.Name);

                // Delete EH consumer group
                this.iotHubClient.IotHubResource.DeleteEventHubConsumerGroup(
                    IotHubTestUtilities.DefaultResourceGroupName,
                    IotHubTestUtilities.DefaultIotHubName,
                    IotHubTestUtilities.EventsEndpointName,
                    "testConsumerGroup");

                // Get all of the available IoT Hub REST API operations
                var operationList = this.iotHubClient.Operations.List();
                Assert.True(operationList.Count() > 0);
                Assert.Contains(operationList, e => e.Name.Equals("Microsoft.Devices/iotHubs/Read", StringComparison.OrdinalIgnoreCase));

                // Get IoT Hub REST API read operation
                var hubReadOperation = operationList.Where(e => e.Name.Equals("Microsoft.Devices/iotHubs/Read", StringComparison.OrdinalIgnoreCase));
                Assert.True(hubReadOperation.Count().Equals(1));
                Assert.Equal("Microsoft Devices", hubReadOperation.First().Display.Provider, ignoreCase: true);
                Assert.Equal("Get IotHub(s)", hubReadOperation.First().Display.Operation, ignoreCase: true);
            }
        }
Пример #16
0
        public virtual async Task <Response <AppAvailabilityInfo> > CheckNameAvailabilityAppAsync(OperationInputs operationInputs, CancellationToken cancellationToken = default)
        {
            using var scope = IotCentralAppAppsClientDiagnostics.CreateScope("SubscriptionResourceExtensionClient.CheckNameAvailabilityApp");
            scope.Start();
            try
            {
                var response = await IotCentralAppAppsRestClient.CheckNameAvailabilityAsync(Id.SubscriptionId, operationInputs, cancellationToken).ConfigureAwait(false);

                return(response);
            }
            catch (Exception e)
            {
                scope.Failed(e);
                throw;
            }
        }
Пример #17
0
 /// <summary>
 /// Check if a provisioning service name is available.
 /// </summary>
 /// <remarks>
 /// Check if a provisioning service name is available. This will validate if
 /// the name is syntactically valid and if the name is usable
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='arguments'>
 /// Set the name parameter in the OperationInputs structure to the name of the
 /// provisioning service to check.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <NameAvailabilityInfo> CheckProvisioningServiceNameAvailabilityAsync(this IIotDpsResourceOperations operations, OperationInputs arguments, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.CheckProvisioningServiceNameAvailabilityWithHttpMessagesAsync(arguments, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
Пример #18
0
 /// <summary>
 /// Check if a provisioning service name is available.
 /// </summary>
 /// <remarks>
 /// Check if a provisioning service name is available. This will validate if
 /// the name is syntactically valid and if the name is usable
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='arguments'>
 /// Set the name parameter in the OperationInputs structure to the name of the
 /// provisioning service to check.
 /// </param>
 public static NameAvailabilityInfo CheckProvisioningServiceNameAvailability(this IIotDpsResourceOperations operations, OperationInputs arguments)
 {
     return(operations.CheckProvisioningServiceNameAvailabilityAsync(arguments).GetAwaiter().GetResult());
 }
Пример #19
0
        public void TestIotHubCertificateLifeCycle()
        {
            using (MockContext context = MockContext.Start(this.GetType().FullName))
            {
                this.Initialize(context);

                // Create Resource Group
                var resourceGroup = this.CreateResourceGroup(IotHubTestUtilities.DefaultCertificateResourceGroupName);

                // Check if Hub Exists and Delete
                var operationInputs = new OperationInputs()
                {
                    Name = IotHubTestUtilities.DefaultCertificateIotHubName
                };

                var iotHubNameAvailabilityInfo = this.iotHubClient.IotHubResource.CheckNameAvailability(operationInputs);

                if (!(bool)iotHubNameAvailabilityInfo.NameAvailable)
                {
                    this.iotHubClient.IotHubResource.Delete(
                        IotHubTestUtilities.DefaultCertificateResourceGroupName,
                        IotHubTestUtilities.DefaultCertificateIotHubName);

                    iotHubNameAvailabilityInfo = this.iotHubClient.IotHubResource.CheckNameAvailability(operationInputs);
                    Assert.True(iotHubNameAvailabilityInfo.NameAvailable);
                }

                // Create Hub
                var iotHub = this.CreateIotHub(resourceGroup, IotHubTestUtilities.DefaultLocation, IotHubTestUtilities.DefaultCertificateIotHubName, null);

                // Upload Certificate to the Hub
                var newCertificateDescription = this.CreateCertificate(resourceGroup, IotHubTestUtilities.DefaultCertificateIotHubName, IotHubTestUtilities.DefaultIotHubCertificateName, IotHubTestUtilities.DefaultIotHubCertificateContent);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubCertificateName, newCertificateDescription.Name);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubCertificateSubject, newCertificateDescription.Properties.Subject);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubCertificateThumbprint, newCertificateDescription.Properties.Thumbprint);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubCertificateType, newCertificateDescription.Type);
                Assert.False(newCertificateDescription.Properties.IsVerified);

                // Get all certificates
                var certificateList = this.GetCertificates(resourceGroup, IotHubTestUtilities.DefaultCertificateIotHubName);
                Assert.True(certificateList.Value.Count().Equals(1));

                // Get certificate
                var certificate = this.GetCertificate(resourceGroup, IotHubTestUtilities.DefaultCertificateIotHubName, IotHubTestUtilities.DefaultIotHubCertificateName);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubCertificateName, certificate.Name);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubCertificateSubject, certificate.Properties.Subject);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubCertificateThumbprint, certificate.Properties.Thumbprint);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubCertificateType, certificate.Type);
                Assert.False(certificate.Properties.IsVerified);

                var certificateWithNonceDescription = this.GenerateVerificationCode(resourceGroup, IotHubTestUtilities.DefaultCertificateIotHubName, IotHubTestUtilities.DefaultIotHubCertificateName, certificate.Etag);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubCertificateName, certificateWithNonceDescription.Name);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubCertificateSubject, certificateWithNonceDescription.Properties.Subject);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubCertificateThumbprint, certificateWithNonceDescription.Properties.Thumbprint);
                Assert.Equal(IotHubTestUtilities.DefaultIotHubCertificateType, certificateWithNonceDescription.Type);
                Assert.False(certificateWithNonceDescription.Properties.IsVerified);
                Assert.NotNull(certificateWithNonceDescription.Properties.VerificationCode);

                // Delete certificate
                this.DeleteCertificate(resourceGroup, IotHubTestUtilities.DefaultCertificateIotHubName, IotHubTestUtilities.DefaultIotHubCertificateName, certificateWithNonceDescription.Etag);

                // Get all certificate after delete
                var certificateListAfterDelete = this.GetCertificates(resourceGroup, IotHubTestUtilities.DefaultCertificateIotHubName);
                Assert.True(certificateListAfterDelete.Value.Count().Equals(0));
            }
        }
 /// <summary>
 /// Check if an IoT Central application subdomain is available.
 /// </summary>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='operationInputs'>
 /// Set the name parameter in the OperationInputs structure to the subdomain of
 /// the IoT Central application to check.
 /// </param>
 public static AppAvailabilityInfo CheckSubdomainAvailability(this IAppsOperations operations, OperationInputs operationInputs)
 {
     return(operations.CheckSubdomainAvailabilityAsync(operationInputs).GetAwaiter().GetResult());
 }