private MonitoredResourcesResult LoadResultsFromJson(string file, bool clean = true) { MonitoredResourcesResult result = new MonitoredResourcesResult(); try { if (!string.IsNullOrEmpty(_functionJsonStorageContainer)) { string text = GetStorageBlobReference(file, _functionJsonStorageContainer, false).DownloadTextAsync().Result; if (clean) { text = text.Replace("<tenant Id>", _tenantId); text = text.Replace("<subscription Id>", _subscriptionId); } result = JsonConvert.DeserializeObject <MonitoredResourcesResult>(text); return(result); } else { _log.LogInformation("loadresultsfromjson:json storage not configured"); return(result); } } catch (Exception e) { _log.LogWarning($"unable to read results from json {e.ToString()}"); return(result); } }
public void Execute() { _log.LogInformation($"Execute:{++_executionCount}:\r\n\t{_tenantId}\r\n\t{_clientId}\r\n\t{_secret}\r\n\t{_subscriptionId}"); //_monitoredResources.Clear(); Microsoft.Rest.ServiceClientCredentials serviceCreds = ApplicationTokenProvider.LoginSilentAsync(_tenantId, _clientId, _secret).Result; _resourceClient = new ResourceManagementClient(serviceCreds); _resourceClient.SubscriptionId = _subscriptionId; GetAccessToken(); // load prior results if collection empty if (_monitoredResources.Count < 1) { MonitoredResourcesResult result = LoadResultsFromJson("all.json"); if (result.monitoredResources != null) { _monitoredResources.AddRange(result.monitoredResources); } } SyncResources(); _log.LogInformation("Listing resource groups:"); _resourceClient.ResourceGroups.List().ToList().ForEach(rg => { _log.LogInformation(string.Format("\tName: {0}, Id: {1}", rg.Name, rg.Id)); }); CheckVmPowerStates(); CheckVmssPowerStates(); CheckKustoPowerStates(); SaveResultsToJson("running.json", new MonitoredResourcesResult(_monitoredResources.Where(x => x.CurrentlyPoweredOn == true).ToArray())); SaveResultsToJson("all.json", new MonitoredResourcesResult(_monitoredResources.ToArray())); if (_msgBuilder.Length > 0) { SendGridEmail($"{_monitoredResources.Count(x => x.CurrentlyPoweredOn == true)} running resources in your subscription", _msgBuilder.ToString()); _msgBuilder.Clear(); } }
private void SaveResultsToJson(string file, MonitoredResourcesResult monitoredResourcesResult) { string text = ScrubResults(JsonConvert.SerializeObject(monitoredResourcesResult, Formatting.Indented)); SaveResultsToJson(file, text); }