public static ResourceIdentity CreateResourceIdentity(GenericResourceExtended resource)
 {
     string[] parts = resource.Type.Split('/');
     return(new ResourceIdentity {
         ResourceType = parts[1], ResourceProviderNamespace = parts[0], ResourceName = resource.Name, ResourceProviderApiVersion = WebResourceProviderVersion
     });
 }
        private string GetStorageResourceGroup(
            ResourceManagementClient resourcesClient,
            string storageAccountName,
            string resourceType)
        {
            ResourceListResult res = resourcesClient.Resources.List(new ResourceListParameters
            {
                ResourceGroupName = null,
                ResourceType      = resourceType,
                TagName           = null,
                TagValue          = null
            });
            var allResources = new List <GenericResourceExtended>(res.Resources);
            GenericResourceExtended account = allResources.Find(r => r.Name == storageAccountName);

            if (account != null)
            {
                string   resId               = account.Id;
                string[] segments            = resId.Split('/');
                int      indexOfResoureGroup = new List <string>(segments).IndexOf("resourceGroups") + 1;
                return(segments[indexOfResoureGroup]);
            }
            else
            {
                return(null);
            }
        }
Beispiel #3
0
        private List <ResourceUsage> GetResourceSummaryByMeter(GenericResourceExtended resource, List <UsageAggregate> usageAggList, bool isTodaysData = false)
        {
            var resourceUsageList = new List <ResourceUsage>();
            var distinctMeters    = usageAggList.Select(x => x.Properties.MeterId).Distinct();

            foreach (var meter in distinctMeters)
            {
                var           firstEntry = usageAggList.Where(m => m.Properties.MeterId == meter).First();
                ResourceUsage usage      = new ResourceUsage();
                usage.ResourceName     = resource.Name;
                usage.Type             = resource.Type;
                usage.Location         = resource.Location;
                usage.MeterId          = meter;
                usage.MeterCategory    = firstEntry.Properties.MeterCategory;
                usage.MeterSubCategory = firstEntry.Properties.MeterSubCategory;
                usage.MeterName        = firstEntry.Properties.MeterName;
                usage.Quantity         = usageAggList.Where(x => x.Properties.MeterId == meter).Sum(x => x.Properties.Quantity);
                if (isTodaysData)
                {
                    usage.UsageDate = Utils.GetCurrentDateWithMidnightTime();
                }
                resourceUsageList.Add(usage);
            }
            return(resourceUsageList);
        }
        /// <summary>
        /// Returns the resource group of the provided storage account
        /// </summary>
        public string GetStorageResourceGroup(string storageAccountName)
        {
            ResourceManagementClient resourcesClient = GetCurrentResourcesClient(Profile);

            ResourceListResult res = resourcesClient.Resources.List(new ResourceListParameters
            {
                ResourceGroupName = null,
                ResourceType      = "Microsoft.ClassicStorage/storageAccounts",
                TagName           = null,
                TagValue          = null
            });
            var allResources = new List <GenericResourceExtended>(res.Resources);

            if (allResources.Count != 0)
            {
                GenericResourceExtended account = allResources.Find(r => r.Name == storageAccountName);
                if (account != null)
                {
                    String   resId               = account.Id;
                    String[] segments            = resId.Split('/');
                    int      indexOfResoureGroup = new List <string>(segments).IndexOf("resourceGroups") + 1;
                    return(segments[indexOfResoureGroup]);
                }
                else
                {
                    throw new Exception(string.Format(Resources.StorageAccountNotFound, storageAccountName));
                }
            }
            return(null);
        }
        public static PSResource ToPSResource(this GenericResourceExtended resource, ResourcesClient client, bool minimal)
        {
            ResourceIdentifier identifier = new ResourceIdentifier(resource.Id);

            return(new PSResource
            {
                Name = identifier.ResourceName,
                Location = resource.Location,
                ResourceType = identifier.ResourceType,
                ResourceGroupName = identifier.ResourceGroupName,
                ParentResource = identifier.ParentResource,
                Properties = JsonUtilities.DeserializeJson(resource.Properties),
                PropertiesText = resource.Properties,
                Tags = TagsConversionHelper.CreateTagHashtable(resource.Tags),
                Permissions = minimal ? null : client.GetResourcePermissions(identifier),
                ResourceId = identifier.ToString()
            });
        }
Beispiel #6
0
        private List <ResourceUsage> GetUsageDailyByResource(GenericResourceExtended resource, UsagePayload usagePayLoad, bool isTodaysData = false)
        {
            var resourceUsageList = new List <ResourceUsage>();
            var usageAggList      = FindUsageAggregateByResource(resource.Name, usagePayLoad);

            if (usageAggList == null || usageAggList.Count == 0)
            {
                ResourceUsage usage = new ResourceUsage();
                usage.ResourceName = resource.Name;
                usage.Type         = resource.Type;
                usage.Location     = resource.Location;
                resourceUsageList.Add(usage);
            }
            else
            {
                if (isTodaysData)
                {
                    //Todays data is hourly data, so the data needs to be summarized by Meters for a resource
                    resourceUsageList = GetResourceSummaryByMeter(resource, usageAggList, isTodaysData);
                }
                else
                {
                    foreach (var usageItem in usageAggList)
                    {
                        ResourceUsage usage = new ResourceUsage();
                        usage.ResourceName     = resource.Name;
                        usage.Type             = resource.Type;
                        usage.Location         = resource.Location;
                        usage.MeterId          = usageItem.Properties.MeterId;
                        usage.MeterCategory    = usageItem.Properties.MeterCategory;
                        usage.MeterSubCategory = usageItem.Properties.MeterSubCategory;
                        usage.MeterName        = usageItem.Properties.MeterName;
                        usage.Quantity         = usageItem.Properties.Quantity;
                        usage.UsageDate        = Utils.ParseDateUtc(usageItem.Properties.UsageStartTime);
                        resourceUsageList.Add(usage);
                    }
                }
            }

            return(resourceUsageList);
        }
        public async void Given_Parameter_GetInsightsResourceAsync_ShouldReturn_Result(string appInsightsName, string resourceGroup, string location)
        {
            this._appInsights.SetupGet(p => p.Name).Returns(appInsightsName);
            this._appInsights.SetupGet(p => p.ResourceGroup).Returns(resourceGroup);

            this._settings.SetupGet(p => p.ApplicationInsight).Returns(this._appInsights.Object);

            var resource       = new GenericResourceExtended(location);
            var resourceResult = new ResourceGetResult()
            {
                StatusCode = HttpStatusCode.OK, Resource = resource
            };

            this._resourceOperations.Setup(p => p.GetAsync(It.IsAny <string>(), It.IsAny <ResourceIdentity>(), It.IsAny <CancellationToken>())).ReturnsAsync(resourceResult);

            this._resourceClient.SetupGet(p => p.Resources).Returns(this._resourceOperations.Object);

            var result = await this._service.GetInsightsResourceAsync(this._resourceClient.Object).ConfigureAwait(false);

            result.Location.Should().BeEquivalentTo(location);
        }
Beispiel #8
0
        private List <ResourceUsage> GetUsageSummaryByResource(GenericResourceExtended resource, UsagePayload usagePayLoad)
        {
            var resourceUsageList = new List <ResourceUsage>();
            var usageAggList      = FindUsageAggregateByResource(resource.Name, usagePayLoad);

            if (usageAggList == null || usageAggList.Count == 0)
            {
                ResourceUsage usage = new ResourceUsage();
                usage.ResourceName = resource.Name;
                usage.Type         = resource.Type;
                usage.Location     = resource.Location;
                resourceUsageList.Add(usage);
                return(resourceUsageList);
            }
            else
            {
                resourceUsageList = GetResourceSummaryByMeter(resource, usageAggList);
            }

            return(resourceUsageList);
        }
        public async void Given_Parameters_CreateOrUpdateWebTestAsync_ShouldReturn_Result(string name, string url, TestStatus testStatus, TestFrequency testFrequency, TestTimeout testTimeout, bool parseDependentRequests, RetriesForWebTestFailure retriesForWebTestFailure, AuthType authType, string accessToken, TestLocations testLocations, string resourceGroup, string location)
        {
            var successCriteria = new Mock <SucessCriteriaElement>();

            successCriteria.SetupGet(p => p.Timeout).Returns(testTimeout);

            this._webTest.SetupGet(p => p.TestType).Returns(TestType.UrlPingTest);
            this._webTest.SetupGet(p => p.Status).Returns(testStatus);
            this._webTest.SetupGet(p => p.Frequency).Returns(testFrequency);
            this._webTest.SetupGet(p => p.ParseDependentRequests).Returns(parseDependentRequests);
            this._webTest.SetupGet(p => p.SuccessCriteria).Returns(successCriteria.Object);
            this._webTest.SetupGet(p => p.RetriesForWebTestFailure).Returns(retriesForWebTestFailure);
            this._webTest.SetupGet(p => p.TestLocations).Returns(testLocations);

            this._appInsights.SetupGet(p => p.ResourceGroup).Returns(resourceGroup);

            this._settings.SetupGet(p => p.ApplicationInsight).Returns(this._appInsights.Object);

            var resource       = new GenericResourceExtended(location);
            var resourceResult = new ResourceCreateOrUpdateResult()
            {
                StatusCode = HttpStatusCode.OK, Resource = resource
            };

            this._resourceOperations.Setup(p => p.CreateOrUpdateAsync(It.IsAny <string>(), It.IsAny <ResourceIdentity>(), It.IsAny <GenericResource>(), It.IsAny <CancellationToken>())).ReturnsAsync(resourceResult);

            this._resourceClient.Setup(p => p.Resources).Returns(this._resourceOperations.Object);

            var id = Guid.NewGuid();
            var insightsResource = new ResourceBaseExtended(location)
            {
                Id = id.ToString(), Name = name
            };

            var result = await this._service.CreateOrUpdateWebTestAsync(name, url, authType, accessToken, this._webTest.Object, this._resourceClient.Object, insightsResource).ConfigureAwait(false);

            result.Location.Should().BeEquivalentTo(location);
        }
        /// <summary>
        /// Returns the resource group of the provided storage account
        /// </summary>
        public string GetStorageResourceGroup(string storageAccountName)
        {
            ResourceManagementClient resourcesClient      = GetCurrentResourcesClient(Context);
            Func <string, string>    getResourceGroupName =
                resourceType =>
            {
                ResourceListResult res = resourcesClient.Resources.List(new ResourceListParameters
                {
                    ResourceGroupName = null,
                    ResourceType      = resourceType,
                    TagName           = null,
                    TagValue          = null
                });
                var allResources = new List <GenericResourceExtended>(res.Resources);
                GenericResourceExtended account = allResources.Find(r => r.Name == storageAccountName);
                if (account != null)
                {
                    String   resId               = account.Id;
                    String[] segments            = resId.Split('/');
                    int      indexOfResoureGroup = new List <string>(segments).IndexOf("resourceGroups") + 1;
                    return(segments[indexOfResoureGroup]);
                }
                else
                {
                    throw new Exception(string.Format(Microsoft.Azure.Commands.Sql.Properties.Resources.StorageAccountNotFound, storageAccountName));
                }
            };

            try
            {
                return(getResourceGroupName("Microsoft.ClassicStorage/storageAccounts"));
            }
            catch
            {
                return(getResourceGroupName("Microsoft.Storage/storageAccounts"));
            }
        }