Как получить информацию о нескольких показателях виртуальной машины в одном вызове API Azure Rest - PullRequest
0 голосов
/ 10 октября 2018

У меня есть требование, при котором мне нужно извлекать значения метрик с нескольких серверов, используя один API-интерфейс отдыха Azure (мне нужно сделать только один вызов API вместо нескольких вызовов).

Как этого добитьсяC #?

Я уже создал класс, который выбирает значения метрик одной виртуальной машины.Вот код для этого:

class Program
    {
        string tenantId;
        string token;

        public static void Main(string[] args)
        {
            //Metrics metrics = new Metrics();
            var pg = new Program();
            pg.token = pg.GetAccessToken();
            string output = pg.doGET("https://management.azure.com/subscriptions/d849b9f5-7a60-40fc-acb6-81d1955aa423/resourceGroups/Test_G/providers/Microsoft.Network/networkInterfaces/helloazuretest215/providers/microsoft.insights/metricDefinitions?api-version=2018-01-01", pg.token);
            //metrics.metricAvailabilities = JsonConvert.DeserializeObject<Metrics>(output).metricAvailabilities;
            Console.WriteLine(output);
            Console.ReadLine();
        }

        public string GetAccessToken()
        {
            string authContextURL = "https://login.windows.net/33d5de17-8fff-4150-b93c-fbec078c02b6/oauth2/token";
            var authenticationContext = new AuthenticationContext(authContextURL);
            var credential = new ClientCredential(clientId: "052d8ab3-9184-4e46-aaff-20c3d650397g", clientSecret: "azure123");
            var result = authenticationContext.AcquireToken(resource: "https://myazureapp.app.com", clientCredential: credential);
            if (result == null)
            {
                throw new InvalidOperationException("Failed to obtain the JWT token");
            }
            token = result.AccessToken;
            return token;
        }

        private string doGET(string URI, String token)
        {
            Uri uri = new Uri(String.Format(URI));
            // Create the request
            var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
            httpWebRequest.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);
            httpWebRequest.ContentType = "application/json";
            httpWebRequest.Method = "GET";
            // Get the response
            HttpWebResponse httpResponse = null;
            try
            {
                httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error from : " + uri + ": " + ex.Message,
                                "HttpWebResponse exception");
                return null;
            }
            string result = null;
            using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
            {
                result = streamReader.ReadToEnd();
            }
            return result;
        }
    }

Может ли кто-нибудь помочь мне с этим требованием?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...