Пример #1
0
 private static void ProcessRateCard(AzureRateCard rateCard, TraceWriter log)
 {
     if (rateCard.Meters != null)
     {
         log.Info($"Inserting rate card data into database");
         DumpUtility blkOperation = new DumpUtility(ConfigurationHelper.GetConnectionString(ConfigurationKeys.DbConnectoinString));
         //Sometimes effective data is returned incorrect such as 01/01/0001 which is not a valid date for SQL and throws exception as below
         //System.Data: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM
         // Hence to support this data, the date is changed to 1/1/1753
         blkOperation.Insert <CspAzureRateCard>(rateCard.Meters.Select(s => new CspAzureRateCard()
         {
             MeterId          = s.Id,
             MeterName        = s.Name,
             RateKey          = string.Join(",", s.Rates.Keys),
             RateValue        = string.Join(",", s.Rates.Values),
             Tags             = string.Join(",", s.Tags),
             Category         = s.Category,
             SubCategory      = s.Subcategory,
             Region           = s.Region,
             Unit             = s.Unit,
             IncludedQuantity = s.IncludedQuantity,
             EffectiveDate    = s.EffectiveDate.Year < 1753 ? new DateTime(1753, 1, 1) : s.EffectiveDate
         }).ToList());
         log.Info($"Database operation completed.");
     }
 }
Пример #2
0
        /// <summary>
        /// On first chance exception event handler.
        /// </summary>
        /// <param name="eventArgs">The first chance exception event args.</param>
        protected override void OnFirstChanceException(FirstChanceExceptionEventArgs eventArgs)
        {
            if (this.exceptionsToTrack.Any() && (!this.exceptionsToTrack.Contains(eventArgs.Exception.GetType())))
            {
                return;
            }

            DumpUtility.WriteDump(this.FileName, this.DumpType);
        }
Пример #3
0
 static void DumpAddress
 (
     IntPtr pointer,
     int count
 )
 {
     byte[] bytes = new byte[count];
     for (int i = 0; i < bytes.Length; i++)
     {
         bytes[i] = Marshal.ReadByte(pointer, i);
     }
     DumpUtility.Dump(Console.Out, bytes);
 }
Пример #4
0
        private async static Task ProcessSubscriptions(ResourceCollection <Subscription> subscriptions, string CustomerId, TraceWriter log)
        {
            if (subscriptions != null)
            {
                log.Verbose($"{subscriptions.TotalCount } subscriptions found");

                DumpUtility blkOperation = new DumpUtility(ConfigurationHelper.GetConnectionString(ConfigurationKeys.DbConnectoinString));

                blkOperation.Insert <CspSubscription>(subscriptions.Items
                                                      .Select(s => new CspSubscription()
                {
                    SubscriptionId        = s.Id,
                    CustomerId            = CustomerId,
                    OfferId               = s.OfferId,
                    OfferName             = s.OfferName,
                    FriendlyName          = s.FriendlyName,
                    Quantity              = s.Quantity,
                    UnitType              = s.UnitType,
                    CreationDateUtc       = s.CreationDate,
                    EffectiveStartDateUtc = s.EffectiveStartDate,
                    CommitmentEndDateUtc  = s.CommitmentEndDate,
                    Status           = s.Status.ToString(),
                    AutoRenewEnabled = s.AutoRenewEnabled,
                    //IsTrial=s.isTrial,
                    BillingType  = s.BillingType.ToString(),
                    BillingCycle = s.BillingCycle.ToString(),
                    ContractType = s.ContractType.ToString(),
                    OrderId      = s.OrderId
                }).ToList());

                SubscriptionsQueueClient queueClient = new SubscriptionsQueueClient(ConfigurationHelper.GetAppSetting(ConfigurationKeys.StorageConnectoinString));
                foreach (var subscription in subscriptions.Items)
                {
                    try
                    {
                        await queueClient.AddMessageAsync(new SubscriptionMessage()
                        {
                            CustomerId = CustomerId, SubscriptionId = subscription.Id
                        });
                    }
                    catch (Exception ex)
                    {
                        log.Error($"Some error occured for Customer {CustomerId} & Subscription{subscription.Id}", ex);
                    }
                }
            }
        }
Пример #5
0
        private async static Task ProcessCustomers(SeekBasedResourceCollection <Customer> customers, TraceWriter log)
        {
            log.Info($"{customers.TotalCount } customers found");
            log.Info($"Inserting Customer data into database");
            DumpUtility blkOperation = new DumpUtility(ConfigurationHelper.GetConnectionString(ConfigurationKeys.DbConnectoinString));

            blkOperation.Insert <CspCustomer>(customers.Items
                                              .Select(s => new CspCustomer()
            {
                CustomerId   = s.Id,
                TenantId     = s.CompanyProfile != null ? s.CompanyProfile.TenantId : string.Empty,
                CompanyName  = s.CompanyProfile?.CompanyName,
                Domain       = s.CompanyProfile.Domain,
                Relationship = s.RelationshipToPartner.ToString()
            }).ToList());
            log.Info($"Database operation completed. Adding messages to queue");
            CustomersQueueClient queueClient = new CustomersQueueClient(ConfigurationHelper.GetAppSetting(ConfigurationKeys.StorageConnectoinString));

            foreach (var customer in customers.Items)
            {
                try
                {
                    log.Verbose($"Processing customer - {customer.Id }, Relationship {customer.RelationshipToPartner}");
                    log.Verbose($"Customer {customer.Id }");
                    if (customer.RelationshipToPartner != CustomerPartnerRelationship.Advisor)
                    {
                        await queueClient.AddMessageAsync(new CustomerMessage()
                        {
                            CustomerId = customer.Id
                        });
                    }
                }
                catch (Exception ex)
                {
                    log.Error($"Some error occured for customer - {customer.Id}, Relationship {customer.RelationshipToPartner}", ex);
                }
            }
            log.Info($"Message are added to queue.");
        }
Пример #6
0
        private static void ProcessUtilizations(ResourceCollection <AzureUtilizationRecord> utilizations, string CustomerId, string SubscriptionId, TraceWriter log)
        {
            log.Info($"{utilizations.TotalCount } utilizations found");
            log.Info($"Inserting Utilizaton data into database");
            DumpUtility blkOperation = new DumpUtility(ConfigurationHelper.GetConnectionString(ConfigurationKeys.DbConnectoinString));

            blkOperation.Insert <CspUtilization>(utilizations.Items
                                                 .Select(s => new CspUtilization()
            {
                CustomerId     = CustomerId,
                SubscriptionId = SubscriptionId,
                ResourceGuid   = s.Resource?.Id,
                ResourceName   = s.Resource?.Name,
                Category       = s.Resource?.Category,
                SubCategory    = s.Resource?.Subcategory,
                Region         = s.Resource?.Region,
                UsageDateUtc   = s.UsageStartTime.UtcDateTime,
                Quantity       = s.Quantity,
                Unit           = s.Unit
            }).ToList());
            log.Info($"Database operation completed.");
        }