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

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

Github user remibergsma commented on the pull request:

    https://github.com/apache/cloudstack/pull/1222#issuecomment-164126939
  
    LGTM based on these tests:
    
    ```
    nosetests --with-marvin --marvin-config=${marvinCfg} -s -a 
tags=advanced,required_hardware=true \
    component/test_password_server.py \
    smoke/test_vpc_redundant.py \
    smoke/test_routers_iptables_default_policy.py \
    smoke/test_routers_network_ops.py \
    smoke/test_vpc_router_nics.py \
    smoke/test_router_dhcphosts.py \
    smoke/test_loadbalance.py \
    smoke/test_internal_lb.py \
    smoke/test_ssvm.py \
    smoke/test_vpc_vpn.py \
    smoke/test_privategw_acl.py \
    smoke/test_network.py
    ```
    
    Result:
    
    ```
    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 to verify access to loadbalancer haproxy admin stats page ... === 
TestName: test02_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS 
===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic 
to 3 vm's ... === TestName: test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 
| 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 38 tests in 21378.096s
    
    OK
    ```
    
    
    And:
    
    ```
    nosetests --with-marvin --marvin-config=${marvinCfg} -s -a 
tags=advanced,required_hardware=false \
    smoke/test_routers.py \
    smoke/test_network_acl.py \
    smoke/test_reset_vm_on_reboot.py \
    smoke/test_vm_life_cycle.py \
    smoke/test_service_offerings.py \
    smoke/test_network.py \
    component/test_vpc_offerings.py \
    component/test_vpc_routers.py
    ```
    
    Result:
    
    ```
    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 8923.743s
    
    OK
    
    ```
    
    After all these tests, all routers created had the HA bit set:
    
    ```
    MariaDB [cloud]> select name,ha_enabled from vm_instance where name like 
'r-%';
    +----------+------------+
    | name     | ha_enabled |
    +----------+------------+
    | r-4-VM   |          1 |
    | r-6-VM   |          1 |
    | r-7-VM   |          1 |
    | r-12-VM  |          1 |
    | r-13-VM  |          1 |
    | r-18-VM  |          1 |
    | r-19-VM  |          1 |
    | r-23-VM  |          1 |
    | r-24-VM  |          1 |
    | r-28-VM  |          1 |
    | r-30-VM  |          1 |
    | r-31-VM  |          1 |
    | r-32-VM  |          1 |
    | r-34-VM  |          1 |
    | r-35-VM  |          1 |
    | r-37-VM  |          1 |
    | r-38-VM  |          1 |
    | r-40-VM  |          1 |
    | r-44-VM  |          1 |
    | r-45-VM  |          1 |
    | r-49-VM  |          1 |
    | r-53-VM  |          1 |
    | r-56-VM  |          1 |
    | r-59-VM  |          1 |
    | r-67-VM  |          1 |
    | r-69-VM  |          1 |
    | r-70-VM  |          1 |
    | r-73-VM  |          1 |
    | r-74-VM  |          1 |
    | r-75-VM  |          1 |
    | r-78-VM  |          1 |
    | r-79-VM  |          1 |
    | r-80-VM  |          1 |
    | r-81-VM  |          1 |
    | r-85-VM  |          1 |
    | r-87-VM  |          1 |
    | r-89-VM  |          1 |
    | r-91-VM  |          1 |
    | r-92-VM  |          1 |
    | r-94-VM  |          1 |
    | r-96-VM  |          1 |
    | r-98-VM  |          1 |
    | r-101-VM |          1 |
    | r-106-VM |          1 |
    | r-108-VM |          1 |
    | r-110-VM |          1 |
    | r-111-VM |          1 |
    | r-113-VM |          1 |
    | r-115-VM |          1 |
    | r-117-VM |          1 |
    | r-118-VM |          1 |
    | r-119-VM |          1 |
    | r-120-VM |          1 |
    | r-124-VM |          1 |
    +----------+------------+
    54 rows in set (0.00 sec)
    ```


> As a Developer I want to have HA enabled for routers that are part or a 
> redundant network or VPC
> ------------------------------------------------------------------------------------------------
>
>                 Key: CLOUDSTACK-4374
>                 URL: https://issues.apache.org/jira/browse/CLOUDSTACK-4374
>             Project: CloudStack
>          Issue Type: Bug
>      Security Level: Public(Anyone can view this level - this is the 
> default.) 
>          Components: Virtual Router
>    Affects Versions: 4.1.0, 4.4.0, 4.5.0, 4.6.0, 4.6.1
>            Reporter: Roeland Kuipers
>            Assignee: Wilder Rodrigues
>             Fix For: 4.7.0
>
>
> We provide redundant routers with HA functionality through a special service 
> offering.
> However these router pairs are provisioned with ha_enabled=0, so when one or 
> both of them fail they will never be restarted by CS. 
> 2013-08-16 15:51:16,101 DEBUG [cloud.ha.HighAvailabilityManagerImpl] 
> (HA-Worker-0:work-4335) VM is not HA enabled so we're done.
> This is currently hardcoded in VirtualNetworkApplianceManagerImpl.java @ 1633
>    boolean offerHA = routerOffering.getOfferHA();
>                 /* We don't provide HA to redundant router VMs, admin should 
> own it all, and redundant router themselves are HA */
>                 if (isRedundant) {
>                     offerHA = false;
>                 }
> We like redundancy and like to have HA on our redundant routers. We like to 
> configure this ourselves through service offerings and do not like being helt 
> hostage by these lines of codes:) We do like to own it all in our admin role 
> :)
> Besides this, this is also very counter-intuitive as we were expecting HA on 
> our redundant routers, since it was configured on their service offering.
> So can we get rid of these lines of code? And have this controlled through 
> service offerings as it should IMHO.? Unless this has negative impact which 
> we are not aware off?
> Cheers & Thanks,
> Roeland
> Details of the original commit which injected this code:
> Commit: a269b089ae38d0d04db2fa0f4c8e839480476ddc [a269b08]
> Parents: a2cc66ce41
> Author: Sheng Yang <[email protected]>
> Date: 17 december 2011 03:52:59 CET
> Commit Date: 19 december 2011 22:29:48 CET
> bug 12608: NaaS: Don't shutdown elements if cleanup=false
> We can use the restartNetwork mechanism to recover the disconnected redundant
> router.
> Also disable HA for redundant router. Admin would take responsibilty to 
> recover
> the failure router, because redundant routers themselves are one layer HA.
> status 12608: resolved fixed



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

Reply via email to