/// <summary>
        /// Checks the virtual machine already has the Managed Service Identity extension installed if so return it.
        /// </summary>
        /// <param name="virtualMachine">The virtual machine.</param>
        /// <param name="typeName">The Managed Service Identity extension type name.</param>
        /// <return>An observable that emits MSI extension if exists.</return>
        private async Task <IVirtualMachineExtension> GetMSIExtensionAsync(IVirtualMachine virtualMachine, string typeName, CancellationToken cancellationToken = default(CancellationToken))
        {
            var installedExtensions = await virtualMachine.ListExtensionsAsync(cancellationToken);

            return(installedExtensions.FirstOrDefault(extension => extension.PublisherName.Equals(MSI_EXTENSION_PUBLISHER_NAME, System.StringComparison.OrdinalIgnoreCase) &&
                                                      extension.TypeName.Equals(typeName, System.StringComparison.OrdinalIgnoreCase)));
        }
        /// <summary>
        /// Retrieves encryption extension installed in the virtual machine, if the extension is
        /// not installed then return an empty observable.
        /// </summary>
        /// <return>An observable that emits the encryption extension installed in the virtual machine.</return>
        ///GENMHASH:9E0CF934F182F50D2FE7A72E02617F94:324B026FB14C16BEDA7B060212E59DE0
        private async Task <Microsoft.Azure.Management.Compute.Fluent.IVirtualMachineExtension> GetEncryptionExtensionInstalledInVMAsync(CancellationToken cancellationToken = default(CancellationToken))
        {
            var extensions = await virtualMachine.ListExtensionsAsync(cancellationToken);

            IVirtualMachineExtension encryptionExtension = extensions
                                                           .FirstOrDefault(e => e.PublisherName.Equals(encryptionExtensionPublisher, StringComparison.OrdinalIgnoreCase) &&
                                                                           e.TypeName.Equals(EncryptionExtensionType(), StringComparison.OrdinalIgnoreCase));

            return(encryptionExtension);
        }