public override void ExecuteCmdlet() { if (ShouldProcess(EndpointName, Properties.Resources.AddIotHubRoutingEndpoint)) { IotHubDescription iotHubDescription; if (ParameterSetName.Equals(InputObjectParameterSet)) { this.ResourceGroupName = this.InputObject.Resourcegroup; this.Name = this.InputObject.Name; iotHubDescription = IotHubUtils.ConvertObject <PSIotHub, IotHubDescription>(this.InputObject); } else { if (ParameterSetName.Equals(ResourceIdParameterSet)) { this.ResourceGroupName = IotHubUtils.GetResourceGroupName(this.ResourceId); this.Name = IotHubUtils.GetIotHubName(this.ResourceId); } iotHubDescription = this.IotHubClient.IotHubResource.Get(this.ResourceGroupName, this.Name); } switch (this.EndpointType) { case PSEndpointType.EventHub: iotHubDescription.Properties.Routing.Endpoints.EventHubs.Add( new RoutingEventHubProperties() { Name = this.EndpointName, ConnectionString = this.ConnectionString, ResourceGroup = this.EndpointResourceGroup, SubscriptionId = this.EndpointSubscriptionId }); break; case PSEndpointType.ServiceBusQueue: iotHubDescription.Properties.Routing.Endpoints.ServiceBusQueues.Add( new RoutingServiceBusQueueEndpointProperties() { Name = this.EndpointName, ConnectionString = this.ConnectionString, ResourceGroup = this.EndpointResourceGroup, SubscriptionId = this.EndpointSubscriptionId }); break; case PSEndpointType.ServiceBusTopic: iotHubDescription.Properties.Routing.Endpoints.ServiceBusTopics.Add( new RoutingServiceBusTopicEndpointProperties() { Name = this.EndpointName, ConnectionString = this.ConnectionString, ResourceGroup = this.EndpointResourceGroup, SubscriptionId = this.EndpointSubscriptionId }); break; case PSEndpointType.AzureStorageContainer: iotHubDescription.Properties.Routing.Endpoints.StorageContainers.Add( new RoutingStorageContainerProperties() { Name = this.EndpointName, ConnectionString = this.ConnectionString, ResourceGroup = this.EndpointResourceGroup, SubscriptionId = this.EndpointSubscriptionId, ContainerName = this.routingEndpointDynamicParameter.ContainerName, Encoding = this.routingEndpointDynamicParameter.Encoding }); break; } this.IotHubClient.IotHubResource.CreateOrUpdate(this.ResourceGroupName, this.Name, iotHubDescription); IotHubDescription updatedIotHubDescription = this.IotHubClient.IotHubResource.Get(this.ResourceGroupName, this.Name); switch (this.EndpointType) { case PSEndpointType.EventHub: this.WriteObject(IotHubUtils.ToPSRoutingEventHubEndpoint(updatedIotHubDescription.Properties.Routing.Endpoints.EventHubs.FirstOrDefault(x => x.Name.Equals(this.EndpointName, StringComparison.OrdinalIgnoreCase))), false); break; case PSEndpointType.ServiceBusQueue: this.WriteObject(IotHubUtils.ToPSRoutingServiceBusQueueEndpoint(updatedIotHubDescription.Properties.Routing.Endpoints.ServiceBusQueues.FirstOrDefault(x => x.Name.Equals(this.EndpointName, StringComparison.OrdinalIgnoreCase))), false); break; case PSEndpointType.ServiceBusTopic: this.WriteObject(IotHubUtils.ToPSRoutingServiceBusTopicEndpoint(updatedIotHubDescription.Properties.Routing.Endpoints.ServiceBusTopics.FirstOrDefault(x => x.Name.Equals(this.EndpointName, StringComparison.OrdinalIgnoreCase))), false); break; case PSEndpointType.AzureStorageContainer: this.WriteObject(IotHubUtils.ToPSRoutingStorageContainerEndpoint(updatedIotHubDescription.Properties.Routing.Endpoints.StorageContainers.FirstOrDefault(x => x.Name.Equals(this.EndpointName, StringComparison.OrdinalIgnoreCase))), false); break; } } }
private void WriteEndpointObject(IotHubDescription iotHubDescription, PSEndpointType psEndpointType, string endpointName) { switch (psEndpointType) { case PSEndpointType.EventHub: if (string.IsNullOrEmpty(endpointName)) { if (iotHubDescription.Properties.Routing.Endpoints.EventHubs.Count == 1) { this.WriteObject(IotHubUtils.ToPSRoutingEventHubEndpoint(iotHubDescription.Properties.Routing.Endpoints.EventHubs[0]), false); } else { this.WriteObject(IotHubUtils.ToPSRoutingEventHubProperties(iotHubDescription.Properties.Routing.Endpoints.EventHubs), true); } } else { this.WriteObject(IotHubUtils.ToPSRoutingEventHubEndpoint(iotHubDescription.Properties.Routing.Endpoints.EventHubs.FirstOrDefault(x => x.Name.Equals(endpointName, StringComparison.OrdinalIgnoreCase))), false); } break; case PSEndpointType.ServiceBusQueue: if (string.IsNullOrEmpty(endpointName)) { if (iotHubDescription.Properties.Routing.Endpoints.ServiceBusQueues.Count == 1) { this.WriteObject(IotHubUtils.ToPSRoutingServiceBusQueueEndpoint(iotHubDescription.Properties.Routing.Endpoints.ServiceBusQueues[0]), false); } else { this.WriteObject(IotHubUtils.ToPSRoutingServiceBusQueueEndpointProperties(iotHubDescription.Properties.Routing.Endpoints.ServiceBusQueues), true); } } else { this.WriteObject(IotHubUtils.ToPSRoutingServiceBusQueueEndpoint(iotHubDescription.Properties.Routing.Endpoints.ServiceBusQueues.FirstOrDefault(x => x.Name.Equals(endpointName, StringComparison.OrdinalIgnoreCase))), false); } break; case PSEndpointType.ServiceBusTopic: if (string.IsNullOrEmpty(endpointName)) { if (iotHubDescription.Properties.Routing.Endpoints.ServiceBusTopics.Count == 1) { this.WriteObject(IotHubUtils.ToPSRoutingServiceBusTopicEndpoint(iotHubDescription.Properties.Routing.Endpoints.ServiceBusTopics[0]), false); } else { this.WriteObject(IotHubUtils.ToPSRoutingServiceBusTopicEndpointProperties(iotHubDescription.Properties.Routing.Endpoints.ServiceBusTopics), true); } } else { this.WriteObject(IotHubUtils.ToPSRoutingServiceBusTopicEndpoint(iotHubDescription.Properties.Routing.Endpoints.ServiceBusTopics.FirstOrDefault(x => x.Name.Equals(endpointName, StringComparison.OrdinalIgnoreCase))), false); } break; case PSEndpointType.AzureStorageContainer: if (string.IsNullOrEmpty(endpointName)) { if (iotHubDescription.Properties.Routing.Endpoints.StorageContainers.Count == 1) { this.WriteObject(IotHubUtils.ToPSRoutingStorageContainerEndpoint(iotHubDescription.Properties.Routing.Endpoints.StorageContainers[0]), false); } else { this.WriteObject(IotHubUtils.ToPSRoutingStorageContainerProperties(iotHubDescription.Properties.Routing.Endpoints.StorageContainers), true); } } else { this.WriteObject(IotHubUtils.ToPSRoutingStorageContainerEndpoint(iotHubDescription.Properties.Routing.Endpoints.StorageContainers.FirstOrDefault(x => x.Name.Equals(endpointName, StringComparison.OrdinalIgnoreCase))), false); } break; } }