[ 
https://issues.apache.org/jira/browse/CLOUDSTACK-8966?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15089479#comment-15089479
 ] 

ASF GitHub Bot commented on CLOUDSTACK-8966:
--------------------------------------------

Github user borisroman commented on the pull request:

    https://github.com/apache/cloudstack/pull/1314#issuecomment-170050753
  
    All integration tests look fine!
    
    ```
    Check the password file in the Router VM ... === TestName: 
test_isolate_network_password_server | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network ... 
=== TestName: test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Status : 
SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network and 
check default routes ... === TestName: test_02_redundant_VPC_default_routes | 
Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network ... 
=== TestName: 
test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Status : 
SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policy on RouterVM ... === TestName: 
test_02_routervm_iptables_policies | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policies on VPC router ... === 
TestName: test_01_single_VPC_iptables_policies | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: 
test_01_isolate_network_FW_PF_default_routes_egress_true | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: 
test_02_isolate_network_FW_PF_default_routes_egress_false | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: 
test_01_RVR_Network_FW_PF_SSH_default_routes_egress_true | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: 
test_02_RVR_Network_FW_PF_SSH_default_routes_egress_false | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: 
test_03_RVR_Network_check_router_state | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test nics 
after destroy ... === TestName: test_01_VPC_nics_after_destroy | Status : 
SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test default 
routes ... === TestName: test_02_VPC_default_routes | Status : SUCCESS ===
    ok
    Check that the /etc/dhcphosts.txt doesn't contain duplicate IPs ... === 
TestName: test_router_dhcphosts | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with source NAT ... === TestName: 
test_01_create_lb_rule_src_nat | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with non source NAT ... === TestName: 
test_02_create_lb_rule_non_nat | Status : SUCCESS ===
    ok
    Test for assign & removing load balancing rule ... === TestName: 
test_assign_and_removal_lb | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic 
to 3 vm's in a Single VPC ... === TestName: 
test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic 
to 3 vm's in a Redundant VPC ... === TestName: 
test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === 
TestName: test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Status : 
SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === 
TestName: test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Status : 
SUCCESS ===
    ok
    Test SSVM Internals ... === TestName: test_03_ssvm_internals | Status : 
SUCCESS ===
    ok
    Test CPVM Internals ... === TestName: test_04_cpvm_internals | Status : 
SUCCESS ===
    ok
    Test stop SSVM ... === TestName: test_05_stop_ssvm | Status : SUCCESS ===
    ok
    Test stop CPVM ... === TestName: test_06_stop_cpvm | Status : SUCCESS ===
    ok
    Test reboot SSVM ... === TestName: test_07_reboot_ssvm | Status : SUCCESS 
===
    ok
    Test reboot CPVM ... === TestName: test_08_reboot_cpvm | Status : SUCCESS 
===
    ok
    Test destroy SSVM ... === TestName: test_09_destroy_ssvm | Status : SUCCESS 
===
    ok
    Test destroy CPVM ... === TestName: test_10_destroy_cpvm | Status : SUCCESS 
===
    ok
    Test Remote Access VPN in VPC ... === TestName: test_vpc_remote_access_vpn 
| Status : SUCCESS ===
    ok
    Test VPN in VPC ... === TestName: test_vpc_site2site_vpn | Status : SUCCESS 
===
    ok
    test_01_vpc_privategw_acl 
(integration.smoke.test_privategw_acl.TestPrivateGwACL) ... === TestName: 
test_01_vpc_privategw_acl | Status : SUCCESS ===
    ok
    test_02_vpc_privategw_static_routes 
(integration.smoke.test_privategw_acl.TestPrivateGwACL) ... === TestName: 
test_02_vpc_privategw_static_routes | Status : SUCCESS ===
    ok
    test_03_rvpc_privategw_static_routes 
(integration.smoke.test_privategw_acl.TestPrivateGwACL) ... === TestName: 
test_03_rvpc_privategw_static_routes | Status : SUCCESS ===
    ok
    Test for port forwarding on source NAT ... === TestName: 
test_01_port_fwd_on_src_nat | Status : SUCCESS ===
    ok
    Test for port forwarding on non source NAT ... === TestName: 
test_02_port_fwd_on_non_src_nat | Status : SUCCESS ===
    ok
    Test for reboot router ... === TestName: test_reboot_router | Status : 
SUCCESS ===
    ok
    Test for Router rules for network rules on acquired public IP ... === 
TestName: test_network_rules_acquired_public_ip_1_static_nat_rule | Status : 
SUCCESS ===
    ok
    Test for Router rules for network rules on acquired public IP ... === 
TestName: test_network_rules_acquired_public_ip_2_nat_rule | Status : SUCCESS 
===
    ok
    Test for Router rules for network rules on acquired public IP ... === 
TestName: test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Status : 
SUCCESS ===
    ok
    
    ----------------------------------------------------------------------
    Ran 40 tests in 20023.514s
    ```
    ```
    Test router internal advanced zone ... === TestName: 
test_02_router_internal_adv | Status : SUCCESS ===
    ok
    Test restart network ... === TestName: test_03_restart_network_cleanup | 
Status : SUCCESS ===
    ok
    Test router basic setup ... === TestName: test_05_router_basic | Status : 
SUCCESS ===
    ok
    Test router advanced setup ... === TestName: test_06_router_advanced | 
Status : SUCCESS ===
    ok
    Test stop router ... === TestName: test_07_stop_router | Status : SUCCESS 
===
    ok
    Test start router ... === TestName: test_08_start_router | Status : SUCCESS 
===
    ok
    Test reboot router ... === TestName: test_09_reboot_router | Status : 
SUCCESS ===
    ok
    Test reset virtual machine on reboot ... === TestName: 
test_01_reset_vm_on_reboot | Status : SUCCESS ===
    ok
    Test advanced zone virtual router ... === TestName: 
test_advZoneVirtualRouter | Status : SUCCESS ===
    ok
    Test Deploy Virtual Machine ... === TestName: test_deploy_vm | Status : 
SUCCESS ===
    ok
    Test Multiple Deploy Virtual Machine ... === TestName: 
test_deploy_vm_multiple | Status : SUCCESS ===
    ok
    Test Stop Virtual Machine ... === TestName: test_01_stop_vm | Status : 
SUCCESS ===
    ok
    Test Start Virtual Machine ... === TestName: test_02_start_vm | Status : 
SUCCESS ===
    ok
    Test Reboot Virtual Machine ... === TestName: test_03_reboot_vm | Status : 
SUCCESS ===
    ok
    Test destroy Virtual Machine ... === TestName: test_06_destroy_vm | Status 
: SUCCESS ===
    ok
    Test recover Virtual Machine ... === TestName: test_07_restore_vm | Status 
: SUCCESS ===
    ok
    Test migrate VM ... === TestName: test_08_migrate_vm | Status : SUCCESS ===
    ok
    Test destroy(expunge) Virtual Machine ... === TestName: test_09_expunge_vm 
| Status : SUCCESS ===
    ok
    Test to create service offering ... === TestName: 
test_01_create_service_offering | Status : SUCCESS ===
    ok
    Test to update existing service offering ... === TestName: 
test_02_edit_service_offering | Status : SUCCESS ===
    ok
    Test to delete service offering ... === TestName: 
test_03_delete_service_offering | Status : SUCCESS ===
    ok
    Test for delete account ... === TestName: test_delete_account | Status : 
SUCCESS ===
    ok
    Test for Associate/Disassociate public IP address for admin account ... === 
TestName: test_public_ip_admin_account | Status : SUCCESS ===
    ok
    Test for Associate/Disassociate public IP address for user account ... === 
TestName: test_public_ip_user_account | Status : SUCCESS ===
    ok
    Test for release public IP address ... === TestName: test_releaseIP | 
Status : SUCCESS ===
    ok
    Test create VPC offering ... === TestName: test_01_create_vpc_offering | 
Status : SUCCESS ===
    ok
    Test VPC offering without load balancing service ... === TestName: 
test_03_vpc_off_without_lb | Status : SUCCESS ===
    ok
    Test VPC offering without static NAT service ... === TestName: 
test_04_vpc_off_without_static_nat | Status : SUCCESS ===
    ok
    Test VPC offering without port forwarding service ... === TestName: 
test_05_vpc_off_without_pf | Status : SUCCESS ===
    ok
    Test VPC offering with invalid services ... === TestName: 
test_06_vpc_off_invalid_services | Status : SUCCESS ===
    ok
    Test update VPC offering ... === TestName: test_07_update_vpc_off | Status 
: SUCCESS ===
    ok
    Test list VPC offering ... === TestName: test_08_list_vpc_off | Status : 
SUCCESS ===
    ok
    test_09_create_redundant_vpc_offering 
(integration.component.test_vpc_offerings.TestVPCOffering) ... === TestName: 
test_09_create_redundant_vpc_offering | Status : SUCCESS ===
    ok
    Test start/stop of router after addition of one guest network ... === 
TestName: test_01_start_stop_router_after_addition_of_one_guest_network | 
Status : SUCCESS ===
    ok
    Test reboot of router after addition of one guest network ... === TestName: 
test_02_reboot_router_after_addition_of_one_guest_network | Status : SUCCESS ===
    ok
    Test to change service offering of router after addition of one guest 
network ... === TestName: 
test_04_chg_srv_off_router_after_addition_of_one_guest_network | Status : 
SUCCESS ===
    ok
    Test destroy of router after addition of one guest network ... === 
TestName: test_05_destroy_router_after_addition_of_one_guest_network | Status : 
SUCCESS ===
    ok
    Test to stop and start router after creation of VPC ... === TestName: 
test_01_stop_start_router_after_creating_vpc | Status : SUCCESS ===
    ok
    Test to reboot the router after creating a VPC ... === TestName: 
test_02_reboot_router_after_creating_vpc | Status : SUCCESS ===
    ok
    Tests to change service offering of the Router after ... === TestName: 
test_04_change_service_offerring_vpc | Status : SUCCESS ===
    ok
    Test to destroy the router after creating a VPC ... === TestName: 
test_05_destroy_router_after_creating_vpc | Status : SUCCESS ===
    ok
    
    ----------------------------------------------------------------------
    Ran 41 tests in 7415.595s
    ```
    
    List capacity function also returns fine now!
    ```
    (local) 🐵 > list capacity sortby=usage type=0
    count = 1
    capacity:
    capacitytotal = 14597103616
    capacityused = 1610612736
    percentused = 11.03
    type = 0
    zoneid = aac0e3a3-33f1-43c8-9dd6-06733f13f421
    zonename = MCCT-SHARED-1
    ```
    
    LGTM :+1:


> listCapacity produces wrong result for CAPACITY_TYPE_MEMORY and 
> CAPACITY_TYPE_CPU
> ---------------------------------------------------------------------------------
>
>                 Key: CLOUDSTACK-8966
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-8966
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>          Components: API, Cloudmonkey, UI
>    Affects Versions: 4.3.1, 4.5.1, 4.5.2
>         Environment: CloudStack 4.5.1 
> MariaDB 10.0 and 10.1
>            Reporter: Francois Scheurer
>
> Dear CloudStack Contributors,
> listCapacity produces wrong result for CAPACITY_TYPE_MEMORY and 
> CAPACITY_TYPE_CPU when MariaDB is used instead of MySQL.
> More specifically,
> capacityused is correct.
> capacitytotal is incorrect (null).
> Example:
> (man02-test-admin) 🐵 > list capacity type=0 listall=true 
> count = 1
> capacity:
> capacitytotal = 0
> capacityused = 16106127360
> percentused = 0
> type = 0
> zoneid = e683eeaa-92c9-4651-91b9-165939f9000c
> zonename = ZH-EP-Z00
> (man02-test-admin) 🐵 > list capacity type=1 listall=true 
> count = 1
> capacity:
> capacitytotal = 0
> capacityused = 24500
> percentused = 0
> type = 1
> zoneid = e683eeaa-92c9-4651-91b9-165939f9000c
> zonename = ZH-EP-Z00
> (man02-test-admin) 🐵 > 
> Analysis:
> The issue is caused by an SQL Query that provide inconsistent result between 
> MySQL and MariaDB.
> cf.  
> http://fossies.org/dox/apache-cloudstack-4.5.2-src/CapacityDaoImpl_8java_source.html#l00418
> MariaDB [cloud]> --not working:
> MariaDB [cloud]> SELECT sum(capacity.used_capacity), 
>     ->     sum(capacity.reserved_capacity), 
>     ->     sum(total_capacity) * (select value from cloud.cluster_details 
> where cluster_details.name='memoryOvercommitRatio' AND 
> cluster_details.cluster_id=capacity.cluster_id),
>     ->     capacity.capacity_type,
>     ->     capacity.data_center_id, 
>     ->     pod_id, 
>     ->     cluster_id 
>     ->     FROM cloud.op_host_capacity capacity WHERE capacity_type=0 \G
> *************************** 1. row ***************************
>                                                                               
>                                                             
> sum(capacity.used_capacity): 16106127360
>                                                                               
>                                                         
> sum(capacity.reserved_capacity): 0
> sum(total_capacity) * (select value from cloud.cluster_details where 
> cluster_details.name='memoryOvercommitRatio' AND 
> cluster_details.cluster_id=capacity.cluster_id): NULL
>                                                                               
>                                                                           
> capacity_type: 0
>                                                                               
>                                                                          
> data_center_id: 2
>                                                                               
>                                                                               
>    pod_id: 1
>                                                                               
>                                                                              
> cluster_id: 1
> Possible fixes:
> MariaDB [cloud]> -- working, using a CAST:
> MariaDB [cloud]> SELECT sum(capacity.used_capacity), 
>     ->     sum(capacity.reserved_capacity), 
>     ->     sum(total_capacity) * CAST((select value from 
> cloud.cluster_details where cluster_details.name='memoryOvercommitRatio' AND 
> cluster_details.cluster_id=capacity.cluster_id) AS DECIMAL(10,4)), 
>     ->     capacity.capacity_type, 
>     ->     capacity.data_center_id, 
>     ->     pod_id, 
>     ->     cluster_id 
>     ->     FROM cloud.op_host_capacity capacity WHERE capacity_type=0 \G
> *************************** 1. row ***************************
>                                                                               
>                                                                               
>      sum(capacity.used_capacity): 16106127360
>                                                                               
>                                                                               
>  sum(capacity.reserved_capacity): 0
> sum(total_capacity) * CAST((select value from cloud.cluster_details where 
> cluster_details.name='memoryOvercommitRatio' AND 
> cluster_details.cluster_id=capacity.cluster_id) AS DECIMAL(10,4)): 
> 126858785280.0000
>                                                                               
>                                                                               
>                    capacity_type: 0
>                                                                               
>                                                                               
>                   data_center_id: 2
>                                                                               
>                                                                               
>                           pod_id: 1
>                                                                               
>                                                                               
>                       cluster_id: 1
> MariaDB [cloud]> -- working, using a aliases:
> MariaDB [cloud]> SELECT used_capacity, reserved_capacity, total_capacity * 
> value, capacity_type, data_center_id, pod_id, cluster_id 
>     ->     FROM ( SELECT sum(capacity.used_capacity) used_capacity, 
>     ->         sum(capacity.reserved_capacity) reserved_capacity, 
>     ->         sum(total_capacity) total_capacity,
>     ->         (select value from cloud.cluster_details where 
> cluster_details.name='memoryOvercommitRatio' AND 
> cluster_details.cluster_id=capacity.cluster_id) value, 
>     ->         capacity.capacity_type capacity_type, 
>     ->         capacity.data_center_id data_center_id, 
>     ->         pod_id pod_id,
>     ->         cluster_id cluster_id
>     ->         FROM cloud.op_host_capacity capacity WHERE capacity_type=0
>     ->         ) x \G
> *************************** 1. row ***************************
>          used_capacity: 16106127360
>      reserved_capacity: 0
> total_capacity * value: 126858785280
>          capacity_type: 0
>         data_center_id: 2
>                 pod_id: 1
>             cluster_id: 1
> IMHO the solution using aliases seems to be the cleanest way to fix the query.
> Thank you in advance and Best Regards,
> Francois Scheurer



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to