public static PSDataShareSubscriptionSynchronization ToPsObject(this ShareSubscriptionSynchronization sync) { return(new PSDataShareSubscriptionSynchronization { DurationMs = sync.DurationMs, StartTime = sync.StartTime, EndTime = sync.EndTime, Message = sync.Message, Status = sync.Status, SynchronizationId = sync.SynchronizationId }); }
public static async Task Main(string[] args) { Console.WriteLine("\r\n\r\nReading the configurations..."); IConfigurationRoot configurationRoot = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("AppSettings.json").Build(); var configuration = configurationRoot.GetSection("configs").Get <Configuration>(); Console.WriteLine("\r\n\r\nIdempotent creates for provider resources..."); var providerContext = new UserContext(configuration.Provider); IResourceGroup providerResourceGroup = providerContext.IdempotentCreateResourceGroup(); Account providerAccount = providerContext.IdempotentCreateAccount(); Share share = providerContext.IdempotentCreateShare(); Console.WriteLine($"\r\n\r\nAssign MSI of {providerAccount.Id} as the Blob Reader on the Provider Storage..."); await providerContext.AssignRoleTaskAsync( configuration.Provider, providerAccount.Identity.PrincipalId, "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1"); Console.WriteLine("\r\n\r\nCreate data set and send invitation"); DataSet dataSet = providerContext.CreateIfNotExistDataSet(configuration.Provider); Invitation invitation = providerContext.CreateIfNotExistInvitation(configuration.Consumer); Console.WriteLine("\r\n\r\nIdempotent creates for consumer"); var consumerContext = new UserContext(configuration.Consumer); IResourceGroup consumerResourceGroup = consumerContext.IdempotentCreateResourceGroup(); Account consumerAccount = consumerContext.IdempotentCreateAccount(); Console.WriteLine("\r\n\r\nTo accept the invitation create a share subscription/received share..."); ShareSubscription shareSubscription = consumerContext.CreateIfNotExistShareSubscription(invitation); Console.WriteLine($"\r\n\r\nAssign MSI of {consumerAccount.Id} as the Blob Contributor on the consumer Storage..."); await consumerContext.AssignRoleTaskAsync( configuration.Consumer, consumerAccount.Identity.PrincipalId, "ba92f5b4-2d11-453d-a403-e96b0029c9fe"); Console.WriteLine("\r\n\r\nCreate data set mapping to setup storage for the consumer"); ConsumerSourceDataSet consumerSourceDataSet = consumerContext.GetConsumerSourceDataSet(); DataSetMapping dataSetMapping = consumerContext.CreateDataSetMapping( configuration.Consumer, consumerSourceDataSet); Console.WriteLine("\r\n\r\nInitiate a snapshot copy (duration depends on how large the data is)..."); ShareSubscriptionSynchronization response = consumerContext.Synchronize(); Console.WriteLine( $"Synchronization Status: {response.Status}. Check resource {consumerAccount.Id} on https://portal.azure.com for further details. \r\n\r\n Hit Enter to continue..."); Console.ReadLine(); }
private void StopSynchronization() { var endFunc = (Func <string, string, string, ShareSubscriptionSynchronization, ShareSubscriptionSynchronization>) this .DataShareManagementClient .ShareSubscriptions.CancelSynchronization; var shareSubscriptionSynchronization = new ShareSubscriptionSynchronization { SynchronizationId = this.SynchronizationId }; var synchronization = endFunc( this.ResourceGroupName, this.AccountName, this.ShareSubscriptionName, shareSubscriptionSynchronization ); this.WriteObject(synchronization.ToPsObject()); }
/// <summary> /// Request cancellation of a data share snapshot /// </summary> /// <remarks> /// Request to cancel a synchronization. /// </remarks> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The resource group name. /// </param> /// <param name='accountName'> /// The name of the share account. /// </param> /// <param name='shareSubscriptionName'> /// The name of the shareSubscription. /// </param> /// <param name='shareSubscriptionSynchronization'> /// Share Subscription Synchronization payload. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <ShareSubscriptionSynchronization> BeginCancelSynchronizationAsync(this IShareSubscriptionsOperations operations, string resourceGroupName, string accountName, string shareSubscriptionName, ShareSubscriptionSynchronization shareSubscriptionSynchronization, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.BeginCancelSynchronizationWithHttpMessagesAsync(resourceGroupName, accountName, shareSubscriptionName, shareSubscriptionSynchronization, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// Request cancellation of a data share snapshot /// </summary> /// <remarks> /// Request to cancel a synchronization. /// </remarks> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The resource group name. /// </param> /// <param name='accountName'> /// The name of the share account. /// </param> /// <param name='shareSubscriptionName'> /// The name of the shareSubscription. /// </param> /// <param name='shareSubscriptionSynchronization'> /// Share Subscription Synchronization payload. /// </param> public static ShareSubscriptionSynchronization BeginCancelSynchronization(this IShareSubscriptionsOperations operations, string resourceGroupName, string accountName, string shareSubscriptionName, ShareSubscriptionSynchronization shareSubscriptionSynchronization) { return(operations.BeginCancelSynchronizationAsync(resourceGroupName, accountName, shareSubscriptionName, shareSubscriptionSynchronization).GetAwaiter().GetResult()); }
/// <summary> /// List data set level details for a share subscription synchronization /// </summary> /// <remarks> /// List synchronization details /// </remarks> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The resource group name. /// </param> /// <param name='accountName'> /// The name of the share account. /// </param> /// <param name='shareSubscriptionName'> /// The name of the share subscription. /// </param> /// <param name='shareSubscriptionSynchronization'> /// Share Subscription Synchronization payload. /// </param> /// <param name='skipToken'> /// Continuation token /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <IPage <SynchronizationDetails> > ListSynchronizationDetailsAsync(this IShareSubscriptionsOperations operations, string resourceGroupName, string accountName, string shareSubscriptionName, ShareSubscriptionSynchronization shareSubscriptionSynchronization, string skipToken = default(string), CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.ListSynchronizationDetailsWithHttpMessagesAsync(resourceGroupName, accountName, shareSubscriptionName, shareSubscriptionSynchronization, skipToken, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// List data set level details for a share subscription synchronization /// </summary> /// <remarks> /// List synchronization details /// </remarks> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The resource group name. /// </param> /// <param name='accountName'> /// The name of the share account. /// </param> /// <param name='shareSubscriptionName'> /// The name of the share subscription. /// </param> /// <param name='shareSubscriptionSynchronization'> /// Share Subscription Synchronization payload. /// </param> /// <param name='skipToken'> /// Continuation token /// </param> public static IPage <SynchronizationDetails> ListSynchronizationDetails(this IShareSubscriptionsOperations operations, string resourceGroupName, string accountName, string shareSubscriptionName, ShareSubscriptionSynchronization shareSubscriptionSynchronization, string skipToken = default(string)) { return(operations.ListSynchronizationDetailsAsync(resourceGroupName, accountName, shareSubscriptionName, shareSubscriptionSynchronization, skipToken).GetAwaiter().GetResult()); }