Ejemplo n.º 1
0
        // We need the package from nuget Microsoft.Rest.ClientRuntime.Azure.Authentication and Microsoft.Azure.DataLake.Store
        public static void MainMethod()
        {
            ISecretProvider secretProvider = KeyVaultSecretProvider.Instance;
            //tenantId = @"72f988bf-86f1-41af-91ab-2d7cd011db47";// For tenant Microsoft
            string tenantId = @"cdc5aeea-15c5-4db6-b079-fcadd2505dc2";// For tenant Torus

            string clientId  = secretProvider.GetSecretAsync("datacop-prod", "AdlsAadAuthAppId").Result;
            string clientKey = secretProvider.GetSecretAsync("datacop-prod", "AdlsAadAuthAppSecret").Result;

            Console.WriteLine($"For AAD application 'AdlsAadAuthApp'");

            Console.WriteLine($"clientId: {clientId}");
            Console.WriteLine($"clientKey: {clientKey}");
            dataLakeClient = new DataLakeClient(tenantId, clientId, clientKey);
            RunDemo();



            clientId  = secretProvider.GetSecretAsync("datacop-prod", "IDEAsBuildVNextAppId").Result;
            clientKey = secretProvider.GetSecretAsync("datacop-prod", "IDEAsBuildVNextAppSecret").Result;
            Console.WriteLine($"For AAD application 'IDEAsBuildVNextApp'");

            Console.WriteLine($"clientId: {clientId}");
            Console.WriteLine($"clientKey: {clientKey}");
            dataLakeClient = new DataLakeClient(tenantId, clientId, clientKey);
            RunDemo();
        }
Ejemplo n.º 2
0
        private static void Initialize(string keyVaultName)
        {
            ISecretProvider secretProvider = KeyVaultSecretProvider.Instance;

            // PPE resource: api://ead06413-cb7c-408e-a533-2cdbe58bf3a6
            // Prod resource; api://9576eb06-ef2f-4f45-a131-e33d0e7ffb00

            // For ideas-prod-c14
            //Service = @"gdpr";
            //VirtualCluster = @"ideas-prod-c14";
            //WorkloadQueueName = @"gdpr";
            //string tenantId = @"cdc5aeea-15c5-4db6-b079-fcadd2505dc2";
            //string resource = @"api://9576eb06-ef2f-4f45-a131-e33d0e7ffb00";
            //string clientId = secretProvider.GetSecretAsync(keyVaultName, "GdprClientId").Result;
            //string clientSecret = secretProvider.GetSecretAsync(keyVaultName, "GdprClientSecret").Result;

            // For ideas-prod-build-c14
            Service           = @"pls";
            VirtualCluster    = @"ideas-prod-build-c14";
            WorkloadQueueName = @"build"; // The default value is "build".
            string tenantId     = @"72f988bf-86f1-41af-91ab-2d7cd011db47";
            string resource     = @"api://d42d6163-88e5-4339-bbb3-28ec2fb3c574";
            string clientId     = secretProvider.GetSecretAsync(keyVaultName, "PlsAadAuthAppId").Result;
            string clientSecret = secretProvider.GetSecretAsync(keyVaultName, "PlsAadAuthAppSecret").Result;

            Token = AzureActiveDirectoryToken.GetAccessTokenV1Async(tenantId, clientId, clientSecret, resource).Result;
        }
Ejemplo n.º 3
0
        private Constant()
        {
            ISecretProvider secretProvider = KeyVaultSecretProvider.Instance;

            this.SQLAccountUserId   = secretProvider.GetSecretAsync("csharpmvcwebapikeyvault", "SQLAccountUserId").Result;
            this.SQLAccountPassword = secretProvider.GetSecretAsync("csharpmvcwebapikeyvault", "SQLAccountPassword").Result;
            this.StorageAccountKey  = secretProvider.GetSecretAsync("csharpmvcwebapikeyvault", "StorageAccountKey").Result;
        }
Ejemplo n.º 4
0
        private static void Initialize(string keyVaultName)
        {
            ISecretProvider secretProvider = KeyVaultSecretProvider.Instance;
            string          applicationId  = secretProvider.GetSecretAsync(keyVaultName, "CloudScopeLogMonitorApplicationId").Result;
            string          clientId       = secretProvider.GetSecretAsync(keyVaultName, "BuildLogMonitorClientId").Result;
            string          clientKey      = secretProvider.GetSecretAsync(keyVaultName, "BuildLogMonitorClientKey").Result;

            cloudScopeLogProvider = new CloudScopeLogProvider(applicationId, clientId, clientKey);
        }
Ejemplo n.º 5
0
        // The doc link: https://docs.microsoft.com/en-us/azure/azure-monitor/platform/data-collector-api
        // https://docs.microsoft.com/en-us/azure/azure-monitor/log-query/log-query-overview
        // Query doc: https://docs.microsoft.com/en-us/azure/azure-monitor/log-query/get-started-portal
        // Query url: https://ms.portal.azure.com/#@microsoft.onmicrosoft.com/resource/subscriptions/6f7fbe56-fb42-4e46-b14d-dfc86acf0e0f/resourceGroups/CSharpMVCWebAPIApplicationResourceGroup/providers/Microsoft.OperationalInsights/workspaces/CSharpMVCWebAPIApplication/logs
        // It will cost a long time to create a table when you send a log request to a new table first.
        public static void MainMethod()
        {
            ISecretProvider secretProvider  = KeyVaultSecretProvider.Instance;
            string          workspaceId     = secretProvider.GetSecretAsync("csharpmvcwebapikeyvault", "LogAnalyticsWorkspaceId").Result;
            string          primaryKey      = secretProvider.GetSecretAsync("csharpmvcwebapikeyvault", "LogAnalyticsPrimaryKey").Result;
            AzureMonitorLog azureMonitorLog = new AzureMonitorLog(workspaceId, primaryKey);

            // tagId is for separating different log locations
            string tagId   = "9491c703-f581-4635-98b3-c2781ae59de2";
            string message = "This is a test error log";

            azureMonitorLog.LogErrorAsync(tagId, message).Wait();
        }
Ejemplo n.º 6
0
        private static void Initialize(string keyVaultName)
        {
            ISecretProvider secretProvider = KeyVaultSecretProvider.Instance;
            string          workspaceId    = secretProvider.GetSecretAsync(keyVaultName, "DataCopLogMonitorWorkspaceId").Result;
            string          clientId       = secretProvider.GetSecretAsync(keyVaultName, "BuildLogMonitorClientId").Result;
            string          clientKey      = secretProvider.GetSecretAsync(keyVaultName, "BuildLogMonitorClientKey").Result;

            datacopLogProvider = new DataCopLogProvider(workspaceId, clientId, clientKey);

            string endpoint = secretProvider.GetSecretAsync(keyVaultName, "CosmosDBEndPoint").Result;
            string key      = secretProvider.GetSecretAsync(keyVaultName, "CosmosDBAuthKey").Result;

            AzureCosmosDBClient.Endpoint = endpoint;
            AzureCosmosDBClient.Key      = key;
        }
Ejemplo n.º 7
0
        static void Main(string[] args)
        {
            ISecretProvider secretProvider = KeyVaultSecretProvider.Instance;
            //string connectionString = secretProvider.GetSecretAsync("datacop-prod", "IDEAsPortalPPEConnectionString").Result;
            string connectionString = secretProvider.GetSecretAsync("csharpmvcwebapikeyvault", "SQLConnectionString").Result;
            var    sqlDal           = new SqlDataAccessLayer(connectionString);
            //string cmdText = "SELECT Date, CONVERT(decimal, SUM([Value])) AS MetricValue FROM [DataQuality].[CommercialActiveUsageStats] WITH (NOLOCK) WHERE Date = @Date AND DataRefreshState = 'Stable' AND DateAggregationType = 'RL28' AND [Key] IN ('Platform_web_Count') AND [Workload] IN ('Exchange') GROUP BY Date ORDER BY Date DESC";
            string cmdText = @"SELECT count([userid]) as MetricValue
                                  FROM[dbo].[user_info]
                                where[userid] > 3";

            //Console.WriteLine(GetMetricValueAsDouble(sqlDal, "testName", CommandType.Text, cmdText, DateTime.UtcNow.AddDays(-1), 300).Result);
            cmdText = @"SELECT CAST(1 AS BIT) as MetricValue
                           FROM[dbo].[user_info]
                        where[userid] > 6";
            cmdText = @"SELECT CASE WHEN EXISTS (
                            SELECT *
                            FROM[dbo].[user_info]
                            where[userid] = 2
                        )
                        THEN CAST(1 AS BIT)
                        ELSE CAST(0 AS BIT) END
                        as MetricValue";
            Console.WriteLine(GetMetricValueAsBool(sqlDal, "testName", CommandType.Text, cmdText, DateTime.UtcNow.AddDays(-1), 300).Result);

            Console.ReadKey();
        }
        public AzureServiceBusMultiThread()
        {
            ISecretProvider secretProvider             = KeyVaultSecretProvider.Instance;
            string          serviceBusConnectionString = secretProvider.GetSecretAsync(KeyVaultName, "ServiceBusConnectionString").Result;

            queueClient = new QueueClient(serviceBusConnectionString, QueueName);
        }
Ejemplo n.º 9
0
        public static void MainMethod()
        {
            ISecretProvider secretProvider = KeyVaultSecretProvider.Instance;

            string kustoAppId       = secretProvider.GetSecretAsync("datacop-prod", "KustoAppId").Result;
            string kustoAppKey      = secretProvider.GetSecretAsync("datacop-prod", "KustoAppKey").Result;
            string kustoAuthorityId = secretProvider.GetSecretAsync("datacop-prod", "KustoAuthorityId").Result;

            // The value is that "https://icmcluster.kusto.windows.net"
            // It is not very necessary to save it in Azure KeyVault
            string kustoConnectionString = secretProvider.GetSecretAsync("datacopdev", "KustoConnectionString").Result;

            string query = @"let idx = 0;
                        let cutoffDate = datetime_add('month',-idx , endofmonth(now()));
                        Incidents
                        | where ModifiedDate <= cutoffDate and SourceCreatedBy == 'DataCopMonitor'
                        | summarize arg_max(ModifiedDate, OwningContactAlias, Status, CreateDate, ImpactStartDate, ResolveDate) by IncidentId
                        | where Status == 'ACTIVE'
                        | distinct IncidentId
                        | count";

            string url = $@"{kustoConnectionString}/IcmDataWarehouse";
            var    kustoConnectionStringBuilder = new KustoConnectionStringBuilder(url)
            {
                FederatedSecurity   = true,
                ApplicationClientId = kustoAppId,
                ApplicationKey      = kustoAppKey,
                Authority           = kustoAuthorityId
            };

            var client = KustoClientFactory.CreateCslQueryProvider(kustoConnectionStringBuilder);

            Console.WriteLine(client.DefaultDatabaseName);
            client.DefaultDatabaseName = "IcmDataWarehouse";
            IDataReader      reader = client.ExecuteQuery(query);
            IList <string[]> a      = reader.ToStringColumns(false);

            Console.WriteLine(a.Count);
            foreach (string[] strs in a)
            {
                foreach (string str in strs)
                {
                    Console.Write(str + "\t");
                }
                Console.WriteLine();
            }
        }
Ejemplo n.º 10
0
        public static X509Certificate2 GetCertificateFromBase64String()
        {
            ISecretProvider secretProvider = KeyVaultSecretProvider.Instance;
            var             bundle         = secretProvider.GetSecretAsync("datacop-prod", "CosmosRedmondClientCert").Result;

            byte[] privateKeyBytes = Convert.FromBase64String(bundle);
            return(new X509Certificate2(privateKeyBytes, (string)null, X509KeyStorageFlags.MachineKeySet));
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Loads the configuration.
        /// </summary>
        public void LoadConfiguration()
        {
            ISecretProvider secretProvider = KeyVaultSecretProvider.Instance;

            this.TenantId          = this.GetRequiredSetting <string>("TenantId");
            this.ClientId          = secretProvider.GetSecretAsync("datacop-prod", "AdlsAadAuthAppId").Result;
            this.ClientKey         = secretProvider.GetSecretAsync("datacop-prod", "AdlsAadAuthAppSecret").Result;
            this.DataBricksBaseUrl = new Uri(secretProvider.GetSecretAsync("datacop-prod", "DataBricksUrl").Result);
            this.DataBricksToken   = secretProvider.GetSecretAsync("datacop-prod", "DataBricksToken").Result;

            // Read libraries
            {
                var libraryExpressions = ReadLibraries();
                this.Libraries = libraryExpressions.Select(t => GetLibrary(t.path)).ToList();
            }


            this.NodeType           = this.GetRequiredSetting <string>("NodeType");
            this.SparkNumWorkersMin = this.GetRequiredSetting <int>("SparkNumWorkersMin");
            this.SparkNumWorkersMax = this.GetRequiredSetting <int>("SparkNumWorkersMax");

            this.NodeTypes = ReadNodeTypes();

            this.MaxDegreeOfParallelism = this.GetRequiredSetting <int>("MaxDegreeOfParallelism");
            this.TimeoutSeconds         = this.GetRequiredSetting <int>("TimeoutSeconds");

            this.DataLakeClient = this.DataLakeClient ?? new DataLakeClient(this.TenantId, this.ClientId, this.ClientKey);

            this.DatabricksClientWrapper = new DatabricksClientWrapper(DataBricksBaseUrl.OriginalString, DataBricksToken);
            this.SparkClient             = new SparkClient(this.DatabricksClientWrapper);
            this.SparkClientSettings     = new SparkClientSettings
            {
                Libraries              = this.Libraries,
                NodeType               = this.NodeType,
                NodeTypes              = this.NodeTypes,
                ClientId               = this.ClientId,
                ClientKey              = this.ClientKey,
                NumWorkersMin          = this.SparkNumWorkersMin,
                NumWorkersMax          = this.SparkNumWorkersMax,
                MaxDegreeOfParallelism = this.MaxDegreeOfParallelism,
                TimeoutSeconds         = this.TimeoutSeconds
            };
        }
        public static void MainMethod()
        {
            ISecretProvider secretProvider = KeyVaultSecretProvider.Instance;

            client_id     = "83ac8948-e5e1-4bbd-97ea-798a13dc8bc6";
            client_secret = secretProvider.GetSecretAsync("datacop-prod", "AADDataCopClientSecret").Result;
            resource      = "83ac8948-e5e1-4bbd-97ea-798a13dc8bc6";

            HttpClientDemo();
            HttpWebRequestDemo();
        }
        /// <summary>
        /// Retrieves the secret value, based on the given name
        /// </summary>
        /// <param name="secretName">The name of the secret key</param>
        /// <returns>Returns a <see cref="Secret"/> that contains the secret key</returns>
        /// <exception cref="ArgumentException">The <paramref name="secretName"/> must not be empty</exception>
        /// <exception cref="ArgumentNullException">The <paramref name="secretName"/> must not be null</exception>
        /// <exception cref="SecretNotFoundException">The secret was not found, using the given name</exception>
        public async Task <Secret> GetSecretAsync(string secretName)
        {
            Guard.NotNullOrWhitespace(secretName, nameof(secretName), "Requires a non-blank secret name when mutating secret names");

            Secret secret = await SafeguardMutateSecretAsync(secretName, mutatedSecretName =>
            {
                return(_implementation.GetSecretAsync(mutatedSecretName));
            });

            return(secret);
        }
Ejemplo n.º 14
0
        /// <summary>
        /// Retrieves the secret value, based on the given name
        /// </summary>
        /// <param name="secretName">The name of the secret key</param>
        /// <param name="ignoreCache">Indicates if the cache should be used or skipped</param>
        /// <returns>Returns a <see cref="Task{TResult}"/> that contains the secret key</returns>
        /// <exception cref="ArgumentException">The name must not be empty</exception>
        /// <exception cref="ArgumentNullException">The name must not be null</exception>
        /// <exception cref="SecretNotFoundException">The secret was not found, using the given name</exception>
        public async Task <Secret> GetSecretAsync(string secretName, bool ignoreCache)
        {
            if (ignoreCache == false && MemoryCache.TryGetValue(secretName, out Secret cachedSecret))
            {
                return(cachedSecret);
            }

            Task <Secret> getSecret = _secretProvider.GetSecretAsync(secretName);
            Secret        secret    = getSecret == null ? null : await getSecret;

            MemoryCache.Set(secretName, secret, CacheEntry);
            return(secret);
        }
        /// <summary>
        /// Retrieves the secret value, based on the given name
        /// </summary>
        /// <param name="secretName">The name of the secret key</param>
        /// <param name="ignoreCache">Indicates if the cache should be used or skipped</param>
        /// <returns>Returns a <see cref="Task{TResult}"/> that contains the secret key</returns>
        /// <exception cref="ArgumentException">The name must not be empty</exception>
        /// <exception cref="ArgumentNullException">The name must not be null</exception>
        /// <exception cref="SecretNotFoundException">The secret was not found, using the given name</exception>
        public async Task <Secret> GetSecretAsync(string secretName, bool ignoreCache)
        {
            Guard.NotNullOrWhitespace(secretName, nameof(secretName), "Requires a non-blank secret name to look up the secret");

            if (ignoreCache == false && MemoryCache.TryGetValue(secretName, out Secret cachedSecret))
            {
                return(cachedSecret);
            }

            Task <Secret> getSecret = _secretProvider.GetSecretAsync(secretName);
            Secret        secret    = getSecret == null ? null : await getSecret;

            MemoryCache.Set(secretName, secret, CacheEntry);
            return(secret);
        }
        public static async Task SendMainAsync()
        {
            ISecretProvider secretProvider             = KeyVaultSecretProvider.Instance;
            string          serviceBusConnectionString = secretProvider.GetSecretAsync(KeyVaultName, "ServiceBusConnectionString").Result;

            queueClient = new QueueClient(serviceBusConnectionString, QueueName);

            Console.WriteLine("======================================================");
            Console.WriteLine("Press ENTER key to exit after sending all the messages.");
            Console.WriteLine("======================================================");

            // Send messages.
            await SendMessagesAsync();

            await queueClient.CloseAsync();
        }
Ejemplo n.º 17
0
        public async Task OnGet()
        {
            initBlobCount = -1;
            initTxtCount  = -1;
            var apiKey = await _secretProvider.GetSecretAsync("HTC-API-Key");

            HttpClient.DefaultRequestHeaders.Clear();
            HttpClient.DefaultRequestHeaders.Add("x-api-key", apiKey.Value);

            var   autoEvent = new AutoResetEvent(false);
            Timer _tm       = new Timer(refreshData, autoEvent, 20000, 20000);

            //read cookie from Request object

            string cookieBoxId          = Request.Cookies["boxId"];
            string cookieActivationCode = Request.Cookies["activationCode"];

            if (Request.Query.ContainsKey("boxId"))
            {
                // The user is asking/forcing to connect to a different (existing!) box, so we override this
                cookieBoxId = Request.Query["boxId"];
            }


            if (string.IsNullOrEmpty(cookieBoxId))
            {
                JObject responseString = await RegisterNewBox();

                var respBoxId          = responseString.GetValue("boxId").ToString();
                var respActivationCode = responseString.GetValue("activationCode").ToString();
                var respBoxStatus      = responseString.GetValue("status").ToString();

                Response.Cookies.Append("boxId", respBoxId);
                Response.Cookies.Append("activationCode", respActivationCode);

                BoxId          = respBoxId;
                ActivationCode = respActivationCode;
                BoxStatus      = respBoxStatus;
            }
            else
            {
                BoxId          = cookieBoxId;
                ActivationCode = cookieActivationCode;
                BoxStatus      = (await GetBoxStatus()).GetValue("status").ToString();
            }
        }
        public static async Task ReceiveMainAsync()
        {
            ISecretProvider secretProvider             = KeyVaultSecretProvider.Instance;
            string          serviceBusConnectionString = secretProvider.GetSecretAsync(KeyVaultName, "ServiceBusConnectionString").Result;

            queueClient = new QueueClient(serviceBusConnectionString, QueueName);

            Console.WriteLine("======================================================");
            Console.WriteLine("Press ENTER key to exit after receiving all the messages.");
            Console.WriteLine("======================================================");

            // Register QueueClient's MessageHandler and receive messages in a loop
            await RegisterOnMessageHandlerAndReceiveMessages();

            Console.ReadKey();
            //Thread.Sleep(3000);
            await queueClient.CloseAsync();
        }
Ejemplo n.º 19
0
        public async Task <string> GetSecretAsync(string secretName, bool ignoreCache)
        {
            // Check if the secret is already cached, return it if it is
            if (ignoreCache == false && memoryCache.TryGetValue(secretName, out string secretValue))
            {
                telemetryProvider.IncreaseGauge("Cache Hit");
                telemetryProvider.LogTrace($"Secret '{secretName}' cached");
                return(secretValue);
            }

            // Fetch latest secret from Key Vault
            var secret = await secretProvider.GetSecretAsync(secretName);

            // Store found secret in memory cache
            telemetryProvider.IncreaseGauge("Cache Miss");
            telemetryProvider.LogTrace($"Secret '{secretName}' was not cached");
            memoryCache.Set(secretName, secret, defaultCacheExpiryDuration);

            return(secret);
        }
        static async Task SendMessagesAsync()
        {
            ISecretProvider secretProvider             = KeyVaultSecretProvider.Instance;
            string          serviceBusConnectionString = secretProvider.GetSecretAsync(KeyVaultName, "ServiceBusConnectionString").Result;

            try
            {
                for (var i = 0; i < NumberOfMessages; i++)
                {
                    DateTime beforDT = System.DateTime.Now;

                    //耗时巨大的代码
                    IQueueClient queueClient = new QueueClient(serviceBusConnectionString, QueueName);

                    DateTime afterDT = System.DateTime.Now;
                    TimeSpan ts      = afterDT.Subtract(beforDT);
                    beforDT = afterDT;
                    Console.WriteLine("create queue client time cost: {0}ms.", ts.TotalMilliseconds);
                    // Create a new message to send to the queue.
                    string  messageBody = $"Message {i}";
                    Message message     = new Message(Encoding.UTF8.GetBytes(messageBody));

                    message.MessageId = $"{i}";
                    // Write the body of the message to the console.
                    Console.WriteLine($"Sending message: {messageBody}");

                    beforDT = System.DateTime.Now;
                    // Send the message to the queue.
                    await queueClient.SendAsync(message);

                    afterDT = System.DateTime.Now;
                    ts      = afterDT.Subtract(beforDT);
                    Console.WriteLine("sned message time cost: {0}ms.", ts.TotalMilliseconds);
                    await queueClient.CloseAsync();
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine($"{DateTime.Now} :: Exception: {exception.Message}");
            }
        }
Ejemplo n.º 21
0
        public async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string secretName = req.Query["secretName"];

            string  requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data        = JsonConvert.DeserializeObject(requestBody);

            secretName = secretName ?? data?.secretName;

            var secret = await secretProvider.GetSecretAsync(secretName);

            string responseMessage = string.IsNullOrEmpty(secretName)
                ? "This HTTP triggered function executed successfully. Pass a secretName in the query string or in the request body for a response."
                : $"Hello this HTTP triggered function retrieved the {secretName} successfully: {secret.Value}";

            return(new OkObjectResult(responseMessage));
        }
Ejemplo n.º 22
0
        /// <summary>
        /// Retrieves the secret value, based on the given name
        /// </summary>
        /// <param name="secretName">The name of the secret key</param>
        /// <param name="ignoreCache">Indicates if the cache should be used or skipped</param>
        /// <returns>Returns a <see cref="Task{TResult}"/> that contains the secret key</returns>
        /// <exception cref="ArgumentException">The name must not be empty</exception>
        /// <exception cref="ArgumentNullException">The name must not be null</exception>
        /// <exception cref="SecretNotFoundException">The secret was not found, using the given name</exception>
        public async Task <Secret> GetSecretAsync(string secretName, bool ignoreCache)
        {
            // Look-up the cached secret
            if (ignoreCache == false && _memoryCache.TryGetValue(secretName, out Secret cachedSecret))
            {
                return(cachedSecret);
            }

            // Read secret from provider
            Task <Secret> getSecret = _secretProvider.GetSecretAsync(secretName);
            Secret        secret    = getSecret == null ? null : await getSecret;

            // Set cache options.
            var cacheEntryOptions = new MemoryCacheEntryOptions()
                                    // Keep in cache for this time, reset time if accessed.
                                    .SetSlidingExpiration(_cacheConfiguration.Duration);

            // Save data in cache.
            _memoryCache.Set(secretName, secret, cacheEntryOptions);

            return(secret);
        }
        static async Task RegisterOnMessageHandlerAndReceiveMessages()
        {
            ISecretProvider secretProvider             = KeyVaultSecretProvider.Instance;
            string          serviceBusConnectionString = secretProvider.GetSecretAsync(KeyVaultName, "ServiceBusConnectionString").Result;
            // Configure the MessageHandler Options in terms of exception handling, number of concurrent messages to deliver etc.
            var messageHandlerOptions = new MessageHandlerOptions(ExceptionReceivedHandler)
            {
                // Maximum number of Concurrent calls to the callback `ProcessMessagesAsync`, set to 1 for simplicity.
                // Set it according to how many messages the application wants to process in parallel.
                MaxConcurrentCalls = 1,

                // Indicates whether MessagePump should automatically complete the messages after returning from User Callback.
                // False below indicates the Complete will be handled by the User Callback as in `ProcessMessagesAsync` below.
                AutoComplete = true
            };

            IQueueClient queueClient = new QueueClient(serviceBusConnectionString, QueueName);

            // Register the function that will process messages
            queueClient.RegisterMessageHandler(ProcessMessagesAsync, messageHandlerOptions);

            //await queueClient.CloseAsync();
        }
 /// <summary>
 /// Retrieves the secret value, based on the given name.
 /// </summary>
 /// <param name="secretName">The name of the secret key</param>
 /// <returns>Returns a <see cref="T:Arcus.Security.Core.Secret" /> that contains the secret key</returns>
 /// <exception cref="T:System.ArgumentException">The <paramref name="secretName" /> must not be empty</exception>
 /// <exception cref="T:System.ArgumentNullException">The <paramref name="secretName" /> must not be null</exception>
 /// <exception cref="T:Arcus.Security.Core.SecretNotFoundException">The secret was not found, using the given name</exception>
 public async Task <Secret> GetSecretAsync(string secretName)
 {
     Guard.NotNullOrWhitespace(secretName, nameof(secretName), "Requires a non-blank secret name to access the secret");
     return(await WhenAuthorized(() => _secretProvider.GetSecretAsync(secretName)));
 }
Ejemplo n.º 25
0
        public static void MainMethod()
        {
            string keyVaultName = "datacop-ppe";
            //string keyVaultName = "datacop-prod";
            string queueName = "cosmostest";
            //string queueName = "alert";
            //string queueName = "onboardingrequest";
            //string queueName = "orchestratortrigger";
            //string queueName = "onboardingresponse";
            ISecretProvider secretProvider             = KeyVaultSecretProvider.Instance;
            string          serviceBusConnectionString = secretProvider.GetSecretAsync(keyVaultName, "ServiceBusConnectionString").Result;
            IQueueClient    queueClient = new QueueClient(serviceBusConnectionString, queueName);


            //Send message to the queue.
            //Create a new message to send to the queue.
            string requestId = Guid.NewGuid().ToString();
            string datasetId = Guid.NewGuid().ToString();

            // Message for merging adls and cosmos onboarding test
            //string messageBody = "{\"requestId\":\"" + requestId + "\",\"requestType\":\"Create\",\"dataset\":{\"id\":\"" + datasetId + "\",\"name\":\"ExcelActiveDevices\",\"createTime\":\"0001-01-01T00:00:00\",\"lastModifiedTime\":\"0001-01-01T00:00:00\",\"connectionInfo\":{\"cosmosVC\":\"https://cosmos14.osdinfra.net/cosmos/Ideas.prod/\",\"dataLakeStore\":\"ideas-prod-c14.azuredatalakestore.net\",\"streamPath\":\"local/Partner/PreRelease/dev/activeusage/excelcommercialdevice/%Y/%m/ExcelActiveDevices_%Y_%m_%d.ss\"},\"dataFabric\":\"ADLS\",\"category\":\"None\",\"startDate\":\"2019-06-04T00:00:00Z\",\"rollingWindow\":\"120.00:00:00\",\"grain\":\"Daily\",\"sla\":\"6.0:0:0\",\"isEnabled\":true,\"ttl\":-1},\"alert\":{\"targetIcMConnector\":\"64c4853b-78cd-41ff-8eff-65083863a2e1\",\"containerPublicId\":\"965b31d9-e7e4-45bf-85d3-39810e289096\",\"serviceCustomFieldNames\":[\"DatasetId\",\"AlertType\",\"DisplayInSurface\",\"BusinessOwner\"],\"severity\":4,\"alertThreshold\":0,\"alertIntervalMins\":0,\"isAlertSuppressionEnabled\":true,\"suppressionMins\":60,\"routingId\":\"IDEAS://IDEAsDataCopTest\",\"owningTeamId\":\"IDEAS\\\\IDEAsDataCopTest\",\"ttl\":-1}}";

            //messageBody = "{\"requestId\":\"" + requestId + "\",\"requestType\":\"Create\",\"dataset\":{\"id\":\"" + datasetId + "\",\"name\":\"ExcelActiveDevices\",\"createTime\":\"0001-01-01T00:00:00\",\"lastModifiedTime\":\"0001-01-01T00:00:00\",\"connectionInfo\":{\"dataLakeStore\":\"ideas-prod-c14.azuredatalakestore.net\",\"streamPath\":\"local/Partner/PreRelease/dev/activeusage/excelcommercialdevice/%Y/%m/ExcelActiveDevices_%Y_%m_%d.ss\"},\"dataFabric\":\"ADLS\",\"category\":\"None\",\"startDate\":\"2019-06-04T00:00:00Z\",\"rollingWindow\":\"120.00:00:00\",\"grain\":\"Daily\",\"sla\":\"6.0:0:0\",\"isEnabled\":true,\"ttl\":-1},\"alert\":{\"targetIcMConnector\":\"64c4853b-78cd-41ff-8eff-65083863a2e1\",\"containerPublicId\":\"965b31d9-e7e4-45bf-85d3-39810e289096\",\"serviceCustomFieldNames\":[\"DatasetId\",\"AlertType\",\"DisplayInSurface\",\"BusinessOwner\"],\"severity\":4,\"alertThreshold\":0,\"alertIntervalMins\":0,\"isAlertSuppressionEnabled\":true,\"suppressionMins\":60,\"routingId\":\"IDEAS://IDEAsDataCopTest\",\"owningTeamId\":\"IDEAS\\\\IDEAsDataCopTest\",\"ttl\":-1}}";

            //messageBody = "{\"requestId\":\"" + requestId + "\",\"requestType\":\"Create\",\"dataset\":{\"id\":\"" + datasetId + "\",\"name\":\"ExcelActiveDevices\",\"createTime\":\"0001-01-01T00:00:00\",\"lastModifiedTime\":\"0001-01-01T00:00:00\",\"connectionInfo\":{\"cosmosVC\":\"https://cosmos14.osdinfra.net/cosmos/Ideas.prod/\",\"streamPath\":\"local/Partner/PreRelease/dev/activeusage/excelcommercialdevice/%Y/%m/ExcelActiveDevices_%Y_%m_%d.ss\"},\"dataFabric\":\"Cosmos\",\"category\":\"None\",\"startDate\":\"2019-06-04T00:00:00Z\",\"rollingWindow\":\"120.00:00:00\",\"grain\":\"Daily\",\"sla\":\"6.0:0:0\",\"isEnabled\":true,\"ttl\":-1},\"alert\":{\"targetIcMConnector\":\"64c4853b-78cd-41ff-8eff-65083863a2e1\",\"containerPublicId\":\"965b31d9-e7e4-45bf-85d3-39810e289096\",\"serviceCustomFieldNames\":[\"DatasetId\",\"AlertType\",\"DisplayInSurface\",\"BusinessOwner\"],\"severity\":4,\"alertThreshold\":0,\"alertIntervalMins\":0,\"isAlertSuppressionEnabled\":true,\"suppressionMins\":60,\"routingId\":\"IDEAS://IDEAsDataCopTest\",\"owningTeamId\":\"IDEAS\\\\IDEAsDataCopTest\",\"ttl\":-1}}";

            //messageBody = "{\"requestId\":\"" + requestId + "\",\"requestType\":\"Adhoc\",\"dataset\":{\"id\":\"" + datasetId + "\",\"name\":\"dataForKatana\",\"createTime\":\"0001-01-01T00:00:00\",\"lastModifiedTime\":\"0001-01-01T00:00:00\",\"connectionInfo\":{\"cosmosVC\":\"https://cosmos14.osdinfra.net/cosmos/Ideas.prod/\",\"streamPath\":\"shares/AD_DataAnalytics/AD_DataAnalytics/Data/PublishedForKatana/IDEA/%Y/%m/%d/IDEA.DNA.Public.UserActivity.Misc_MAU_Daily/dataForKatana.ss\"},\"dataFabric\":\"Cosmos\",\"category\":\"None\",\"startDate\":\"2019-08-22T00:00:00Z\",\"endDate\":\"2019-08-25T00:00:00Z\",\"grain\":\"Daily\",\"sla\":\"3.0:0:0\",\"isEnabled\":false,\"ttl\":-1}}";


            //string requestsStr = FileOperation.ReadFile.ThirdMethod(@"D:\data\company_work\M365\IDEAs\request.txt");
            //string[] requestsStrSplits = requestsStr.Split(new char[] { '\n' });

            //foreach (var requestsStrSplit in requestsStrSplits)
            for (int i = 1; i < 7; i++)
            {
                //string requestsStrSplit = FileOperation.ReadFile.ThirdMethod($@"D:\data\company_work\M365\IDEAs\request\{i}.txt");
                //Message message = new Message(Encoding.UTF8.GetBytes(requestsStrSplit));
                //message.MessageId = Guid.NewGuid().ToString();

                //Console.WriteLine(requestsStrSplit);
                //queueClient.SendAsync(message).Wait();
                break;
            }


            //string response = "{\"requestId\":\"c7c864d1-9a5e-4a02-afa4-fb2bf3399273\",\"datasetId\":\"7e118c1e-f2b3-462d-97ce-f45bc7a378f8\",\"status\":200,\"scores\":{\"scoreTime\":\"2019-09-19T08:37:25.1608155Z\",\"score\":100.0,\"measures\":[{\"type\":\"Availability\",\"score\":100.0,\"errors\":[]}]},\"requestor\":\"OnboardRequest\"}";
            //string messageStr = "{\"requestId\":\"136503cc-745f-4c6e-a0f3-ebf4555b1f14\",\"requestType\":\"Adhoc\",\"dataset\":{\"id\":\"f4967631-884d-41a5-92ff-16be925bdf1b\",\"name\":\"SandCOATPRaw\",\"createTime\":\"0001-01-01T00:00:00\",\"lastModifiedTime\":\"0001-01-01T00:00:00\",\"connectionInfo\":{\"cosmosVC\":\"https://cosmos14.osdinfra.net/cosmos/Ideas.prod/\",\"dataLakeStore\":\"\",\"streamPath\":\"shares/ffo.antispam/SafeAttachment/%Y/%m/%d/ATPUsage.ss\"},\"dataFabric\":\"Cosmos\",\"category\":\"None\",\"startDate\":\"2019-05-01T00:00:00Z\",\"rollingWindow\":\"60.00:00:00\",\"grain\":\"Daily\",\"sla\":\"3.0:0:0\",\"isEnabled\":false,\"ttl\":-1}}";
            //for (int i = 0; i < 10; i++)
            //{
            //    Message message = new Message(Encoding.UTF8.GetBytes(messageStr));
            //    message.MessageId = Guid.NewGuid().ToString();

            //    queueClient.SendAsync(message).Wait();
            //}

            //Console.WriteLine(datasetId);
            //Console.WriteLine("End...");
            // Recieve message from the queue
            AzureServiceBus serviceBus = new AzureServiceBus();

            serviceBus.QueueClient = queueClient;
            serviceBus.RegisterOnMessageHandlerAndReceiveMessages();
        }