Пример #1
0
 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
     });
 }
Пример #2
0
        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();
        }
Пример #3
0
        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());
        }
Пример #4
0
 /// <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);
     }
 }
Пример #5
0
 /// <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());
 }
Пример #6
0
 /// <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);
     }
 }
Пример #7
0
 /// <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());
 }