///GENMHASH:2751D8683222AD34691166D915065302:6CF6C0674C2EAF23B50944FED4A92C28
        public async Task <Microsoft.Azure.Management.Eventhub.Fluent.IDisasterRecoveryPairingAuthorizationKey> GetKeysAsync(CancellationToken cancellationToken = default(CancellationToken))
        {
            var             configs   = this.manager.Inner.DisasterRecoveryConfigs;
            AccessKeysInner innerKeys = await configs.ListKeysAsync(this.Ancestor().ResourceGroupName,
                                                                    this.Ancestor().Ancestor2Name,
                                                                    this.Ancestor().Ancestor1Name,
                                                                    this.Name(),
                                                                    cancellationToken);

            if (innerKeys == null)
            {
                return(null);
            }
            else
            {
                return(new DisasterRecoveryPairingAuthorizationKeyImpl(innerKeys));
            }
        }
Пример #2
0
        /// <summary>
        /// Gets the auth rules for a relay and return <see cref="HybridConnectionDetails"/> instance containing details of hybrid connection.
        /// </summary>
        /// <param name="rgName">Name of the Resource Group.</param>
        /// <param name="hybridConnectionName">Hybrid connection name.</param>
        /// <param name="relayManagementClient">The relay management client.</param>
        /// <param name="relayNamespace">The selected relay.</param>
        private static async Task <HybridConnectionDetails> GetHybridConnectionDetailsAsync(
            string rgName,
            string hybridConnectionName,
            RelayManagementClient relayManagementClient,
            RelayNamespaceInner relayNamespace)
        {
            List <AuthorizationRuleInner>  relayAuthRuleList = new List <AuthorizationRuleInner>();
            IPage <AuthorizationRuleInner> resp = await relayManagementClient.Namespaces.ListAuthorizationRulesAsync(rgName, relayNamespace.Name).ConfigureAwait(false);

            relayAuthRuleList.AddRange(resp);

            while (!string.IsNullOrEmpty(resp.NextPageLink))
            {
                resp = await relayManagementClient.Namespaces.ListAuthorizationRulesNextAsync(resp.NextPageLink).ConfigureAwait(false);

                relayAuthRuleList.AddRange(resp);
            }

            AuthorizationRuleInner selectedAuthRule = relayAuthRuleList.FirstOrDefault(rule => rule.Rights != null && rule.Rights.Contains(AccessRights.Listen) && rule.Rights.Contains(AccessRights.Manage) && rule.Rights.Contains(AccessRights.Send));

            if (selectedAuthRule == null)
            {
                throw new InvalidOperationException("Failed to find a suitable Authorization rule to use. Please create an Authorization rule with Listen, Manage and Send rights and retry the operation");
            }
            else
            {
                AccessKeysInner keyInfo = await relayManagementClient.Namespaces.ListKeysAsync(
                    rgName,
                    relayNamespace.Name,
                    selectedAuthRule.Name).ConfigureAwait(false);

                return(new HybridConnectionDetails
                {
                    HybridConnectionKeyName = keyInfo.KeyName,
                    HybridConnectionName = hybridConnectionName,
                    HybridConnectionSharedKey = keyInfo.PrimaryKey,
                    RelayUrl = relayNamespace.ServiceBusEndpoint,
                });
            }
        }