/// <summary>
        /// Gets the <see cref="ResourceGroupDateKey"/> instance.
        /// </summary>
        /// <param name="cost"><see cref="ResourceCosts"/> instance.</param>
        /// <returns>Returns the <see cref="ResourceGroupDateKey"/> instance.</returns>
        public static string GetResourceGroupKey(ResourceCosts cost)
        {
            var uri = cost?.UsageValue?.Properties?.InstanceData?.MicrosoftResources?.ResourceUri;

            if (uri.IsNullOrWhiteSpace())
            {
                return(string.Empty);
            }

            var startIndex = uri.IndexOf("/ResourceGroups/", StringComparison.CurrentCultureIgnoreCase);

            if (startIndex < 0)
            {
                return(string.Empty);
            }

            startIndex += "/ResourceGroups/".Length;
            var endIndex = uri.IndexOf("/", startIndex, StringComparison.CurrentCultureIgnoreCase);

            var resourceGroupName = endIndex < 0
                                        ? uri.Substring(startIndex)
                                        : uri.Substring(startIndex, endIndex - startIndex);

            return(resourceGroupName.ToLowerInvariant());
        }
예제 #2
0
        public override ResourceAmounts calculateCost(int sizeIndex)
        {
            if (ResourceCosts.Count - 1 < sizeIndex)
            {
                ResourceCosts.AddRange(new ResourceAmounts[sizeIndex - (ResourceCosts.Count - 1)]);
            }

            if (ResourceCosts[sizeIndex] == null)
            {
                ResourceCosts[sizeIndex] = new ResourceAmounts();

                foreach (ResourceAmount baseResource in BaseResourceCosts)
                {
                    ResourceCosts[sizeIndex].add(baseResource.mResourceType, baseResource.mAmount + sizeIndex);
                }
            }

            return(ResourceCosts[sizeIndex]);
        }
        /// <summary>
        /// Gets the <see cref="ResourceGroupDateKey"/> instance.
        /// </summary>
        /// <param name="cost"><see cref="ResourceCosts"/> instance.</param>
        /// <returns>Returns the <see cref="ResourceGroupDateKey"/> instance.</returns>
        public static ResourceGroupDateKey GetResourceGroupDateKey(ResourceCosts cost)
        {
            var rgd = new ResourceGroupDateKey()
            {
                ResourceGroupName = string.Empty,
                DateStart         = cost.UsageValue.Properties.UsageStartTimeAsDate.ToUniversalTime().ToString("O"),
                DateEnd           = cost.UsageValue.Properties.UsageEndTimeAsDateTime.ToUniversalTime().ToString("O")
            };

            var resourceGroupName = GetResourceGroupKey(cost);

            if (resourceGroupName.IsNullOrWhiteSpace())
            {
                return(rgd);
            }

            rgd.ResourceGroupName = resourceGroupName.ToLowerInvariant();

            return(rgd);
        }