You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by GitBox <gi...@apache.org> on 2022/08/08 10:16:46 UTC

[GitHub] [cloudstack] joseflauzino opened a new pull request, #6401: VM stats history visualization

joseflauzino opened a new pull request, #6401:
URL: https://github.com/apache/cloudstack/pull/6401

   ### Description
   
   PR #5984 recently implemented the `listVirtualMachinesUsageHistory` API, which provides historical data of VM stats. However, the current ACS UI only shows VM stats from the most recent data collection.
   
   This PR implements new features in the UI which allow ACS users to view the historical stats of each VM individually.
   
   ### Types of changes
   
   - [ ] Breaking change (fix or feature that would cause existing functionality to change)
   - [x] New feature (non-breaking change which adds functionality)
   - [ ] Bug fix (non-breaking change which fixes an issue)
   - [ ] Enhancement (improves an existing feature and functionality)
   - [ ] Cleanup (Code refactoring and cleanup, that may add test cases)
   
   ### Feature/Enhancement Scale or Bug Severity
   
   #### Feature/Enhancement Scale
   
   - [x] Major
   - [ ] Minor
   
   ### Screenshots:
   
   **Charts:**
   
   ![CPU](https://user-images.githubusercontent.com/17031007/169381581-3eaac457-ff43-45cd-8418-f72b6b73d950.gif)
   
   ![Memory](https://user-images.githubusercontent.com/17031007/169381633-08082bb8-8797-4194-a261-4837659cdb09.gif)
   
   ![Network](https://user-images.githubusercontent.com/17031007/169381855-64129313-fd0a-4ca0-9094-234109dabea6.gif)
   
   ![Disk](https://user-images.githubusercontent.com/17031007/169381941-10cdd565-989f-4c9b-916e-8b8a9568df92.gif)
   
   **Possible Filtering:**
   ![filters](https://user-images.githubusercontent.com/17031007/169382834-96b9bd1a-e722-4650-901d-317da5c28bf8.png)
   
   
   ### How Has This Been Tested?
   
   I went to Compute > Instances > `any-vm-instance` > Statistics and was able to visualize all the statistics charts for the selected VM.
   Also, I filtered by different period combinations and the data was presented correctly.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] acs-robot commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
acs-robot commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1207276890

   Found UI changes, kicking a new UI QA build
   @blueorangutan ui


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1207277715

   UI build: :heavy_check_mark:
   Live QA URL: http://qa.cloudstack.cloud:8080/client/pr/6401 (SL-JID-2094)


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1146295288

   @acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1193986799

   @shwstppr a Jenkins job has been kicked to build packages. It will be bundled with  KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] shwstppr commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
shwstppr commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1195292305

   @blueorangutan test keepEnv


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] rohityadavcloud commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
rohityadavcloud commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1203708252

   Overall, LGTM but before this can be merged a few concerns if you can advise on @joseflauzino:
   - How does the backend API/DB handle as the data grows - my concern is if this would always grow with time and create issues we perhaps hit like with the usage server (I understand they are not in this PR but the feature)
   - Is this framework expandable to other resources such as volumes, systemvms and virtual routers?


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1207936656

   @acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] sonarcloud[bot] commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
sonarcloud[bot] commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1207282940

   Kudos, SonarCloud Quality Gate passed!&nbsp; &nbsp; [![Quality Gate passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/passed-16px.png 'Quality Gate passed')](https://sonarcloud.io/dashboard?id=apache_cloudstack&pullRequest=6401)
   
   [![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG)  
   [![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY)  
   [![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT)  
   [![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL)
   
   [![No Coverage information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo-16px.png 'No Coverage information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=coverage&view=list) No Coverage information  
   [![No Duplication information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/NoDuplicationInfo-16px.png 'No Duplication information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=duplicated_lines_density&view=list) No Duplication information
   
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1133152508

   @DaanHoogland a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1146300093

   UI build: :heavy_check_mark:
   Live QA URL: http://qa.cloudstack.cloud:8080/client/pr/6401 (SL-JID-1674)


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] joseflauzino commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
joseflauzino commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1205250409

   @rohityadavcloud 
   
   > How does the backend API/DB handle as the data grows - my concern is if this would always grow with time and create issues we perhaps hit like with the usage server (I understand they are not in this PR but the feature)
   
   The amount of data that is kept in the database is controlled by the cloud administrators. This can be done through the global configuration `vm.stats.max.retention.time`, which was created in PR #5984 (please, in spec #5935, see sections [2.2](https://github.com/apache/cloudstack/issues/5935#2-proposed-changes--22-configuration-proposal) and [2.3](https://github.com/apache/cloudstack/issues/5935#2-proposed-changes--23-data-cleaning-proposal) for details).
   
   > Is this framework expandable to other resources such as volumes, systemvms and virtual routers?
   
   At the code level we would need to analyze how much it would be reusable. But for sure, at the very least, the idea (including the design and some logics of the code) can be extended to the other resources/elements.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] harikrishna-patnala commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
harikrishna-patnala commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1182912766

   agreed @GutoVeronezi I've raised it because @joseflauzino raised this PR and both are related. I'll create a separate issue for this.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] GutoVeronezi commented on a diff in pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
GutoVeronezi commented on code in PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#discussion_r902988674


##########
ui/public/locales/en.json:
##########
@@ -2880,6 +2904,8 @@
 "message.copy.iso.confirm": "Please confirm that you wish to copy your ISO to",
 "message.copy.template": "Copy template <b id=\"copy_template_name_text\">XXX</b> from zone <b id=\"copy_template_source_zone_text\"></b> to",
 "message.copy.template.confirm": "Are you sure you want to copy template?",
+"message.cpu.usage.info.multi.cpu": "The percentage of CPU usage can go over 100% when a VM has more than 1 vCPU. This happens because the usage of all the vCPUs of the VM are accumulated.",

Review Comment:
   @joseflauzino, actually it depends on how the hypervisor account the stats. As far as I know, the way VMware accounts it, the CPU will never pass 100%. I think a more accurately message would be:
   
   ```suggestion
   "message.cpu.usage.info.multi.cpu": "The CPU usage percentage can exceed 100% if the VM has more than 1 vCPU or when CPU Cap is not enabled. This behavior happens according to how the hypervisor being used accounts the stats.",
   ```



##########
ui/src/components/view/StatsTab.vue:
##########
@@ -0,0 +1,663 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+<template>
+  <div class="container">
+    <a-modal
+      v-model:visible="showFilterStatsModal"
+      :title="$t('label.select.period')"
+      :maskClosable="false"
+      :footer="null">
+      <filter-stats
+        @closeAction="closeAction"
+        @onSubmit="handleSubmit"/>
+    </a-modal>
+    <a-modal
+      v-model:visible="showResourceInfoModal"
+      :title="resourceInfoModalTitle"
+      :footer="null">
+      <resource-stats-info :resourceType="resourceTypeToShowInfo" :key="resourceTypeToShowInfo"/>
+    </a-modal>
+    <a-row class="chart-row">
+      <a-col>
+        <span class="ant-tag">
+          <a-button @click="openFilter()">
+            <FilterOutlined/>
+          </a-button>
+          <span v-html="formatedPeriod"></span>
+        </span>
+      </a-col>
+    </a-row>
+    <div v-if="loaded">
+      <div v-if="chartLabels.length > 0">
+        <a-row class="chart-row">
+          <a-col>
+            <strong>CPU</strong>
+            <InfoCircleOutlined class="info-icon" :title="$t('label.see.more.info.cpu.usage')" @click="onClickShowResourceInfoModal('CPU')"/>
+            <line-chart
+              :chartData="prepareData(resourceUsageHistory.cpu)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.cpu, 100, 10), '%')"
+              :width="1024"
+              :height="250"
+            />
+          </a-col>
+        </a-row>
+        <a-row class="chart-row">
+          <a-col>
+            <strong>{{ $t('label.memory') }}</strong>
+            <InfoCircleOutlined class="info-icon" :title="$t('label.see.more.info.memory.usage')" @click="onClickShowResourceInfoModal('MEM')"/>
+            <a-select class="chart-type-select" v-model:value="selectedMemoryChartType">
+              <a-select-option v-for="(type, typeIndex) in memoryChartTypes" :key="typeIndex">
+                {{ type }}
+              </a-select-option>
+            </a-select>
+            <a-select v-model:value="selectedMemoryUsageType">
+              <a-select-option v-for="(type, typeIndex) in memoryUsageTypes" :key="typeIndex">
+                {{ type }}
+              </a-select-option>
+            </a-select>
+            <a-select v-model:value="selectedMemoryUnitOfMeasurement" v-if="selectedMemoryChartType === 0">
+              <a-select-option v-for="unit in memoryUnitsOfMeasurement" :key="unit">
+                {{ unit }}
+              </a-select-option>
+            </a-select>
+            <line-chart
+              v-if="selectedMemoryChartType === 0 && selectedMemoryUsageType === 0 && selectedMemoryUnitOfMeasurement === 'MB'"
+              :chartData="prepareData(resourceUsageHistory.memory.rawData.used.inMB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.memory.rawData.used.inMB, 10, 100), ' MB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedMemoryChartType === 0 && selectedMemoryUsageType === 0 && selectedMemoryUnitOfMeasurement === 'GB'"
+              :chartData="prepareData(resourceUsageHistory.memory.rawData.used.inGB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.memory.rawData.used.inGB, 1, 1), ' GB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedMemoryChartType === 0 && selectedMemoryUsageType === 1 && selectedMemoryUnitOfMeasurement === 'MB'"
+              :chartData="prepareData(resourceUsageHistory.memory.rawData.free.inMB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.memory.rawData.free.inMB, 10, 100), ' MB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedMemoryChartType === 0 && selectedMemoryUsageType === 1 && selectedMemoryUnitOfMeasurement === 'GB'"
+              :chartData="prepareData(resourceUsageHistory.memory.rawData.free.inGB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.memory.rawData.free.inGB, 1, 1), ' GB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedMemoryChartType === 1 && selectedMemoryUsageType === 0"
+              :chartData="prepareData(resourceUsageHistory.memory.percentage.used)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.memory.percentage.used, 100, 10), '%')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedMemoryChartType === 1 && selectedMemoryUsageType === 1"
+              :chartData="prepareData(resourceUsageHistory.memory.percentage.free)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.memory.percentage.free, 100, 10), '%')"
+              :width="1024"
+              :height="250"
+            />
+          </a-col>
+        </a-row>
+        <a-row class="chart-row">
+          <a-col>
+            <strong>{{ $t('label.network') }}</strong>
+            <InfoCircleOutlined class="info-icon" :title="$t('label.see.more.info.network.usage')" @click="onClickShowResourceInfoModal('NET')"/>
+            <a-select v-model:value="selectedNetworkUnitOfMeasurement">
+              <a-select-option v-for="unit in networkUnitsOfMeasurement" :key="unit">
+                {{ unit }}
+              </a-select-option>
+            </a-select>
+            <line-chart
+              v-if="selectedNetworkUnitOfMeasurement === 'KiB'"
+              :chartData="prepareData(resourceUsageHistory.network.inKiB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.network.inKiB, 100, 100), ' KiB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedNetworkUnitOfMeasurement === 'MiB'"
+              :chartData="prepareData(resourceUsageHistory.network.inMiB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.network.inMiB, 100, 100), ' MiB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedNetworkUnitOfMeasurement === 'GiB'"
+              :chartData="prepareData(resourceUsageHistory.network.inGiB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.network.inGiB, 1, 1), ' GiB')"
+              :width="1024"
+              :height="250"
+            />
+          </a-col>
+        </a-row>
+        <a-row class="chart-row">
+          <a-col>
+            <strong>{{ $t('label.disk') }}</strong>
+            <InfoCircleOutlined class="info-icon" :title="$t('label.see.more.info.disk.usage')" @click="onClickShowResourceInfoModal('DISK')"/>
+            <a-select class="chart-type-select" v-model:value="selectedDiskChartType">
+              <a-select-option v-for="(type, typeIndex) in diskChartTypes" :key="typeIndex">
+                {{ type }}
+              </a-select-option>
+            </a-select>
+            <a-select
+              v-if="selectedDiskChartType === 1"
+              v-model:value="selectedDiskUnitOfMeasurement">
+              <a-select-option v-for="unit in diskUnitsOfMeasurement" :key="unit">
+                {{ unit }}
+              </a-select-option>
+            </a-select>
+            <line-chart
+              v-if="selectedDiskChartType === 0"
+              :chartData="prepareData(resourceUsageHistory.disk.iops)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.disk.iops, 100, 100), ' IOPS')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedDiskChartType === 1 && selectedDiskUnitOfMeasurement === 'KiB'"
+              :chartData="prepareData(resourceUsageHistory.disk.readAndWrite.inKiB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.disk.readAndWrite.inKiB, 100, 100), ' KiB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedDiskChartType === 1 && selectedDiskUnitOfMeasurement === 'MiB'"
+              :chartData="prepareData(resourceUsageHistory.disk.readAndWrite.inMiB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.disk.readAndWrite.inMiB, 10, 10), ' MiB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedDiskChartType === 1 && selectedDiskUnitOfMeasurement === 'GiB'"
+              :chartData="prepareData(resourceUsageHistory.disk.readAndWrite.inGiB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.disk.readAndWrite.inGiB, 1, 1), ' GiB')"
+              :width="1024"
+              :height="250"
+            />
+          </a-col>
+        </a-row>
+      </div>
+      <div v-else>
+        <a-alert :message="$t('message.no.data.to.show.for.period')" banner />
+      </div>
+    </div>
+    <a-spin v-else></a-spin>
+  </div>
+</template>
+<script>
+import { api } from '@/api'
+import moment from 'moment'
+import 'chartjs-adapter-moment'
+import FilterStats from './stats/FilterStats'
+import ResourceStatsInfo from './stats/ResourceStatsInfo'
+import LineChart from './chart/LineChart'
+
+export default {
+  props: {
+    resource: {
+      type: Object,
+      required: true
+    }
+  },
+  components: {
+    FilterStats,
+    ResourceStatsInfo,
+    LineChart
+  },
+  data () {
+    return {
+      resourceTypeToShowInfo: null,
+      showResourceInfoModal: false,
+      resourceInfoModalTitle: null,
+      loaded: false,
+      showCpuInfo: false,
+      showFilterStatsModal: false,
+      endDate: new Date(),
+      startDate: new Date().setHours(new Date().getHours() - 1),
+      formatedPeriod: null,
+      selectedMemoryChartType: 0,
+      selectedMemoryUsageType: 0,
+      memoryChartTypes: [this.$t('label.raw.data'), this.$t('label.percentage')],
+      memoryUsageTypes: [this.$t('label.used'), this.$t('label.free')],
+      selectedMemoryUnitOfMeasurement: 'GB',
+      memoryUnitsOfMeasurement: ['MB', 'GB'],
+      selectedNetworkUnitOfMeasurement: 'MiB',
+      networkUnitsOfMeasurement: ['KiB', 'MiB', 'GiB'],
+      selectedDiskChartType: 0,
+      diskChartTypes: ['IOPS', this.$t('label.read.and.write')],
+      selectedDiskUnitOfMeasurement: 'KiB',
+      diskUnitsOfMeasurement: ['KiB', 'MiB', 'GiB'],
+      chartLabels: [],
+      resourceUsageHistory: {
+        cpu: [],
+        memory: {
+          percentage: {
+            free: [],
+            used: []
+          },
+          rawData: {
+            free: {
+              inMB: [],
+              inGB: []
+            },
+            used: {
+              inMB: [],
+              inGB: []
+            }
+          }
+        },
+        network: {
+          inKiB: [],
+          inMiB: [],
+          inGiB: []
+        },
+        disk: {
+          iops: [],
+          readAndWrite: {
+            inKiB: [],
+            inMiB: [],
+            inGiB: []
+          }
+        }
+      }
+    }
+  },
+  mounted () {
+    this.fetchData()
+  },
+  watch: {
+    resource: function (newItem) {
+      if (!newItem || !newItem.id) {
+        return
+      }
+      this.fetchData()
+    }
+  },
+  methods: {
+    openFilter () {
+      this.showFilterStatsModal = true
+    },
+    onClickShowResourceInfoModal (resource) {
+      switch (resource) {
+        case 'CPU':
+          this.resourceInfoModalTitle = this.$t('label.cpu.usage.info')
+          break
+        case 'MEM':
+          this.resourceInfoModalTitle = this.$t('label.memory.usage.info')
+          break
+        case 'NET':
+          this.resourceInfoModalTitle = this.$t('label.network.usage.info')
+          break
+        case 'DISK':
+          this.resourceInfoModalTitle = this.$t('label.disk.usage.info')
+          break
+      }
+      this.resourceTypeToShowInfo = resource
+      this.showResourceInfoModal = true
+    },
+    handleSubmit (values) {
+      this.startDate = values.startDate
+      this.endDate = values.endDate
+      this.showFilterStatsModal = false
+      this.fetchData()
+    },
+    closeAction () {
+      this.showFilterStatsModal = false
+    },
+    fetchData () {
+      this.loaded = false
+      this.showResourceInfoModal = false
+      this.formatPeriod()
+      var params = { id: this.resource.id }
+      if (this.startDate) {
+        params.startDate = moment(this.startDate).format('YYYY-MM-DD HH:mm:ss')
+      }
+      if (this.endDate) {
+        params.endDate = moment(this.endDate).format('YYYY-MM-DD HH:mm:ss')
+      }
+      api('listVirtualMachinesUsageHistory', params).then(response => {
+        this.handleStatsResponse(response)
+      }).catch(error => {
+        this.$notifyError(error)
+      })
+    },
+    formatPeriod () {
+      var formatedStartDate = null
+      var formatedEndDate = null
+      if (this.startDate) {
+        formatedStartDate = moment(this.startDate).format('MMM DD, YYYY') + ' at ' + moment(this.startDate).format('HH:mm:ss')
+      }
+      if (this.endDate) {
+        formatedEndDate = moment(this.endDate).format('MMM DD, YYYY') + ' at ' + moment(this.endDate).format('HH:mm:ss')
+      }
+      if (formatedStartDate && formatedEndDate) {
+        this.formatedPeriod = ' ' + this.$t('label.vm.stats.filter.period', { startDate: formatedStartDate, endDate: formatedEndDate })
+      } else if (formatedStartDate && !formatedEndDate) {
+        this.formatedPeriod = ' ' + this.$t('label.vm.stats.filter.starting', { startDate: formatedStartDate })
+      } else if (!formatedStartDate && formatedEndDate) {
+        this.formatedPeriod = ' ' + this.$t('label.vm.stats.filter.up.to', { endDate: formatedEndDate })
+      } else {
+        this.formatedPeriod = ' <b>' + this.$t('label.all.available.data') + '</b>'
+      }
+    },
+    handleStatsResponse (responseData) {
+      this.resetData()
+      const vm = responseData.listvirtualmachinesusagehistoryresponse.virtualmachine
+
+      const chartPointRadius = this.getChartPointRadius(vm[0].stats.length)
+
+      const blue = '#166ab7'
+      const green = '#389357'
+      const blueInRgba = 'rgba(24, 144, 255, 0.5)'
+      const greenInRgba = 'rgba(59, 198, 133, 0.65)'
+      const red = '#ff4d4f'
+      const redInRgba = 'rgb(255, 77, 79, 0.65)'
+
+      const cpuLine = { label: 'CPU', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const memFreeLinePercent = { label: this.$t('label.memory.free'), backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const memUsedLinePercent = { label: this.$t('label.memory.used'), backgroundColor: redInRgba, borderColor: red, data: [], pointRadius: chartPointRadius }
+      const memAllocatedLineInMB = { label: this.$t('label.memoryallocated'), backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const memFreeLineInMB = { label: this.$t('label.memory.free'), backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const memUsedLineInMB = { label: this.$t('label.memory.used'), backgroundColor: redInRgba, borderColor: red, data: [], pointRadius: chartPointRadius }
+      const memAllocatedLineInGB = { label: this.$t('label.memoryallocated'), backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const memFreeLineInGB = { label: this.$t('label.memory.free'), backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const memUsedLineInGB = { label: this.$t('label.memory.used'), backgroundColor: redInRgba, borderColor: red, data: [], pointRadius: chartPointRadius }
+      const netDownloadLineInKiB = { label: 'Download', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const netUploadLineInKiB = { label: 'Upload', backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const netDownloadLineInMiB = { label: 'Download', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const netUploadLineInMiB = { label: 'Upload', backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const netDownloadLineInGiB = { label: 'Download', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const netUploadLineInGiB = { label: 'Upload', backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const diskReadLineInKiB = { label: 'Read', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const diskWriteLineInKiB = { label: 'Write', backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const diskReadLineInMiB = { label: 'Read', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const diskWriteLineInMiB = { label: 'Write', backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const diskReadLineInGiB = { label: 'Read', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const diskWriteLineInGiB = { label: 'Write', backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const diskIopsLine = { label: 'IOPS', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+
+      for (const element of vm[0].stats) {
+        const currentLabel = element.timestamp.split('T')[0] + ' ' + element.timestamp.split('T')[1].split('-')[0]
+        this.chartLabels.push(currentLabel)
+
+        cpuLine.data.push({ timestamp: currentLabel, stat: element.cpuused.split('%')[0] })
+
+        element.memoryusedkbs = element.memorykbs - element.memoryintfreekbs
+        memFreeLinePercent.data.push({ timestamp: currentLabel, stat: this.calculateMemoryPercentage(false, element.memorykbs, element.memoryintfreekbs) })
+        memUsedLinePercent.data.push({ timestamp: currentLabel, stat: this.calculateMemoryPercentage(true, element.memorykbs, element.memoryintfreekbs) })
+        memAllocatedLineInMB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.memorykbs, 1) })
+        memFreeLineInMB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.memoryintfreekbs, 1) })
+        memUsedLineInMB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.memoryusedkbs, 1) })
+        memAllocatedLineInGB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.memorykbs, 2) })
+        memFreeLineInGB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.memoryintfreekbs, 2) })
+        memUsedLineInGB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.memoryusedkbs, 2) })
+
+        netDownloadLineInKiB.data.push({ timestamp: currentLabel, stat: element.networkkbsread })
+        netUploadLineInKiB.data.push({ timestamp: currentLabel, stat: element.networkkbswrite })
+        netDownloadLineInMiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.networkkbsread, 1) })
+        netUploadLineInMiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.networkkbswrite, 1) })
+        netDownloadLineInGiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.networkkbsread, 2) })
+        netUploadLineInGiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.networkkbswrite, 2) })
+
+        diskReadLineInKiB.data.push({ timestamp: currentLabel, stat: element.diskkbsread })
+        diskWriteLineInKiB.data.push({ timestamp: currentLabel, stat: element.diskkbswrite })
+        diskReadLineInMiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.diskkbsread, 1) })
+        diskWriteLineInMiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.diskkbswrite, 1) })
+        diskReadLineInGiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.diskkbsread, 2) })
+        diskWriteLineInGiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.diskkbswrite, 2) })
+        diskIopsLine.data.push({ timestamp: currentLabel, stat: element.diskiopstotal })
+      }
+
+      this.resourceUsageHistory.cpu.push(cpuLine)
+
+      this.resourceUsageHistory.memory.percentage.free.push(memFreeLinePercent)
+      this.resourceUsageHistory.memory.percentage.used.push(memUsedLinePercent)
+      this.resourceUsageHistory.memory.rawData.free.inMB.push(memFreeLineInMB)
+      this.resourceUsageHistory.memory.rawData.free.inMB.push(memAllocatedLineInMB)
+      this.resourceUsageHistory.memory.rawData.used.inMB.push(memUsedLineInMB)
+      this.resourceUsageHistory.memory.rawData.used.inMB.push(memAllocatedLineInMB)
+      this.resourceUsageHistory.memory.rawData.free.inGB.push(memFreeLineInGB)
+      this.resourceUsageHistory.memory.rawData.free.inGB.push(memAllocatedLineInGB)
+      this.resourceUsageHistory.memory.rawData.used.inGB.push(memUsedLineInGB)
+      this.resourceUsageHistory.memory.rawData.used.inGB.push(memAllocatedLineInGB)
+
+      this.resourceUsageHistory.network.inKiB.push(netDownloadLineInKiB)
+      this.resourceUsageHistory.network.inKiB.push(netUploadLineInKiB)
+      this.resourceUsageHistory.network.inMiB.push(netDownloadLineInMiB)
+      this.resourceUsageHistory.network.inMiB.push(netUploadLineInMiB)
+      this.resourceUsageHistory.network.inGiB.push(netDownloadLineInGiB)
+      this.resourceUsageHistory.network.inGiB.push(netUploadLineInGiB)
+
+      this.resourceUsageHistory.disk.readAndWrite.inKiB.push(diskReadLineInKiB)
+      this.resourceUsageHistory.disk.readAndWrite.inKiB.push(diskWriteLineInKiB)
+      this.resourceUsageHistory.disk.readAndWrite.inMiB.push(diskReadLineInMiB)
+      this.resourceUsageHistory.disk.readAndWrite.inMiB.push(diskWriteLineInMiB)
+      this.resourceUsageHistory.disk.readAndWrite.inGiB.push(diskReadLineInGiB)
+      this.resourceUsageHistory.disk.readAndWrite.inGiB.push(diskWriteLineInGiB)
+      this.resourceUsageHistory.disk.iops.push(diskIopsLine)
+
+      this.loaded = true
+    },
+    /**
+     * Calculates the ideal chart points radius based on the number of data points and the screen width.
+     * @param numberOfDataPoints the number of data points.
+     * @returns the ideal chart points radius (which is the size of the points on the chart).
+     */
+    getChartPointRadius (numberOfDataPoints) {
+      const maxSizeLimit = 3
+      const minSizeLimit = 2
+      const minSize = 0.1 // the smallest value that allows to render the point in the chart
+      const result = (screen.width * 0.04) / numberOfDataPoints
+      if (result > maxSizeLimit) {
+        return maxSizeLimit
+      } else if (result < minSizeLimit) {
+        return minSize
+      }
+      return parseFloat(result).toFixed(2)
+    },
+    /**
+     * Converts a value (Byte-based) from an unit to other one. For example: from Byte to KiB; from GiB to MiB; etc.
+     * To use it consider the following sequence: Byte -> KiB -> MiB -> GiB ...
+     * So, from Byte to MiB there are 2 steps, while from MiB to Byte there are -2 steps.
+     * @param value the value to be converted.
+     * @param step the number of steps between Byte-based units of measure.
+     * @returns the converted value.
+     */
+    convertByteBasedUnitOfMeasure (value, step) {
+      if (value === 0) {
+        return 0.00
+      }
+      if (step === 0) {
+        return value
+      }
+      if (step > 0) {
+        return parseFloat(value / (Math.pow(1024, step))).toFixed(2)
+      }
+      return parseFloat(value * (Math.pow(1024, Math.abs(step)))).toFixed(2)
+    },
+    resetData () {
+      this.chartLabels = []
+      this.resourceUsageHistory.cpu = []
+      this.resourceUsageHistory.memory.percentage.free = []
+      this.resourceUsageHistory.memory.percentage.used = []
+      this.resourceUsageHistory.memory.rawData.free.inMB = []
+      this.resourceUsageHistory.memory.rawData.free.inGB = []
+      this.resourceUsageHistory.memory.rawData.used.inMB = []
+      this.resourceUsageHistory.memory.rawData.used.inGB = []
+      this.resourceUsageHistory.network.inKiB = []
+      this.resourceUsageHistory.network.inMiB = []
+      this.resourceUsageHistory.network.inGiB = []
+      this.resourceUsageHistory.disk.iops = []
+      this.resourceUsageHistory.disk.readAndWrite.inKiB = []
+      this.resourceUsageHistory.disk.readAndWrite.inMiB = []
+      this.resourceUsageHistory.disk.readAndWrite.inGiB = []
+    },
+    /**
+     * Calculates the memory percentage.
+     * @param isUsed "true" if the memory used percentage should be returned, "false" if the free memory percentage should be returned.
+     * @param memoryTotalInKB the memory total (in KB).
+     * @param memoryFreeInKB the memory free (in KB).
+     * @returns the percentage of used/free memory.
+     */
+    calculateMemoryPercentage (isUsed, memoryTotalInKB, memoryFreeInKB) {
+      var percentage = -1
+      if (memoryTotalInKB != null && memoryFreeInKB != null) {

Review Comment:
   We could invert this `if` to reduce indentation.



##########
ui/src/components/view/StatsTab.vue:
##########
@@ -0,0 +1,663 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+<template>
+  <div class="container">
+    <a-modal
+      v-model:visible="showFilterStatsModal"
+      :title="$t('label.select.period')"
+      :maskClosable="false"
+      :footer="null">
+      <filter-stats
+        @closeAction="closeAction"
+        @onSubmit="handleSubmit"/>
+    </a-modal>
+    <a-modal
+      v-model:visible="showResourceInfoModal"
+      :title="resourceInfoModalTitle"
+      :footer="null">
+      <resource-stats-info :resourceType="resourceTypeToShowInfo" :key="resourceTypeToShowInfo"/>
+    </a-modal>
+    <a-row class="chart-row">
+      <a-col>
+        <span class="ant-tag">
+          <a-button @click="openFilter()">
+            <FilterOutlined/>
+          </a-button>
+          <span v-html="formatedPeriod"></span>
+        </span>
+      </a-col>
+    </a-row>
+    <div v-if="loaded">
+      <div v-if="chartLabels.length > 0">
+        <a-row class="chart-row">
+          <a-col>
+            <strong>CPU</strong>
+            <InfoCircleOutlined class="info-icon" :title="$t('label.see.more.info.cpu.usage')" @click="onClickShowResourceInfoModal('CPU')"/>
+            <line-chart
+              :chartData="prepareData(resourceUsageHistory.cpu)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.cpu, 100, 10), '%')"
+              :width="1024"
+              :height="250"
+            />
+          </a-col>
+        </a-row>
+        <a-row class="chart-row">
+          <a-col>
+            <strong>{{ $t('label.memory') }}</strong>
+            <InfoCircleOutlined class="info-icon" :title="$t('label.see.more.info.memory.usage')" @click="onClickShowResourceInfoModal('MEM')"/>
+            <a-select class="chart-type-select" v-model:value="selectedMemoryChartType">
+              <a-select-option v-for="(type, typeIndex) in memoryChartTypes" :key="typeIndex">
+                {{ type }}
+              </a-select-option>
+            </a-select>
+            <a-select v-model:value="selectedMemoryUsageType">
+              <a-select-option v-for="(type, typeIndex) in memoryUsageTypes" :key="typeIndex">
+                {{ type }}
+              </a-select-option>
+            </a-select>
+            <a-select v-model:value="selectedMemoryUnitOfMeasurement" v-if="selectedMemoryChartType === 0">
+              <a-select-option v-for="unit in memoryUnitsOfMeasurement" :key="unit">
+                {{ unit }}
+              </a-select-option>
+            </a-select>
+            <line-chart
+              v-if="selectedMemoryChartType === 0 && selectedMemoryUsageType === 0 && selectedMemoryUnitOfMeasurement === 'MB'"
+              :chartData="prepareData(resourceUsageHistory.memory.rawData.used.inMB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.memory.rawData.used.inMB, 10, 100), ' MB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedMemoryChartType === 0 && selectedMemoryUsageType === 0 && selectedMemoryUnitOfMeasurement === 'GB'"
+              :chartData="prepareData(resourceUsageHistory.memory.rawData.used.inGB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.memory.rawData.used.inGB, 1, 1), ' GB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedMemoryChartType === 0 && selectedMemoryUsageType === 1 && selectedMemoryUnitOfMeasurement === 'MB'"
+              :chartData="prepareData(resourceUsageHistory.memory.rawData.free.inMB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.memory.rawData.free.inMB, 10, 100), ' MB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedMemoryChartType === 0 && selectedMemoryUsageType === 1 && selectedMemoryUnitOfMeasurement === 'GB'"
+              :chartData="prepareData(resourceUsageHistory.memory.rawData.free.inGB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.memory.rawData.free.inGB, 1, 1), ' GB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedMemoryChartType === 1 && selectedMemoryUsageType === 0"
+              :chartData="prepareData(resourceUsageHistory.memory.percentage.used)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.memory.percentage.used, 100, 10), '%')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedMemoryChartType === 1 && selectedMemoryUsageType === 1"
+              :chartData="prepareData(resourceUsageHistory.memory.percentage.free)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.memory.percentage.free, 100, 10), '%')"
+              :width="1024"
+              :height="250"
+            />
+          </a-col>
+        </a-row>
+        <a-row class="chart-row">
+          <a-col>
+            <strong>{{ $t('label.network') }}</strong>
+            <InfoCircleOutlined class="info-icon" :title="$t('label.see.more.info.network.usage')" @click="onClickShowResourceInfoModal('NET')"/>
+            <a-select v-model:value="selectedNetworkUnitOfMeasurement">
+              <a-select-option v-for="unit in networkUnitsOfMeasurement" :key="unit">
+                {{ unit }}
+              </a-select-option>
+            </a-select>
+            <line-chart
+              v-if="selectedNetworkUnitOfMeasurement === 'KiB'"
+              :chartData="prepareData(resourceUsageHistory.network.inKiB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.network.inKiB, 100, 100), ' KiB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedNetworkUnitOfMeasurement === 'MiB'"
+              :chartData="prepareData(resourceUsageHistory.network.inMiB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.network.inMiB, 100, 100), ' MiB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedNetworkUnitOfMeasurement === 'GiB'"
+              :chartData="prepareData(resourceUsageHistory.network.inGiB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.network.inGiB, 1, 1), ' GiB')"
+              :width="1024"
+              :height="250"
+            />
+          </a-col>
+        </a-row>
+        <a-row class="chart-row">
+          <a-col>
+            <strong>{{ $t('label.disk') }}</strong>
+            <InfoCircleOutlined class="info-icon" :title="$t('label.see.more.info.disk.usage')" @click="onClickShowResourceInfoModal('DISK')"/>
+            <a-select class="chart-type-select" v-model:value="selectedDiskChartType">
+              <a-select-option v-for="(type, typeIndex) in diskChartTypes" :key="typeIndex">
+                {{ type }}
+              </a-select-option>
+            </a-select>
+            <a-select
+              v-if="selectedDiskChartType === 1"
+              v-model:value="selectedDiskUnitOfMeasurement">
+              <a-select-option v-for="unit in diskUnitsOfMeasurement" :key="unit">
+                {{ unit }}
+              </a-select-option>
+            </a-select>
+            <line-chart
+              v-if="selectedDiskChartType === 0"
+              :chartData="prepareData(resourceUsageHistory.disk.iops)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.disk.iops, 100, 100), ' IOPS')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedDiskChartType === 1 && selectedDiskUnitOfMeasurement === 'KiB'"
+              :chartData="prepareData(resourceUsageHistory.disk.readAndWrite.inKiB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.disk.readAndWrite.inKiB, 100, 100), ' KiB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedDiskChartType === 1 && selectedDiskUnitOfMeasurement === 'MiB'"
+              :chartData="prepareData(resourceUsageHistory.disk.readAndWrite.inMiB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.disk.readAndWrite.inMiB, 10, 10), ' MiB')"
+              :width="1024"
+              :height="250"
+            />
+            <line-chart
+              v-if="selectedDiskChartType === 1 && selectedDiskUnitOfMeasurement === 'GiB'"
+              :chartData="prepareData(resourceUsageHistory.disk.readAndWrite.inGiB)"
+              :chartOptions="getChartOptions(calculateMaxYAxisAndStepSize(resourceUsageHistory.disk.readAndWrite.inGiB, 1, 1), ' GiB')"
+              :width="1024"
+              :height="250"
+            />
+          </a-col>
+        </a-row>
+      </div>
+      <div v-else>
+        <a-alert :message="$t('message.no.data.to.show.for.period')" banner />
+      </div>
+    </div>
+    <a-spin v-else></a-spin>
+  </div>
+</template>
+<script>
+import { api } from '@/api'
+import moment from 'moment'
+import 'chartjs-adapter-moment'
+import FilterStats from './stats/FilterStats'
+import ResourceStatsInfo from './stats/ResourceStatsInfo'
+import LineChart from './chart/LineChart'
+
+export default {
+  props: {
+    resource: {
+      type: Object,
+      required: true
+    }
+  },
+  components: {
+    FilterStats,
+    ResourceStatsInfo,
+    LineChart
+  },
+  data () {
+    return {
+      resourceTypeToShowInfo: null,
+      showResourceInfoModal: false,
+      resourceInfoModalTitle: null,
+      loaded: false,
+      showCpuInfo: false,
+      showFilterStatsModal: false,
+      endDate: new Date(),
+      startDate: new Date().setHours(new Date().getHours() - 1),
+      formatedPeriod: null,
+      selectedMemoryChartType: 0,
+      selectedMemoryUsageType: 0,
+      memoryChartTypes: [this.$t('label.raw.data'), this.$t('label.percentage')],
+      memoryUsageTypes: [this.$t('label.used'), this.$t('label.free')],
+      selectedMemoryUnitOfMeasurement: 'GB',
+      memoryUnitsOfMeasurement: ['MB', 'GB'],
+      selectedNetworkUnitOfMeasurement: 'MiB',
+      networkUnitsOfMeasurement: ['KiB', 'MiB', 'GiB'],
+      selectedDiskChartType: 0,
+      diskChartTypes: ['IOPS', this.$t('label.read.and.write')],
+      selectedDiskUnitOfMeasurement: 'KiB',
+      diskUnitsOfMeasurement: ['KiB', 'MiB', 'GiB'],
+      chartLabels: [],
+      resourceUsageHistory: {
+        cpu: [],
+        memory: {
+          percentage: {
+            free: [],
+            used: []
+          },
+          rawData: {
+            free: {
+              inMB: [],
+              inGB: []
+            },
+            used: {
+              inMB: [],
+              inGB: []
+            }
+          }
+        },
+        network: {
+          inKiB: [],
+          inMiB: [],
+          inGiB: []
+        },
+        disk: {
+          iops: [],
+          readAndWrite: {
+            inKiB: [],
+            inMiB: [],
+            inGiB: []
+          }
+        }
+      }
+    }
+  },
+  mounted () {
+    this.fetchData()
+  },
+  watch: {
+    resource: function (newItem) {
+      if (!newItem || !newItem.id) {
+        return
+      }
+      this.fetchData()
+    }
+  },
+  methods: {
+    openFilter () {
+      this.showFilterStatsModal = true
+    },
+    onClickShowResourceInfoModal (resource) {
+      switch (resource) {
+        case 'CPU':
+          this.resourceInfoModalTitle = this.$t('label.cpu.usage.info')
+          break
+        case 'MEM':
+          this.resourceInfoModalTitle = this.$t('label.memory.usage.info')
+          break
+        case 'NET':
+          this.resourceInfoModalTitle = this.$t('label.network.usage.info')
+          break
+        case 'DISK':
+          this.resourceInfoModalTitle = this.$t('label.disk.usage.info')
+          break
+      }
+      this.resourceTypeToShowInfo = resource
+      this.showResourceInfoModal = true
+    },
+    handleSubmit (values) {
+      this.startDate = values.startDate
+      this.endDate = values.endDate
+      this.showFilterStatsModal = false
+      this.fetchData()
+    },
+    closeAction () {
+      this.showFilterStatsModal = false
+    },
+    fetchData () {
+      this.loaded = false
+      this.showResourceInfoModal = false
+      this.formatPeriod()
+      var params = { id: this.resource.id }
+      if (this.startDate) {
+        params.startDate = moment(this.startDate).format('YYYY-MM-DD HH:mm:ss')
+      }
+      if (this.endDate) {
+        params.endDate = moment(this.endDate).format('YYYY-MM-DD HH:mm:ss')
+      }
+      api('listVirtualMachinesUsageHistory', params).then(response => {
+        this.handleStatsResponse(response)
+      }).catch(error => {
+        this.$notifyError(error)
+      })
+    },
+    formatPeriod () {
+      var formatedStartDate = null
+      var formatedEndDate = null
+      if (this.startDate) {
+        formatedStartDate = moment(this.startDate).format('MMM DD, YYYY') + ' at ' + moment(this.startDate).format('HH:mm:ss')
+      }
+      if (this.endDate) {
+        formatedEndDate = moment(this.endDate).format('MMM DD, YYYY') + ' at ' + moment(this.endDate).format('HH:mm:ss')
+      }
+      if (formatedStartDate && formatedEndDate) {
+        this.formatedPeriod = ' ' + this.$t('label.vm.stats.filter.period', { startDate: formatedStartDate, endDate: formatedEndDate })
+      } else if (formatedStartDate && !formatedEndDate) {
+        this.formatedPeriod = ' ' + this.$t('label.vm.stats.filter.starting', { startDate: formatedStartDate })
+      } else if (!formatedStartDate && formatedEndDate) {
+        this.formatedPeriod = ' ' + this.$t('label.vm.stats.filter.up.to', { endDate: formatedEndDate })
+      } else {
+        this.formatedPeriod = ' <b>' + this.$t('label.all.available.data') + '</b>'
+      }
+    },
+    handleStatsResponse (responseData) {
+      this.resetData()
+      const vm = responseData.listvirtualmachinesusagehistoryresponse.virtualmachine
+
+      const chartPointRadius = this.getChartPointRadius(vm[0].stats.length)
+
+      const blue = '#166ab7'
+      const green = '#389357'
+      const blueInRgba = 'rgba(24, 144, 255, 0.5)'
+      const greenInRgba = 'rgba(59, 198, 133, 0.65)'
+      const red = '#ff4d4f'
+      const redInRgba = 'rgb(255, 77, 79, 0.65)'
+
+      const cpuLine = { label: 'CPU', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const memFreeLinePercent = { label: this.$t('label.memory.free'), backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const memUsedLinePercent = { label: this.$t('label.memory.used'), backgroundColor: redInRgba, borderColor: red, data: [], pointRadius: chartPointRadius }
+      const memAllocatedLineInMB = { label: this.$t('label.memoryallocated'), backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const memFreeLineInMB = { label: this.$t('label.memory.free'), backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const memUsedLineInMB = { label: this.$t('label.memory.used'), backgroundColor: redInRgba, borderColor: red, data: [], pointRadius: chartPointRadius }
+      const memAllocatedLineInGB = { label: this.$t('label.memoryallocated'), backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const memFreeLineInGB = { label: this.$t('label.memory.free'), backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const memUsedLineInGB = { label: this.$t('label.memory.used'), backgroundColor: redInRgba, borderColor: red, data: [], pointRadius: chartPointRadius }
+      const netDownloadLineInKiB = { label: 'Download', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const netUploadLineInKiB = { label: 'Upload', backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const netDownloadLineInMiB = { label: 'Download', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const netUploadLineInMiB = { label: 'Upload', backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const netDownloadLineInGiB = { label: 'Download', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const netUploadLineInGiB = { label: 'Upload', backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const diskReadLineInKiB = { label: 'Read', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const diskWriteLineInKiB = { label: 'Write', backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const diskReadLineInMiB = { label: 'Read', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const diskWriteLineInMiB = { label: 'Write', backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const diskReadLineInGiB = { label: 'Read', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+      const diskWriteLineInGiB = { label: 'Write', backgroundColor: greenInRgba, borderColor: green, data: [], pointRadius: chartPointRadius }
+      const diskIopsLine = { label: 'IOPS', backgroundColor: blueInRgba, borderColor: blue, data: [], pointRadius: chartPointRadius }
+
+      for (const element of vm[0].stats) {
+        const currentLabel = element.timestamp.split('T')[0] + ' ' + element.timestamp.split('T')[1].split('-')[0]
+        this.chartLabels.push(currentLabel)
+
+        cpuLine.data.push({ timestamp: currentLabel, stat: element.cpuused.split('%')[0] })
+
+        element.memoryusedkbs = element.memorykbs - element.memoryintfreekbs
+        memFreeLinePercent.data.push({ timestamp: currentLabel, stat: this.calculateMemoryPercentage(false, element.memorykbs, element.memoryintfreekbs) })
+        memUsedLinePercent.data.push({ timestamp: currentLabel, stat: this.calculateMemoryPercentage(true, element.memorykbs, element.memoryintfreekbs) })
+        memAllocatedLineInMB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.memorykbs, 1) })
+        memFreeLineInMB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.memoryintfreekbs, 1) })
+        memUsedLineInMB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.memoryusedkbs, 1) })
+        memAllocatedLineInGB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.memorykbs, 2) })
+        memFreeLineInGB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.memoryintfreekbs, 2) })
+        memUsedLineInGB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.memoryusedkbs, 2) })
+
+        netDownloadLineInKiB.data.push({ timestamp: currentLabel, stat: element.networkkbsread })
+        netUploadLineInKiB.data.push({ timestamp: currentLabel, stat: element.networkkbswrite })
+        netDownloadLineInMiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.networkkbsread, 1) })
+        netUploadLineInMiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.networkkbswrite, 1) })
+        netDownloadLineInGiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.networkkbsread, 2) })
+        netUploadLineInGiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.networkkbswrite, 2) })
+
+        diskReadLineInKiB.data.push({ timestamp: currentLabel, stat: element.diskkbsread })
+        diskWriteLineInKiB.data.push({ timestamp: currentLabel, stat: element.diskkbswrite })
+        diskReadLineInMiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.diskkbsread, 1) })
+        diskWriteLineInMiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.diskkbswrite, 1) })
+        diskReadLineInGiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.diskkbsread, 2) })
+        diskWriteLineInGiB.data.push({ timestamp: currentLabel, stat: this.convertByteBasedUnitOfMeasure(element.diskkbswrite, 2) })
+        diskIopsLine.data.push({ timestamp: currentLabel, stat: element.diskiopstotal })
+      }
+
+      this.resourceUsageHistory.cpu.push(cpuLine)
+
+      this.resourceUsageHistory.memory.percentage.free.push(memFreeLinePercent)
+      this.resourceUsageHistory.memory.percentage.used.push(memUsedLinePercent)
+      this.resourceUsageHistory.memory.rawData.free.inMB.push(memFreeLineInMB)
+      this.resourceUsageHistory.memory.rawData.free.inMB.push(memAllocatedLineInMB)
+      this.resourceUsageHistory.memory.rawData.used.inMB.push(memUsedLineInMB)
+      this.resourceUsageHistory.memory.rawData.used.inMB.push(memAllocatedLineInMB)
+      this.resourceUsageHistory.memory.rawData.free.inGB.push(memFreeLineInGB)
+      this.resourceUsageHistory.memory.rawData.free.inGB.push(memAllocatedLineInGB)
+      this.resourceUsageHistory.memory.rawData.used.inGB.push(memUsedLineInGB)
+      this.resourceUsageHistory.memory.rawData.used.inGB.push(memAllocatedLineInGB)
+
+      this.resourceUsageHistory.network.inKiB.push(netDownloadLineInKiB)
+      this.resourceUsageHistory.network.inKiB.push(netUploadLineInKiB)
+      this.resourceUsageHistory.network.inMiB.push(netDownloadLineInMiB)
+      this.resourceUsageHistory.network.inMiB.push(netUploadLineInMiB)
+      this.resourceUsageHistory.network.inGiB.push(netDownloadLineInGiB)
+      this.resourceUsageHistory.network.inGiB.push(netUploadLineInGiB)
+
+      this.resourceUsageHistory.disk.readAndWrite.inKiB.push(diskReadLineInKiB)
+      this.resourceUsageHistory.disk.readAndWrite.inKiB.push(diskWriteLineInKiB)
+      this.resourceUsageHistory.disk.readAndWrite.inMiB.push(diskReadLineInMiB)
+      this.resourceUsageHistory.disk.readAndWrite.inMiB.push(diskWriteLineInMiB)
+      this.resourceUsageHistory.disk.readAndWrite.inGiB.push(diskReadLineInGiB)
+      this.resourceUsageHistory.disk.readAndWrite.inGiB.push(diskWriteLineInGiB)
+      this.resourceUsageHistory.disk.iops.push(diskIopsLine)
+
+      this.loaded = true
+    },
+    /**
+     * Calculates the ideal chart points radius based on the number of data points and the screen width.
+     * @param numberOfDataPoints the number of data points.
+     * @returns the ideal chart points radius (which is the size of the points on the chart).
+     */
+    getChartPointRadius (numberOfDataPoints) {
+      const maxSizeLimit = 3
+      const minSizeLimit = 2
+      const minSize = 0.1 // the smallest value that allows to render the point in the chart
+      const result = (screen.width * 0.04) / numberOfDataPoints
+      if (result > maxSizeLimit) {
+        return maxSizeLimit
+      } else if (result < minSizeLimit) {
+        return minSize
+      }
+      return parseFloat(result).toFixed(2)
+    },
+    /**
+     * Converts a value (Byte-based) from an unit to other one. For example: from Byte to KiB; from GiB to MiB; etc.
+     * To use it consider the following sequence: Byte -> KiB -> MiB -> GiB ...
+     * So, from Byte to MiB there are 2 steps, while from MiB to Byte there are -2 steps.
+     * @param value the value to be converted.
+     * @param step the number of steps between Byte-based units of measure.
+     * @returns the converted value.
+     */
+    convertByteBasedUnitOfMeasure (value, step) {
+      if (value === 0) {
+        return 0.00
+      }
+      if (step === 0) {
+        return value
+      }
+      if (step > 0) {
+        return parseFloat(value / (Math.pow(1024, step))).toFixed(2)
+      }
+      return parseFloat(value * (Math.pow(1024, Math.abs(step)))).toFixed(2)
+    },
+    resetData () {
+      this.chartLabels = []
+      this.resourceUsageHistory.cpu = []
+      this.resourceUsageHistory.memory.percentage.free = []
+      this.resourceUsageHistory.memory.percentage.used = []
+      this.resourceUsageHistory.memory.rawData.free.inMB = []
+      this.resourceUsageHistory.memory.rawData.free.inGB = []
+      this.resourceUsageHistory.memory.rawData.used.inMB = []
+      this.resourceUsageHistory.memory.rawData.used.inGB = []
+      this.resourceUsageHistory.network.inKiB = []
+      this.resourceUsageHistory.network.inMiB = []
+      this.resourceUsageHistory.network.inGiB = []
+      this.resourceUsageHistory.disk.iops = []
+      this.resourceUsageHistory.disk.readAndWrite.inKiB = []
+      this.resourceUsageHistory.disk.readAndWrite.inMiB = []
+      this.resourceUsageHistory.disk.readAndWrite.inGiB = []
+    },
+    /**
+     * Calculates the memory percentage.
+     * @param isUsed "true" if the memory used percentage should be returned, "false" if the free memory percentage should be returned.
+     * @param memoryTotalInKB the memory total (in KB).
+     * @param memoryFreeInKB the memory free (in KB).
+     * @returns the percentage of used/free memory.
+     */
+    calculateMemoryPercentage (isUsed, memoryTotalInKB, memoryFreeInKB) {
+      var percentage = -1
+      if (memoryTotalInKB != null && memoryFreeInKB != null) {
+        if (isUsed) {
+          percentage = parseFloat(100.0 * (memoryTotalInKB - memoryFreeInKB) / memoryTotalInKB).toFixed(2)
+          return percentage

Review Comment:
   ```suggestion
             return parseFloat(100.0 * (memoryTotalInKB - memoryFreeInKB) / memoryTotalInKB).toFixed(2)
   ```



-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] github-actions[bot] commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1168701463

   This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] rohityadavcloud commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
rohityadavcloud commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1217684840

   ping @joseflauzino are you able to address the comment - I think we're very close to merging this.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] rohityadavcloud commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
rohityadavcloud commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1181291415

   ping @joseflauzino can you fix the conflicts.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] joseflauzino commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
joseflauzino commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1205247188

   Thanks for the tests and review, @shwstppr .
   
   I'll test your suggestions soon.
   
   About the possible improvements you commented on:
   
   > default time period could be used the current time minus stats retention time. This is just my opinion. It will give better UX as user will see some stats when view is opened first.
   
   Depending on the data retention settings and the amount of VM instances in the cloud, using the current time minus the retention time can bring in a massive amount of data. So the delay in loading the VM stats could be very large when accessing this view. The idea of filtering by the last hour of available data when accessing this view is safer for this initial version. Maybe in the future, we can think of something more elaborate based on feedback from ACS users.
   
   > Something for future maybe, functionality could be extended to other system vms and VRs as well. Or maybe other resources too.
   
   I think so too! In the future it would be nice to have this for system VMs and other cloud resources.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] shwstppr commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
shwstppr commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1207942837

   @blueorangutan package


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1208206983

   UI build: :heavy_check_mark:
   Live QA URL: http://qa.cloudstack.cloud:8080/client/pr/6401 (SL-JID-2106)


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1194023713

   Packaging result: :heavy_check_mark: el7 :heavy_check_mark: el8 :heavy_check_mark: debian :heavy_check_mark: suse15. SL-JID 3824


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] acs-robot commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
acs-robot commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1164458338

   Found UI changes, kicking a new UI QA build
   @blueorangutan ui


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1195293292

   @shwstppr a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1208200436

   @acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] joseflauzino commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
joseflauzino commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1208203849

   @shwstppr 
   
   > 1. While filtering stats, API is called with hidden fields. eg: First filter using start, end dates Then select All data. Check API call, it still contains start/enddate param even though they are hidden in UI.
   
   Good point. I fixed this bug now.
   
   > 2. Time in filter UI is shown in the local timezone and the same is used in the API call without any timezone. Does listVirtualMachinesUsageHistory API convert it to server time? I guess not and it won't list stats correctly in many cases
   
   The timestamps come in server timezone, but the `listVirtualMachinesUsageHistory` API does not do a conversion or anything like that. In fact, the API receives the date fields without timezone. But the reason for this goes beyond the API itself:
   
   Currently, the backend only supports dates in the `yyy-MM-dd` or `yyy-MM-dd HH:mm:ss` format, so there is no way to pass dates with timezone to the APIs (the related code is in the ParamProcessWorker class).
   I think it would be interesting to implement support for timezone date objects in the ACS APIs. However, this is beyond the scope of this PR, so my suggestion is to map this to another issue.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1207276984

   @acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] acs-robot commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
acs-robot commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1164488511

   Found UI changes, kicking a new UI QA build
   @blueorangutan ui


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] sonarcloud[bot] commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
sonarcloud[bot] commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1164531974

   Kudos, SonarCloud Quality Gate passed!&nbsp; &nbsp; [![Quality Gate passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/passed-16px.png 'Quality Gate passed')](https://sonarcloud.io/dashboard?id=apache_cloudstack&pullRequest=6401)
   
   [![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG)  
   [![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY)  
   [![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT)  
   [![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL)
   
   [![No Coverage information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo-16px.png 'No Coverage information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=coverage&view=list) No Coverage information  
   [![No Duplication information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/NoDuplicationInfo-16px.png 'No Duplication information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=duplicated_lines_density&view=list) No Duplication information
   
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] DaanHoogland commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
DaanHoogland commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1133036240

   @blueorangutan package


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1133088961

   Packaging result: :heavy_check_mark: el7 :heavy_check_mark: el8 :heavy_check_mark: debian :heavy_check_mark: suse15. SL-JID 3459


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] DaanHoogland commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
DaanHoogland commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1134277840

   @joseflauzino, two minor points
   1. I build and deployed the code from this PR but don´t get any data from this weekend, dispite deploying some VMs in the nested env on saterday: This is because the default value for `vm.stats.max.retention.time` is 1. Does it make sense to set it for instance to 5, so there is always something to see?
   2. when refreshing the default tab is displayed again and after re-opening the statistics tab the configurations (`all data`or a `start date`/`end date` pair) are reset/forgotten.
   
   in general tests good and looks good,
   nice thanks


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1132803908

   UI build: :heavy_check_mark:
   Live QA URL: http://qa.cloudstack.cloud:8080/client/pr/6401 (SL-JID-1605)


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] joseflauzino commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
joseflauzino commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1146304435

   @DaanHoogland I have just committed a change that applies your suggestion related to the submit button text.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1164498348

   UI build: :heavy_check_mark:
   Live QA URL: http://qa.cloudstack.cloud:8080/client/pr/6401 (SL-JID-1827)


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] rohityadavcloud commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
rohityadavcloud commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1207994946

   @blueorangutan test matrix


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] shwstppr commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
shwstppr commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1201037262

   @DaanHoogland yes, still testing. Hoping to post my review by tomorrow or day after.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] shwstppr commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
shwstppr commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1227666037

   @blueorangutan package


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] DaanHoogland merged pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
DaanHoogland merged PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1133037042

   @DaanHoogland a Jenkins job has been kicked to build packages. It will be bundled with  KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] rohityadavcloud commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
rohityadavcloud commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1175867056

   @joseflauzino can you fix the conflicts.
   
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] rohityadavcloud commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
rohityadavcloud commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1230565856

   Good stuff @joseflauzino !


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] acs-robot commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
acs-robot commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1207935690

   Found UI changes, kicking a new UI QA build
   @blueorangutan ui


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] acs-robot commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
acs-robot commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1208199904

   Found UI changes, kicking a new UI QA build
   @blueorangutan ui


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] shwstppr commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
shwstppr commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1193985927

   @blueorangutan package


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] shwstppr commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
shwstppr commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1212723559

   @joseflauzino maybe the reverse of how we convert server time into local time, https://github.com/apache/cloudstack/blob/main/ui/src/utils/plugins.js#L294-L301
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] shwstppr commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
shwstppr commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1208990027

   @joseflauzino sorry if I didn't explain myself better. I'm not saying API should accept timezone but maybe we can call API with timezone that the server expects. My issue currently is,
   
   - In UI, I'm using IST timezone (UTC+0530)
   - Server is storing stats with UTC timezone, API returns the times with the same.
   - I deploy a VM at 1000hr IST. Server starts collecting/storing stats for the VM but they are stored with time starting 0430hr UTC
   - Now in UI at 1100hr IST I want to see stats. UI allows me to filter stats between 1000-1100hr IST. When I make this selection I see nothing because API is called with something like `startDate=2022-08-09+10:00:00&endDate=2022-08-09+11:00:00`.
   - As the server is behind by 0530h. I'll never see stats for the current time. But if I call API with all available data it will show the stats.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] DaanHoogland commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
DaanHoogland commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1134968723

   @joseflauzino
   Ad 1. Ok makes sense
   Ad 2. Makes sense as well, can we then in this situation change the text on the button or add a note next to it instructing like wise?


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] acs-robot commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
acs-robot commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1146294509

   Found UI changes, kicking a new UI QA build
   @blueorangutan ui


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] nvazquez commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
nvazquez commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1133042901

   Wow - looks very nice @joseflauzino thanks!


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1133536904

   <b>Trillian test result (tid-4223)</b>
   Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
   Total time taken: 41093 seconds
   Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr6401-t4223-kvm-centos7.zip
   Smoke tests completed. 97 look OK, 0 have errors
   Only failed tests results shown below:
   
   
   Test | Result | Time (s) | Test File
   --- | --- | --- | ---
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] codecov[bot] commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
codecov[bot] commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1227339583

   # [Codecov](https://codecov.io/gh/apache/cloudstack/pull/6401?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) Report
   > Merging [#6401](https://codecov.io/gh/apache/cloudstack/pull/6401?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) (889ea8d) into [main](https://codecov.io/gh/apache/cloudstack/commit/f76b6c686d618c7c99364b3005d924c8a85e3a70?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) (f76b6c6) will **not change** coverage.
   > The diff coverage is `n/a`.
   
   ```diff
   @@            Coverage Diff            @@
   ##               main    #6401   +/-   ##
   =========================================
     Coverage      5.87%    5.87%           
     Complexity     3934     3934           
   =========================================
     Files          2454     2454           
     Lines        242682   242682           
     Branches      37980    37980           
   =========================================
     Hits          14261    14261           
     Misses       226842   226842           
     Partials       1579     1579           
   ```
   
   
   
   :mega: We’re building smart automated test selection to slash your CI/CD build times. [Learn more](https://about.codecov.io/iterative-testing/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation)
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1227700351

   Packaging result: :heavy_check_mark: el7 :heavy_check_mark: el8 :heavy_check_mark: debian :heavy_check_mark: suse15. SL-JID 4061


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1207941872

   UI build: :heavy_check_mark:
   Live QA URL: http://qa.cloudstack.cloud:8080/client/pr/6401 (SL-JID-2103)


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1164460891

   UI build: :heavy_multiplication_x:
    (SL-JID-1826)


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] sonarcloud[bot] commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
sonarcloud[bot] commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1164566689

   Kudos, SonarCloud Quality Gate passed!&nbsp; &nbsp; [![Quality Gate passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/passed-16px.png 'Quality Gate passed')](https://sonarcloud.io/dashboard?id=apache_cloudstack&pullRequest=6401)
   
   [![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG)  
   [![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY)  
   [![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT)  
   [![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL)
   
   [![No Coverage information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo-16px.png 'No Coverage information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=coverage&view=list) No Coverage information  
   [![No Duplication information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/NoDuplicationInfo-16px.png 'No Duplication information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=duplicated_lines_density&view=list) No Duplication information
   
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] DaanHoogland commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
DaanHoogland commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1201009356

   @shwstppr are you still testing this or is it ready for merge?


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] rohityadavcloud commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
rohityadavcloud commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1169632831

   @joseflauzino can you fix the conflicts.
   
   Asking @Pearl1594 @vladimirpetrov @borisstoyanov - if we can have a round of review/testing this PR. Thanks. cc @shwstppr 


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] harikrishna-patnala commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
harikrishna-patnala commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1181981483

   Thanks @GutoVeronezi, in that case listVirtualMachinesMetrics API should not be deprecated right! I see it has marked as depreacted in that PR.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] rohityadavcloud commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
rohityadavcloud commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1183039590

   I think @joseflauzino the author must comment if there is/was a good reason to deprecate the API in his backend PR/feature. If there is then no need to track it in another issue/PR if no further work is needed.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] rohityadavcloud commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
rohityadavcloud commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1133041076

   Looks fantastic, looking forward to reviewing/testing this.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1164458997

   @acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] github-actions[bot] commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1164457764

   This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1164489841

   @acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1207981224

   Packaging result: :heavy_check_mark: el7 :heavy_check_mark: el8 :heavy_check_mark: debian :heavy_check_mark: suse15. SL-JID 3939


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1207943465

   @shwstppr a Jenkins job has been kicked to build packages. It will be bundled with  KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] sonarcloud[bot] commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
sonarcloud[bot] commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1208263255

   Kudos, SonarCloud Quality Gate passed!&nbsp; &nbsp; [![Quality Gate passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/passed-16px.png 'Quality Gate passed')](https://sonarcloud.io/dashboard?id=apache_cloudstack&pullRequest=6401)
   
   [![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG)  
   [![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY)  
   [![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT)  
   [![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL)
   
   [![No Coverage information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo-16px.png 'No Coverage information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=coverage&view=list) No Coverage information  
   [![No Duplication information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/NoDuplicationInfo-16px.png 'No Duplication information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=duplicated_lines_density&view=list) No Duplication information
   
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1196014308

   <b>Trillian test result (tid-4545)</b>
   Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
   Total time taken: 39888 seconds
   Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr6401-t4545-kvm-centos7.zip
   Smoke tests completed. 82 look OK, 18 have errors
   Only failed tests results shown below:
   
   
   Test | Result | Time (s) | Test File
   --- | --- | --- | ---
   test_01_deployVMInSharedNetwork | `Error` | 63.31 | test_network.py
   test_03_destroySharedNetwork | `Failure` | 1.08 | test_network.py
   ContextSuite context=TestSharedNetwork>:teardown | `Error` | 2.23 | test_network.py
   test_01_ISO_usage | `Error` | 1.09 | test_usage.py
   test_01_lb_usage | `Error` | 3.17 | test_usage.py
   test_01_nat_usage | `Error` | 6.36 | test_usage.py
   test_01_public_ip_usage | `Error` | 1.07 | test_usage.py
   test_01_snapshot_usage | `Error` | 37.23 | test_usage.py
   test_01_template_usage | `Error` | 17.64 | test_usage.py
   test_01_vm_usage | `Error` | 131.71 | test_usage.py
   test_01_volume_usage | `Error` | 125.42 | test_usage.py
   test_01_vpn_usage | `Error` | 8.39 | test_usage.py
   test_01_snapshot_root_disk | `Error` | 3.28 | test_snapshots.py
   test_query_async_job_result | `Error` | 80.94 | test_async_job.py
   test_revoke_certificate | `Error` | 0.02 | test_certauthority_root.py
   test_02_edit_primary_storage_tags | `Error` | 0.01 | test_primary_storage.py
   test_role_account_acls_multiple_mgmt_servers | `Error` | 1.93 | test_dynamicroles.py
   login_test_saml_user | `Error` | 2.45 | test_login.py
   test_01_positive_tests_usage | `Error` | 8.10 | test_usage_events.py
   test_01_vpc_privategw_acl | `Error` | 99.39 | test_privategw_acl.py
   test_02_vpc_privategw_static_routes | `Error` | 287.85 | test_privategw_acl.py
   test_03_vpc_privategw_restart_vpc_cleanup | `Error` | 287.12 | test_privategw_acl.py
   test_04_rvpc_privategw_static_routes | `Error` | 515.80 | test_privategw_acl.py
   test_01_vpc_privategw_acl | `Error` | 0.02 | test_privategw_acl_ovs_gre.py
   test_03_vpc_privategw_restart_vpc_cleanup | `Error` | 0.01 | test_privategw_acl_ovs_gre.py
   test_05_vpc_privategw_check_interface | `Error` | 0.01 | test_privategw_acl_ovs_gre.py
   test_oobm_issue_power_cycle | `Error` | 3.33 | test_outofbandmanagement_nestedplugin.py
   test_oobm_issue_power_off | `Error` | 3.42 | test_outofbandmanagement_nestedplugin.py
   test_oobm_issue_power_on | `Error` | 3.31 | test_outofbandmanagement_nestedplugin.py
   test_oobm_issue_power_reset | `Error` | 3.37 | test_outofbandmanagement_nestedplugin.py
   test_oobm_issue_power_soft | `Error` | 2.36 | test_outofbandmanagement_nestedplugin.py
   test_oobm_issue_power_status | `Error` | 2.31 | test_outofbandmanagement_nestedplugin.py
   test_01_invalid_upgrade_kubernetes_cluster | `Failure` | 191.38 | test_kubernetes_clusters.py
   test_02_upgrade_kubernetes_cluster | `Failure` | 181.92 | test_kubernetes_clusters.py
   test_03_deploy_and_scale_kubernetes_cluster | `Failure` | 0.05 | test_kubernetes_clusters.py
   test_04_autoscale_kubernetes_cluster | `Failure` | 0.04 | test_kubernetes_clusters.py
   test_05_basic_lifecycle_kubernetes_cluster | `Failure` | 0.04 | test_kubernetes_clusters.py
   test_06_delete_kubernetes_cluster | `Failure` | 0.04 | test_kubernetes_clusters.py
   test_07_deploy_kubernetes_ha_cluster | `Failure` | 0.04 | test_kubernetes_clusters.py
   test_08_upgrade_kubernetes_ha_cluster | `Failure` | 0.04 | test_kubernetes_clusters.py
   test_09_delete_kubernetes_ha_cluster | `Failure` | 0.04 | test_kubernetes_clusters.py
   ContextSuite context=TestKubernetesCluster>:teardown | `Error` | 82.49 | test_kubernetes_clusters.py
   test_01_add_delete_kubernetes_supported_version | `Error` | 0.27 | test_kubernetes_supported_versions.py
   test_configure_ha_provider_invalid | `Error` | 0.01 | test_hostha_simulator.py
   test_configure_ha_provider_valid | `Error` | 0.01 | test_hostha_simulator.py
   test_ha_configure_enabledisable_across_clusterzones | `Error` | 0.01 | test_hostha_simulator.py
   test_ha_disable_feature_invalid | `Error` | 0.01 | test_hostha_simulator.py
   test_ha_enable_feature_invalid | `Error` | 0.01 | test_hostha_simulator.py
   test_ha_list_providers | `Error` | 0.01 | test_hostha_simulator.py
   test_ha_multiple_mgmt_server_ownership | `Error` | 0.01 | test_hostha_simulator.py
   test_ha_verify_fsm_available | `Error` | 0.01 | test_hostha_simulator.py
   test_ha_verify_fsm_degraded | `Error` | 0.01 | test_hostha_simulator.py
   test_ha_verify_fsm_fenced | `Error` | 0.01 | test_hostha_simulator.py
   test_ha_verify_fsm_recovering | `Error` | 0.01 | test_hostha_simulator.py
   test_hostha_configure_default_driver | `Error` | 0.01 | test_hostha_simulator.py
   test_hostha_configure_invalid_provider | `Error` | 0.01 | test_hostha_simulator.py
   test_hostha_disable_feature_valid | `Error` | 0.01 | test_hostha_simulator.py
   test_hostha_enable_feature_valid | `Error` | 0.04 | test_hostha_simulator.py
   test_hostha_enable_feature_without_setting_provider | `Error` | 0.01 | test_hostha_simulator.py
   test_list_ha_for_host | `Error` | 0.01 | test_hostha_simulator.py
   test_list_ha_for_host_invalid | `Error` | 0.01 | test_hostha_simulator.py
   test_list_ha_for_host_valid | `Error` | 0.01 | test_hostha_simulator.py
   test_CreateTemplateWithDuplicateName | `Error` | 16.82 | test_templates.py
   test_01_register_template_direct_download_flag | `Error` | 0.10 | test_templates.py
   test_oobm_background_powerstate_sync | `Failure` | 20.58 | test_outofbandmanagement.py
   test_oobm_background_powerstate_sync | `Error` | 20.58 | test_outofbandmanagement.py
   test_oobm_configure_default_driver | `Error` | 0.07 | test_outofbandmanagement.py
   test_oobm_configure_invalid_driver | `Error` | 0.06 | test_outofbandmanagement.py
   test_oobm_disable_feature_invalid | `Error` | 0.07 | test_outofbandmanagement.py
   test_oobm_disable_feature_valid | `Error` | 1.18 | test_outofbandmanagement.py
   test_oobm_enable_feature_invalid | `Error` | 0.06 | test_outofbandmanagement.py
   test_oobm_enable_feature_valid | `Error` | 1.11 | test_outofbandmanagement.py
   test_oobm_enabledisable_across_clusterzones | `Error` | 9.80 | test_outofbandmanagement.py
   test_oobm_enabledisable_across_clusterzones | `Error` | 9.80 | test_outofbandmanagement.py
   test_oobm_issue_power_cycle | `Error` | 3.37 | test_outofbandmanagement.py
   test_oobm_issue_power_cycle | `Error` | 3.38 | test_outofbandmanagement.py
   test_oobm_issue_power_off | `Error` | 1.23 | test_outofbandmanagement.py
   test_oobm_issue_power_off | `Error` | 1.23 | test_outofbandmanagement.py
   test_oobm_issue_power_on | `Error` | 4.27 | test_outofbandmanagement.py
   test_oobm_issue_power_on | `Error` | 4.27 | test_outofbandmanagement.py
   test_oobm_issue_power_reset | `Error` | 4.31 | test_outofbandmanagement.py
   test_oobm_issue_power_reset | `Error` | 4.31 | test_outofbandmanagement.py
   test_oobm_issue_power_soft | `Error` | 4.34 | test_outofbandmanagement.py
   test_oobm_issue_power_soft | `Error` | 4.34 | test_outofbandmanagement.py
   test_oobm_issue_power_status | `Error` | 3.46 | test_outofbandmanagement.py
   test_oobm_issue_power_status | `Error` | 3.46 | test_outofbandmanagement.py
   test_oobm_multiple_mgmt_server_ownership | `Error` | 0.10 | test_outofbandmanagement.py
   test_oobm_multiple_mgmt_server_ownership | `Error` | 0.11 | test_outofbandmanagement.py
   test_oobm_zchange_password | `Error` | 1.21 | test_outofbandmanagement.py
   test_oobm_zchange_password | `Error` | 1.21 | test_outofbandmanagement.py
   test_disable_oobm_ha_state_ineligible | `Error` | 0.06 | test_hostha_kvm.py
   test_hostha_configure_default_driver | `Error` | 0.05 | test_hostha_kvm.py
   test_hostha_enable_ha_when_host_disabled | `Error` | 0.04 | test_hostha_kvm.py
   test_hostha_enable_ha_when_host_disconected | `Error` | 0.03 | test_hostha_kvm.py
   test_hostha_enable_ha_when_host_in_maintenance | `Error` | 0.04 | test_hostha_kvm.py
   test_hostha_kvm_host_degraded | `Error` | 0.04 | test_hostha_kvm.py
   test_hostha_kvm_host_fencing | `Error` | 0.03 | test_hostha_kvm.py
   test_hostha_kvm_host_recovering | `Error` | 0.03 | test_hostha_kvm.py
   test_remove_ha_provider_not_possible | `Error` | 0.03 | test_hostha_kvm.py
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] sonarcloud[bot] commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
sonarcloud[bot] commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1146332875

   Kudos, SonarCloud Quality Gate passed!&nbsp; &nbsp; [![Quality Gate passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/passed-16px.png 'Quality Gate passed')](https://sonarcloud.io/dashboard?id=apache_cloudstack&pullRequest=6401)
   
   [![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG)  
   [![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY)  
   [![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT)  
   [![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL)
   
   [![No Coverage information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo-16px.png 'No Coverage information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=coverage&view=list) No Coverage information  
   [![No Duplication information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/NoDuplicationInfo-16px.png 'No Duplication information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=duplicated_lines_density&view=list) No Duplication information
   
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1227264033

   @acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1227666647

   @shwstppr a Jenkins job has been kicked to build packages. It will be bundled with  KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] GutoVeronezi commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
GutoVeronezi commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1181695394

   > pasting the same question which is on the other PR:
   > 
   > Hi @joseflauzino - does the new API return the exact same API output format/keys as the deprecated listVirtualMachinesMetrics with the PR #5984?
   
   Hi, @harikrishna-patnala
   
   No, the APIs have different outputs. `listVirtualMachinesUsageHistory` retrieves just some VM information (`name`, `id`, `displayname`) and the stats history (an array with several stats objects, according to the period filtered and the configurations `vm.stats.interval` and `vm.stats.max.retention.time`), while `listVirtualMachinesMetrics` retrieves several VM fields and just the most recent stats data.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] harikrishna-patnala commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
harikrishna-patnala commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1181659625

   pasting the same question which is on the other PR:
   
   Hi @joseflauzino - does the new API return the exact same API output format/keys as the deprecated listVirtualMachinesMetrics with the PR https://github.com/apache/cloudstack/pull/5984?
   
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] joseflauzino commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
joseflauzino commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1183141321

   Hi all. Sorry for not answering, I'm away for these days for health reasons. But I will try to answer your questions as much as possible.
   
   @harikrishna-patnala and @rohityadavcloud, all the details regarding the changes made to PR #5984 are contained in spec #5935. Please refer to sections [1.3](https://github.com/apache/cloudstack/issues/5935#1-problem-description--13-current-api) and [3.3](https://github.com/apache/cloudstack/issues/5935#3-work-items--33-api) for more details on the changes regarding the `listVirtualMachinesMetrics` API. If needed, we can discuss this in another issue, as @GutoVeronezi  commented.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] DaanHoogland commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
DaanHoogland commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1148436927

   > @DaanHoogland I have just committed a change that applies your suggestion related to the submit button text.
   
   looks ok, I can imagine the novice won´t be clear on this, but letś go for 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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] github-actions[bot] commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
github-actions[bot] commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1164544947

   This pull request has merge conflicts. Dear author, please fix the conflicts and sync your branch with the base branch.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] sonarcloud[bot] commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
sonarcloud[bot] commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1132857197

   Kudos, SonarCloud Quality Gate passed!&nbsp; &nbsp; [![Quality Gate passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/passed-16px.png 'Quality Gate passed')](https://sonarcloud.io/dashboard?id=apache_cloudstack&pullRequest=6401)
   
   [![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG)  
   [![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY)  
   [![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT)  
   [![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL)
   
   [![No Coverage information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo-16px.png 'No Coverage information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=coverage&view=list) No Coverage information  
   [![No Duplication information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/NoDuplicationInfo-16px.png 'No Duplication information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=duplicated_lines_density&view=list) No Duplication information
   
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] DaanHoogland commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
DaanHoogland commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1133151561

   @blueorangutan test keepEnv


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] joseflauzino commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
joseflauzino commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1134935693

   @DaanHoogland thanks for your review and testing.
   
   >     1. I build and deployed the code from this PR but don´t get any data from this weekend, dispite deploying some VMs in the nested env on saterday: This is because the default value for `vm.stats.max.retention.time` is 1. Does it make sense to set it for instance to 5, so there is always something to see?
   
   Both `vm.stats.max.retention.time` and `vm.stats.interval` were set to 1 min by default on purpose (in PR #5984, not in the current PR). The reason is that it is common to find clouds with a considerable amount of VM instances (e.g. hundreds or even over 1k). So the amount of data generated even in a short 5 min period can be very large and the impact can also be large if it is not something planned by the cloud operators. So I think it is more prudent that we leave the default values of these parameters in a way that generates the minimum amount of data possible. It is then up to the cloud administrators/operators to decide whether or not to increase the amount of stats data to be kept in the database.
   
   
   >     2. when refreshing the default tab is displayed again and after re-opening the statistics tab the configurations (`all data`or a `start date`/`end date` pair) are reset/forgotten.
   
   This was also an intentional detail. The idea is to have the user open the filtering modal and click the OK button whenever they want to get updated data for the selected period. The reason is that during our tests there were several times when users clicked the refresh button and it looked like the data was not updated. But what happened was that the selected period was in the past, so the data would always be the same. The way it is now is that the user will always check the selected period before getting updated data. My intention is to leave it this way for now and according to the feedback we get from users we could think of other ways to improve the user experience.
   
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1132799693

   @acs-robot a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress.


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] acs-robot commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
acs-robot commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1132799324

   Found UI changes, kicking a new UI QA build
   @blueorangutan ui


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] GutoVeronezi commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
GutoVeronezi commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1182328821

   @harikrishna-patnala, as this PR only touches on the UI, the deprecation of the API `listVirtualMachinesMetrics` is related to another PR (#5984), which is already merged, and the deprecation or not of the API does not affect this PR, the discussion about the deprecation of the API `listVirtualMachinesMetrics` would not fit here. I think we should create an _issue_/ML to discuss the situation and move on from there. 


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] joseflauzino commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
joseflauzino commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1212063275

   @shwstppr 
   
   > ... maybe we can call API with timezone that the server expects.
   
   To do that, before calling the API, we would have to convert the client timezone (from the browser) to the management server timezone, right?
   
   In this case, my question is: in the UI context (on the client), how can we find out the management server timezone before calling the API?
   
   Is there a ready-made mechanism to do this? If there is, please let me know and then I will implement this timezone conversion.
   
   If not, I think we can address this in another issue and then implement this kind of timezone conversion in this and other views that do similar filtering (API calls passing date objects as parameters).


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] DaanHoogland closed pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
DaanHoogland closed pull request #6401: VM stats history visualization
URL: https://github.com/apache/cloudstack/pull/6401


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] blueorangutan commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
blueorangutan commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1227280105

   UI build: :heavy_check_mark:
   Live QA URL: http://qa.cloudstack.cloud:8080/client/pr/6401 (SL-JID-2225)


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] sonarcloud[bot] commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
sonarcloud[bot] commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1227330740

   Kudos, SonarCloud Quality Gate passed!&nbsp; &nbsp; [![Quality Gate passed](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/QualityGateBadge/passed-16px.png 'Quality Gate passed')](https://sonarcloud.io/dashboard?id=apache_cloudstack&pullRequest=6401)
   
   [![Bug](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/bug-16px.png 'Bug')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG) [0 Bugs](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=BUG)  
   [![Vulnerability](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/vulnerability-16px.png 'Vulnerability')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY) [0 Vulnerabilities](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=VULNERABILITY)  
   [![Security Hotspot](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/security_hotspot-16px.png 'Security Hotspot')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT) [0 Security Hotspots](https://sonarcloud.io/project/security_hotspots?id=apache_cloudstack&pullRequest=6401&resolved=false&types=SECURITY_HOTSPOT)  
   [![Code Smell](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/common/code_smell-16px.png 'Code Smell')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [![A](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/RatingBadge/A-16px.png 'A')](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL) [0 Code Smells](https://sonarcloud.io/project/issues?id=apache_cloudstack&pullRequest=6401&resolved=false&types=CODE_SMELL)
   
   [![No Coverage information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/CoverageChart/NoCoverageInfo-16px.png 'No Coverage information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=coverage&view=list) No Coverage information  
   [![No Duplication information](https://sonarsource.github.io/sonarcloud-github-static-resources/v2/checks/Duplications/NoDuplicationInfo-16px.png 'No Duplication information')](https://sonarcloud.io/component_measures?id=apache_cloudstack&pullRequest=6401&metric=duplicated_lines_density&view=list) No Duplication information
   
   


-- 
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-unsubscribe@cloudstack.apache.org

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


[GitHub] [cloudstack] acs-robot commented on pull request #6401: VM stats history visualization

Posted by GitBox <gi...@apache.org>.
acs-robot commented on PR #6401:
URL: https://github.com/apache/cloudstack/pull/6401#issuecomment-1227263743

   Found UI changes, kicking a new UI QA build
   @blueorangutan ui


-- 
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-unsubscribe@cloudstack.apache.org

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