Exemple #1
0
        /// <summary>
        /// Update multiple devices' twins. A maximum of 100 updates can be done per call, and each operation must be done on a different device twin. For larger scale operations, consider using <see href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-identity-registry#import-and-export-device-identities">IoT Hub jobs</see>.
        /// </summary>
        /// <param name="twinUpdates">The new twins to replace the twins on existing devices.</param>
        /// <param name="precondition">The condition on which to update each device twin.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>The result of the bulk operation and the http response <see cref="Response{T}"/>.</returns>
        public virtual Task <Response <BulkRegistryOperationResponse> > UpdateTwinsAsync(
            IEnumerable <TwinData> twinUpdates,
            BulkIfMatchPrecondition precondition = BulkIfMatchPrecondition.IfMatch,
            CancellationToken cancellationToken  = default)
        {
            IEnumerable <ExportImportDevice> registryOperations = twinUpdates
                                                                  .Select(x => new ExportImportDevice()
            {
                Id         = x.DeviceId,
                TwinETag   = x.Etag,
                ImportMode = precondition == BulkIfMatchPrecondition.Unconditional ? ExportImportDeviceImportMode.UpdateTwin : ExportImportDeviceImportMode.UpdateTwinIfMatchETag
            }.WithTags(x.Tags).WithPropertiesFrom(x.Properties));

            return(_devicesRestClient.BulkRegistryOperationsAsync(registryOperations, cancellationToken));
        }
Exemple #2
0
        /// <summary>
        /// Update multiple modules. A maximum of 100 updates can be done per call, and each operation must be done on a different module identity. For larger scale operations, consider using <see href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-identity-registry#import-and-export-device-identities">IoT Hub jobs</see>..
        /// </summary>
        /// <param name="moduleIdentities">The modules to update.</param>
        /// <param name="precondition">The condition on which to update each module identity.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>The result of the bulk operation and the http response <see cref="Response{T}"/>.</returns>
        public virtual Response <BulkRegistryOperationResponse> UpdateIdentities(
            IEnumerable <ModuleIdentity> moduleIdentities,
            BulkIfMatchPrecondition precondition = BulkIfMatchPrecondition.IfMatch,
            CancellationToken cancellationToken  = default)
        {
            IEnumerable <ExportImportDevice> registryOperations = moduleIdentities
                                                                  .Select(x => new ExportImportDevice()
            {
                Id             = x.DeviceId,
                ModuleId       = x.ModuleId,
                Authentication = x.Authentication,
                ImportMode     = precondition == BulkIfMatchPrecondition.Unconditional ? ExportImportDeviceImportMode.Update : ExportImportDeviceImportMode.UpdateIfMatchETag
            });

            return(_bulkRegistryClient.UpdateRegistry(registryOperations, cancellationToken));
        }
Exemple #3
0
        /// <summary>
        /// Delete multiple devices. A maximum of 100 deletions can be done per call. For larger scale operations, consider using <see href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-identity-registry#import-and-export-device-identities">IoT Hub jobs</see>.
        /// </summary>
        /// <param name="deviceIdentities">The devices to delete.</param>
        /// <param name="precondition">The condition on which to delete each device identity.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>The result of the bulk deletion and the http response <see cref="Response{T}"/>.</returns>
        public virtual Response <BulkRegistryOperationResponse> DeleteIdentities(
            IEnumerable <DeviceIdentity> deviceIdentities,
            BulkIfMatchPrecondition precondition = BulkIfMatchPrecondition.IfMatch,
            CancellationToken cancellationToken  = default)
        {
            IEnumerable <ExportImportDevice> registryOperations = deviceIdentities
                                                                  .Select(x => new ExportImportDevice()
            {
                Id         = x.DeviceId,
                ETag       = x.Etag,
                ImportMode = precondition == BulkIfMatchPrecondition.Unconditional
                        ? ExportImportDeviceImportMode.Delete
                        : ExportImportDeviceImportMode.DeleteIfMatchETag
            });

            return(_devicesRestClient.BulkRegistryOperations(registryOperations, cancellationToken));
        }
        /// <summary>
        /// Update multiple devices' twins. A maximum of 100 updates can be done per call, and each operation must be done on a different device twin. For larger scale operations, consider using <see href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-identity-registry#import-and-export-device-identities">IoT Hub jobs</see>.
        /// </summary>
        /// <param name="twinUpdates">The new twins to replace the twins on existing devices.</param>
        /// <param name="precondition">The condition on which to update each device twin.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>The result of the bulk operation and the http response <see cref="Response{T}"/>.</returns>
        public virtual Task <Response <BulkRegistryOperationResponse> > UpdateTwinsAsync(
            IEnumerable <TwinData> twinUpdates,
            BulkIfMatchPrecondition precondition = BulkIfMatchPrecondition.IfMatch,
            CancellationToken cancellationToken  = default)
        {
            IEnumerable <ExportImportDevice> registryOperations = twinUpdates
                                                                  .Select(x => new ExportImportDevice()
            {
                Id         = x.DeviceId,
                Tags       = x.Tags,
                Properties = new PropertyContainer(x.Properties?.Desired, x.Properties?.Reported),
                TwinETag   = x.Etag,
                ImportMode = precondition == BulkIfMatchPrecondition.Unconditional ? ExportImportDeviceImportMode.UpdateTwin : ExportImportDeviceImportMode.UpdateTwinIfMatchETag
            });

            return(_registryManagerClient.BulkDeviceCrudAsync(registryOperations, cancellationToken));
        }
Exemple #5
0
        /// <summary>
        /// Delete multiple modules. A maximum of 100 deletions can be done per call. For larger scale operations, consider using <see href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-identity-registry#import-and-export-device-identities">IoT Hub jobs</see>.
        /// </summary>
        /// <param name="moduleIdentities">The modules to delete.</param>
        /// <param name="precondition">The condition on which to delete each device identity.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>The result of the bulk deletion and the http response <see cref="Response{T}"/>.</returns>
        public virtual Task <Response <BulkRegistryOperationResponse> > DeleteIdentitiesAsync(
            IEnumerable <ModuleIdentity> moduleIdentities,
            BulkIfMatchPrecondition precondition = BulkIfMatchPrecondition.IfMatch,
            CancellationToken cancellationToken  = default)
        {
            IEnumerable <ExportImportDevice> registryOperations = moduleIdentities
                                                                  .Select(x => new ExportImportDevice()
            {
                Id         = x.DeviceId,
                ModuleId   = x.ModuleId,
                ETag       = x.Etag,
                ImportMode = precondition == BulkIfMatchPrecondition.Unconditional
                        ? ExportImportDeviceImportMode.Delete
                        : ExportImportDeviceImportMode.DeleteIfMatchETag
            });

            return(_registryManagerClient.BulkDeviceCrudAsync(registryOperations, cancellationToken));
        }
Exemple #6
0
        /// <summary>
        /// Update multiple devices. A maximum of 100 updates can be done per call, and each operation must be done on a different identity. For larger scale operations, consider using <see href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-identity-registry#import-and-export-device-identities">IoT Hub jobs</see>.
        /// </summary>
        /// <param name="deviceIdentities">The devices to update.</param>
        /// <param name="precondition">The condition on which to update each device identity.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>The result of the bulk operation and the http response <see cref="Response{T}"/>.</returns>
        public virtual Response <BulkRegistryOperationResponse> UpdateIdentities(
            IEnumerable <DeviceIdentity> deviceIdentities,
            BulkIfMatchPrecondition precondition = BulkIfMatchPrecondition.IfMatch,
            CancellationToken cancellationToken  = default)
        {
            IEnumerable <ExportImportDevice> registryOperations = deviceIdentities
                                                                  .Select(x => new ExportImportDevice()
            {
                Id             = x.DeviceId,
                Authentication = x.Authentication,
                Capabilities   = x.Capabilities,
                DeviceScope    = x.DeviceScope,
                ETag           = x.Etag,
                Status         = string.Equals(ExportImportDeviceStatus.Disabled.ToString(), x.Status?.ToString(), StringComparison.OrdinalIgnoreCase)
                                ? ExportImportDeviceStatus.Disabled
                                : ExportImportDeviceStatus.Enabled,
                StatusReason = x.StatusReason,
                ImportMode   = precondition == BulkIfMatchPrecondition.Unconditional ? ExportImportDeviceImportMode.Update : ExportImportDeviceImportMode.UpdateIfMatchETag
            }.WithParentScopes(x.ParentScopes));

            return(_devicesRestClient.BulkRegistryOperations(registryOperations, cancellationToken));
        }