public AgentPoolScanFunction(ILogAnalyticsClient logAnalyticsClient,
                              IRestClient client,
                              HttpClient http,
                              IUnmockable <AzureServiceTokenProvider> tokenProvider)
 {
     _logAnalyticsClient = logAnalyticsClient;
     _client             = client;
     _http          = http;
     _tokenProvider = tokenProvider;
 }
Esempio n. 2
0
 public DemoController(IUnmockable <HttpClient> client)
 {
     _client = client;
 }
        public static async System.Threading.Tasks.Task ReImageAgent(ILogger log, AgentInformation agentInfo, HttpClient client, IUnmockable <AzureServiceTokenProvider> tokenProvider)
        {
            var accessToken = await tokenProvider.Execute(x => x.GetAccessTokenAsync("https://management.azure.com/", null)).ConfigureAwait(false);

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);

            var agentStatusJson = await client.GetStringAsync($"https://management.azure.com/subscriptions/f13f81f8-7578-4ca8-83f3-0a845fad3cb5/resourceGroups/{agentInfo.ResourceGroup}/providers/Microsoft.Compute/virtualMachineScaleSets/agents/virtualmachines/{agentInfo.InstanceId}/instanceView?api-version=2018-06-01");

            dynamic status = JObject.Parse(agentStatusJson);

            if (status.statuses[0].code == "ProvisioningState/updating")
            {
                log.LogInformation($"Agent already being re-imaged: {agentInfo.ResourceGroup} - {agentInfo.InstanceId}");
                return;
            }

            log.LogInformation($"Re-image agent: {agentInfo.ResourceGroup} - {agentInfo.InstanceId}");
            var result = await client.PostAsync($"https://management.azure.com/subscriptions/f13f81f8-7578-4ca8-83f3-0a845fad3cb5/resourceGroups/{agentInfo.ResourceGroup}/providers/Microsoft.Compute/virtualMachineScaleSets/agents/virtualmachines/{agentInfo.InstanceId}/reimage?api-version=2018-06-01", new StringContent(""));

            if (!result.IsSuccessStatusCode)
            {
                throw new Exception($"Error Re-imaging agent: {agentInfo.ResourceGroup} - {agentInfo.InstanceId}");
            }
        }