コード例 #1
0
        public ActionResult <IEnumerable <AzureResourceCommon.Dtos.Resource> > Get()
        {
            AzureResourceCommon.Services.ResourceRepository repo      = new AzureResourceCommon.Services.ResourceRepository();
            AzureResourceCommon.Dtos.Resource[]             resources = repo.GetResources(20);

            return(resources);
        }
コード例 #2
0
        public ActionResult <Resource> Get(int resourceid)
        {
            Resource result = null;

            AzureResourceCommon.Services.ResourceRepository repo = new AzureResourceCommon.Services.ResourceRepository();

            result = repo.GetResource(resourceid);
            return(result);
        }
コード例 #3
0
        public ActionResult <IEnumerable <DailyResourceChanges> > GetChanges()
        {
            List <DailyResourceChanges> changes = new List <DailyResourceChanges>();

            AzureResourceCommon.Services.ResourceRepository repo      = new AzureResourceCommon.Services.ResourceRepository();
            AzureResourceCommon.Dtos.Resource[]             resources = repo.GetResources(20);

            foreach (AzureResourceCommon.Dtos.Resource rec in resources)
            {
                if (!String.IsNullOrEmpty(rec.Differences))
                {
                    DailyResourceChanges dailyChanges = new DailyResourceChanges();
                    dailyChanges.Id        = rec.Id;
                    dailyChanges.Timestamp = rec.Timestamp;
                    // We have changes
                    // First parse resources (big)
                    JObject recJson = JObject.Parse(rec.ResourcesJson);

                    Newtonsoft.Json.Linq.JObject diffJson = Newtonsoft.Json.Linq.JObject.Parse(rec.Differences);

                    int value;
                    foreach (JProperty prop in diffJson["value"])
                    {
                        if (int.TryParse(prop.Name, out value))
                        {
                            // We have a change
                            ResourceChanges change        = new ResourceChanges();
                            JObject         recDetailJson = (JObject)recJson["value"][value];
                            change.Namespace   = recDetailJson["namespace"].ToString();
                            change.Differences = prop.Value.ToString();

                            dailyChanges.Changes.Add(change);
                        }
                        else if (prop.Name == "_t")
                        {
                            if (prop.Value.ToString() == "a")
                            {
                                dailyChanges.Additions = diffJson["value"].Children <JToken>().ToList <JToken>().Count - 1;
                            }
                            else
                            {
                                dailyChanges.Others = diffJson["value"].Children <JToken>().ToList <JToken>().Count - 1;
                            }
                        }
                    }

                    changes.Add(dailyChanges);
                }
            }

            return(changes);
        }
コード例 #4
0
        public static void Run([TimerTrigger("0 0 * * *")] TimerInfo myTimer, TraceWriter log)
        {
            string token             = GetAzureBearerToken();
            string resourceProviders = GetAzureResourceProviders(token);

            AzureResourceCommon.Services.ResourceRepository repo = new AzureResourceCommon.Services.ResourceRepository();

            AzureResourceCommon.Dtos.Resource resource = repo.GetLastResource();

            if (resource == null || resource.ResourcesJson != resourceProviders)
            {
                string diffs = "";

                if (resource != null)
                {
                    var jdp   = new JsonDiffPatch();
                    var left  = JToken.Parse(resource.ResourcesJson);
                    var right = JToken.Parse(resourceProviders);

                    JToken patch = jdp.Diff(left, right);
                    if (patch != null)
                    {
                        diffs = patch.ToString();
                    }
                }

                AzureResourceCommon.Dtos.Resource res = new AzureResourceCommon.Dtos.Resource()
                {
                    ResourcesJson = resourceProviders,
                    Differences   = diffs,
                    Timestamp     = DateTime.Now
                };
                // We have resource changes changes
                repo.InsertResourceJson(res);
            }

            //return (new OkObjectResult(resourceProviders));
        }
コード例 #5
0
        public static IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, TraceWriter log)
        {
            log.Info("C# HTTP trigger function AzureResourceRemoveSubId processed a request.");
            AzureResourceCommon.Services.ResourceRepository repo = new AzureResourceCommon.Services.ResourceRepository();

            string subId = System.Environment.GetEnvironmentVariable("SubscriptionId");

            AzureResourceCommon.Dtos.Resource[] resources = repo.GetResources();

            foreach (AzureResourceCommon.Dtos.Resource resource in resources)
            {
                bool foundMatch = false;

                if (resource.Differences.Contains(subId))
                {
                    foundMatch = true;
                    // Must be corrected, remove subid from diff json
                    resource.Differences = resource.Differences.Replace(subId, "YYYYYYYY-YYYY");
                }

                if (resource.ResourcesJson.Contains(subId))
                {
                    foundMatch = true;
                    // Must be corrected, remove subid from resource json
                    resource.ResourcesJson = resource.ResourcesJson.Replace(subId, "YYYYYYYY-YYYY");
                }

                if (foundMatch)
                {
                    // Update back to DB
                    repo.UpdateResourceJson(resource);
                }
            }

            return(new OkObjectResult("news checked."));
        }