jiajunwang commented on a change in pull request #698: Implement Azure cloud 
instance information processor
URL: https://github.com/apache/helix/pull/698#discussion_r373215475
 
 

 ##########
 File path: 
helix-core/src/main/java/org/apache/helix/cloud/azure/AzureCloudInstanceInformationProcessor.java
 ##########
 @@ -19,38 +19,111 @@
  * under the License.
  */
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.helix.HelixCloudProperty;
+import org.apache.helix.HelixException;
 import org.apache.helix.api.cloud.CloudInstanceInformationProcessor;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
+public class AzureCloudInstanceInformationProcessor
+    implements CloudInstanceInformationProcessor<String> {
+  private CloseableHttpClient _closeableHttpClient;
+  private HelixCloudProperty _helixCloudProperty;
 
-public class AzureCloudInstanceInformationProcessor implements 
CloudInstanceInformationProcessor<String> {
+  public AzureCloudInstanceInformationProcessor(HelixCloudProperty 
helixCloudProperty) {
+    _closeableHttpClient = AzureHttpUtil.getHttpClient(helixCloudProperty);
+    _helixCloudProperty = helixCloudProperty;
+  }
 
-  public AzureCloudInstanceInformationProcessor() {
+  /**
+   * This constructor is for unit test purpose only.
+   * User could provide helixCloudProperty and a mocked http client to test 
the functionality of
+   * this class.
+   */
+  public AzureCloudInstanceInformationProcessor(HelixCloudProperty 
helixCloudProperty,
+      CloseableHttpClient closeableHttpClient) {
+    _helixCloudProperty = helixCloudProperty;
+    _closeableHttpClient = closeableHttpClient;
   }
 
+  private static final Logger LOG =
+      
LoggerFactory.getLogger(AzureCloudInstanceInformationProcessor.class.getName());
+
   /**
-   * fetch the raw Azure cloud instance information
+   * Fetch raw Azure cloud instance information based on the urls provided
    * @return raw Azure cloud instance information
    */
   @Override
   public List<String> fetchCloudInstanceInformation() {
     List<String> response = new ArrayList<>();
-    //TODO: implement the fetching logic
+    for (String url : _helixCloudProperty.getCloudInfoSources()) {
+      response.add(getAzureCloudInformationFromUrl(url));
+    }
     return response;
   }
 
+  /**
+   * Query Azure Instance Metadata Service to get the instance(VM) information
+   * @return raw Azure cloud instance information
+   */
+  public String getAzureCloudInformationFromUrl(String url) {
 
 Review comment:
   private ?

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to