tpodowd commented on code in PR #9748:
URL: https://github.com/apache/cloudstack/pull/9748#discussion_r1805768948


##########
plugins/integrations/cloudian/src/main/java/org/apache/cloudstack/cloudian/client/CloudianClient.java:
##########
@@ -159,22 +180,108 @@ private HttpResponse post(final String path, final 
Object item) throws IOExcepti
         return response;
     }
 
+    /**
+     * Perform a HTTP PUT operation using the path and optional JSON body item.
+     * @param path the http path to use
+     * @param item optional object to send in the body payload. Set to null if 
no body.
+     * @return the HttpResponse object
+     * @throws IOException if the request cannot be executed completely.
+     * @throws ServerApiException if the request meets 401 unauthorized.
+     */
     private HttpResponse put(final String path, final Object item) throws 
IOException {
-        final ObjectMapper mapper = new ObjectMapper();
-        final String json = mapper.writeValueAsString(item);
-        final StringEntity entity = new StringEntity(json);
         final HttpPut request = new HttpPut(adminApiUrl + path);
-        request.setHeader("content-type", "application/json");
-        request.setEntity(entity);
+        if (item != null) {
+            final ObjectMapper mapper = new ObjectMapper();
+            final String json = mapper.writeValueAsString(item);
+            final StringEntity entity = new StringEntity(json);
+            request.setHeader("content-type", "application/json");
+            request.setEntity(entity);
+        }
         final HttpResponse response = httpClient.execute(request, httpContext);
         checkAuthFailure(response);
         return response;
     }
 
+    ////////////////////////////////////////////////////////
+    //////////////// Public APIs: Misc /////////////////////
+    ////////////////////////////////////////////////////////
+
+    /**
+     * Get the HyperStore Server Version number.
+     *
+     * @return version number
+     * @throws ServerApiException on non-200 response or timeout
+     */
+    public String getServerVersion() {
+        logger.debug("Getting server version");
+        try {
+            final HttpResponse response = get("/system/version");
+            checkResponseOK(response);
+            HttpEntity entity = response.getEntity();
+            return EntityUtils.toString(entity, "UTF-8");
+        } catch (final IOException e) {
+            logger.error("Failed to get HyperStore system version:", e);
+            throwTimeoutOrServerException(e);
+        }
+        return null;
+    }
+
+    /**
+     * Get bucket usage information for a group, a user or a particular bucket.
+     *
+     * Note: Bucket Usage Statistics in HyperStore are disabled by default. 
They
+     * can be enabled by the HyperStore Administrator by setting of the 
configuration
+     * 's3.qos.bucketLevel=true'.
+     *
+     * @param groupId the groupId is required (and must exist)
+     * @param userId the userId is optional (null) and if not set all group 
users are returned.
+     * @param bucket the bucket is optional (null). If set the userId must 
also be set.
+     * @return a list of bucket usages (possibly empty).
+     * @throws ServerApiException on non-200 response such as unknown groupId 
etc or response issue.
+     */
+    public List<CloudianUserBucketUsage> getUserBucketUsages(final String 
groupId, final String userId, final String bucket) {
+        if (StringUtils.isBlank(groupId)) {
+            return new ArrayList<>();
+        }
+        logger.debug("Getting bucket usages for groupId={} userId={} 
bucket={}", groupId, userId, bucket);
+        StringBuilder cmd = new StringBuilder("/system/bucketusage?groupId=");
+        cmd.append(groupId);
+        if (! StringUtils.isBlank(userId)) {
+            cmd.append("&userId=");
+            cmd.append(userId);
+        }
+        if (! StringUtils.isBlank(bucket)) {
+            // Assume userId is also set (or request fails).

Review Comment:
   Thanks for your time @JoaoJandre. Can't argue with this. I will fix it.



-- 
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.

To unsubscribe, e-mail: commits-unsubscr...@cloudstack.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to