/// <inheritdoc/> public async Task PerformTestAsync(CloudTableClient client, TableDataStoreConfiguration configuration, CancellationToken cancellationToken = default) { EnsureArg.IsNotNull(client, nameof(client)); EnsureArg.IsNotNull(configuration, nameof(configuration)); CloudTable table = client.GetTableReference(TestTable); await table.CreateIfNotExistsAsync(); HealthEntity entity = new HealthEntity(TestPartitionKey, TestRowKey); entity.Data = TestData; TableOperation insertOrMergeOperation = TableOperation.InsertOrMerge(entity); TableResult result = await table.ExecuteAsync(insertOrMergeOperation, cancellationToken); TableOperation retrieveOperation = TableOperation.Retrieve <HealthEntity>(TestPartitionKey, TestRowKey); result = await table.ExecuteAsync(retrieveOperation, cancellationToken); TableOperation deleteOperation = TableOperation.Delete(entity); result = await table.ExecuteAsync(deleteOperation, cancellationToken); await table.DeleteAsync(cancellationToken); }
public TableClientInitializer( ILogger <TableClientInitializer> logger, TableDataStoreConfiguration configuration) { EnsureArg.IsNotNull(logger, nameof(logger)); EnsureArg.IsNotNull(configuration, nameof(configuration)); _logger = logger; _configuration = configuration; }
public TableClientProvider( TableDataStoreConfiguration tableDataStoreConfiguration, ITableClientInitializer tableClientIntilizer, ILogger <TableClientProvider> logger) { EnsureArg.IsNotNull(tableDataStoreConfiguration, nameof(tableDataStoreConfiguration)); EnsureArg.IsNotNull(tableClientIntilizer, nameof(tableClientIntilizer)); EnsureArg.IsNotNull(logger, nameof(logger)); _cloudTableClient = tableClientIntilizer.CreateTableClient(); _initializationOperation = new RetryableInitializationOperation( () => tableClientIntilizer.IntializeDataStoreAsync(_cloudTableClient)); }
private static TableDataStoreConfiguration RegisterTableDataStoreConfiguration(IServiceCollection serviceCollection, IConfiguration configuration) { var tableDataStoreConfiguration = new TableDataStoreConfiguration(); configuration.GetSection(TableStoreConfigurationSectionName).Bind(tableDataStoreConfiguration); if (string.IsNullOrEmpty(tableDataStoreConfiguration.ConnectionString) && tableDataStoreConfiguration.EndpointUri == null) { tableDataStoreConfiguration.ConnectionString = TableStorageLocalEmulator.ConnectionString; } serviceCollection.AddSingleton(Options.Create(tableDataStoreConfiguration)); return(tableDataStoreConfiguration); }
public TableHealthCheck( CloudTableClient client, TableDataStoreConfiguration configuration, ITableClientTestProvider testProvider, ILogger <TableHealthCheck> logger) { EnsureArg.IsNotNull(client, nameof(client)); EnsureArg.IsNotNull(configuration, nameof(configuration)); EnsureArg.IsNotNull(testProvider, nameof(testProvider)); EnsureArg.IsNotNull(logger, nameof(logger)); _client = client; _configuration = configuration; _testProvider = testProvider; _logger = logger; }
private static IServiceCollection AddTableDataStore(this IServiceCollection serviceCollection, IConfiguration configuration) { EnsureArg.IsNotNull(serviceCollection, nameof(serviceCollection)); EnsureArg.IsNotNull(configuration, nameof(configuration)); serviceCollection.Add(provider => { var config = new TableDataStoreConfiguration(); configuration.GetSection(TableStoreConfigurationSectionName).Bind(config); if (string.IsNullOrEmpty(config.ConnectionString)) { config.ConnectionString = TableStorageLocalEmulator.ConnectionString; } return(config); }) .Singleton() .AsSelf(); serviceCollection.Add <TableClientProvider>() .Singleton() .AsSelf() .AsService <IHostedService>() .AsService <IRequireInitializationOnFirstRequest>(); serviceCollection.Add(sp => sp.GetService <TableClientProvider>().CreateTableClient()) .Singleton() .AsSelf(); serviceCollection.Add <TableClientInitializer>() .Singleton() .AsService <ITableClientInitializer>(); serviceCollection.Add <TableExceptionStore>() .Singleton() .AsSelf() .AsImplementedInterfaces(); serviceCollection.Add <TableSyncStateStore>() .Singleton() .AsSelf() .AsImplementedInterfaces(); return(serviceCollection); }
private static IServiceCollection AddTableDataStore(this IServiceCollection serviceCollection, IConfiguration configuration) { EnsureArg.IsNotNull(serviceCollection, nameof(serviceCollection)); EnsureArg.IsNotNull(configuration, nameof(configuration)); TableDataStoreConfiguration tableDataStoreConfiguration = RegisterTableDataStoreConfiguration(serviceCollection, configuration); serviceCollection.AddAzureClients(builder => { if (string.IsNullOrWhiteSpace(tableDataStoreConfiguration.ConnectionString)) { builder.AddTableServiceClient(tableDataStoreConfiguration.EndpointUri) .WithCredential(new DefaultAzureCredential(new DefaultAzureCredentialOptions { ManagedIdentityClientId = tableDataStoreConfiguration.ClientId })); } else { builder.AddTableServiceClient(tableDataStoreConfiguration.ConnectionString); } }); serviceCollection.Add <TableServiceClientProvider>() .Singleton() .AsSelf() .AsService <IHostedService>() .AsService <IRequireInitializationOnFirstRequest>(); serviceCollection.Add <TableServiceClientInitializer>() .Singleton() .AsService <ITableServiceClientInitializer>(); serviceCollection.Add <TableExceptionStore>() .Singleton() .AsSelf() .AsImplementedInterfaces(); serviceCollection.Add <TableSyncStateStore>() .Singleton() .AsSelf() .AsImplementedInterfaces(); return(serviceCollection); }