示例#1
0
        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);
            }
        }
示例#2
0
        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();
            }
        }
示例#3
0
        private void SaveResultsToJson(string file, MonitoredResourcesResult monitoredResourcesResult)
        {
            string text = ScrubResults(JsonConvert.SerializeObject(monitoredResourcesResult, Formatting.Indented));

            SaveResultsToJson(file, text);
        }