You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cloudstack.apache.org by murali-reddy <gi...@git.apache.org> on 2016/08/24 10:45:45 UTC

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

GitHub user murali-reddy opened a pull request:

    https://github.com/apache/cloudstack/pull/1659

    CLOUDSTACK-9339 Virtual Routers don't handle Multiple Public Interfaces correctly for non-vpc networks

    As pointed out in CLOUDSTACK-9339, in case of multiple public IP's from different public IP ranges are associated with VR, VR functionality is broken. Below are the brief list of problems specific to non VPC networks addressed in the PR.
    
    - revere traffic for the connections accepted on the eth3 and above public interfaces are getting blocked. Need a rule for e.g "-A FORWARD -i  eth3 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT" in the filter table to permit reverse path traffic
    
    - outbound public traffic from eth0 to eth3 (and above) needs rule to run through FW_OUTBOUND chain in the filter table
    
    - network stats on public interfaces eth3 are getting gathered
    
    - default gateway is missing in the device specific routing table, resulting in traffic to be looked up in main routing table
    
    - reating a device specific route table is generating "from all lookup Table_eth3" in the
        ip rules, resulting in traffic getting blocked.
    
    Picked few commits from #1519 from dsclose (https://github.com/apache/cloudstack/pull/1519) submitted for 4.7
    
    Marvin tests are added to test below
    
    - Static NAT works on the public interfaces above eth2, in case non-vpc networks
    - Portforwarding works on the public interfaces above eth2, in case non-vpc networks
    - Route tables are configured as expected for the device specific table for the public interfaces above eth2, in case non-vpc networks
    - IP tables rules are as expected for the traffic from and to the public interfaces above eth2, in case non-vpc networks
    


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/murali-reddy/cloudstack multiple_public_ip_ranges_non_vpc

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/cloudstack/pull/1659.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #1659
    
----
commit af55d84a0954a50d88387660a47c5eb3be09c8c0
Author: dean.close <de...@icloudhosting.com>
Date:   2016-04-27T09:08:23Z

    CLOUDSTACK-9339: Allow forwarding and collect network stats on any public interface.

commit 7a2334d5c642a61f9275da240f834411ece5ced1
Author: Murali Reddy <mu...@gmail.com>
Date:   2016-08-23T21:41:36Z

    only mark packets arriving on public interfaces. On guest networ interfaces
    mark only when they are part of static nat. this will ensure device specific
    routing table will be used

commit e85a638c751c8c5fab234176c1772e22a16d4431
Author: dean.close <de...@icloudhosting.com>
Date:   2016-04-27T08:49:25Z

    CLOUDSTACK-9339: Add default gateway to device-specific routing tables.

commit fa2d3332b6b953341604091c005bec64224585c9
Author: Murali Reddy <mu...@gmail.com>
Date:   2016-08-23T21:46:04Z

    smoke tests for multiple public ip ranges for non-vpc network scenarios

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Thanks @murali-reddy @borisstoyanov I'll proceed with merging this now. @murali-reddy do you want to run the component test on this PR or on 1753/1754?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan package


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Packaging result: \u2716centos6 \u2714centos7 \u2716debian. JID-277


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by murali-reddy <gi...@git.apache.org>.
Github user murali-reddy commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan package


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Packaging result: \u2714centos6 \u2714centos7 \u2714debian. JID-99


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @rhtyd I understand these words: "help", "hello", "thanks", "package", "test"
    Test command usage: test [mgmt os] [hypervisor] [additional tests]
    Mgmt OS options: ['centos6', 'centos7', 'ubuntu']
    Hypervisor options: ['kvm-centos6', 'kvm-centos7', 'kvm-ubuntu', 'xenserver-65sp1', 'xenserver-62sp1', 'vmware-60u2', 'vmware-55u3', 'vmware-51u1', 'vmware-50u1']
    Additional tests: list of comma separated tests with paths relative to the `test/integration` directory, for example: component/test_acl_listvm.py, component/test_volumes.py
    Note: when additional tests are passed, you need to specify mgmt server os and hypervisor or use the `matrix` command.
    
    Blessed contributors for kicking Trillian test jobs: ['rhtyd', 'jburwell', 'murali-reddy', 'abhinandanprateek', 'PaulAngus', 'borisstoyanov', 'karuturi']


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by borisstoyanov <gi...@git.apache.org>.
Github user borisstoyanov commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Yes I think test failures does not seem to be caused by this PR, LGTM based on code review. 


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy a Trillian-Jenkins test job (centos7 mgmt + vmware-55u3) has been kicked to run smoke tests


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by murali-reddy <gi...@git.apache.org>.
Github user murali-reddy commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @jburwell i am investigating them. Just so you know, blueorangutan is running full smoke test suite. Similar failures are seen in other PR as well. So some of the tests may have been failing for some time and need to be fixed.
    
    From the above list of failures test_router_dhcphosts are due to test errors that is being addressed by https://github.com/apache/cloudstack/pull/1683
    
    I have addressed below two test failures. support for internal LB was not added in the logic creating ips.json databag, I made a fix for that as well.
    
    test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80
    test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80
    
    rest of the failures i am investigating if they are regressions, and test failures.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Packaging result: \u2716centos6 \u2714centos7 \u2716debian. JID-278


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    <b>Trillian test result (tid-533)</b>
    Environment: xenserver-65sp1 (x2), Advanced Networking with Mgmt server 7
    Total time taken: 35604 seconds
    Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t533-xenserver-65sp1.zip
    Test completed. 46 look ok, 2 have error(s)
    
    
    Test | Result | Time (s) | Test File
    --- | --- | --- | ---
    test_05_rvpc_multi_tiers | `Failure` | 618.66 | test_vpc_redundant.py
    test_04_rvpc_network_garbage_collector_nics | `Failure` | 1390.72 | test_vpc_redundant.py
    test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | `Failure` | 669.12 | test_vpc_redundant.py
    test_04_rvpc_privategw_static_routes | `Failure` | 883.45 | test_privategw_acl.py
    test_01_vpc_site2site_vpn | Success | 396.07 | test_vpc_vpn.py
    test_01_vpc_remote_access_vpn | Success | 156.21 | test_vpc_vpn.py
    test_01_redundant_vpc_site2site_vpn | Success | 687.83 | test_vpc_vpn.py
    test_02_VPC_default_routes | Success | 484.63 | test_vpc_router_nics.py
    test_01_VPC_nics_after_destroy | Success | 702.60 | test_vpc_router_nics.py
    test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Success | 993.18 | test_vpc_redundant.py
    test_02_redundant_VPC_default_routes | Success | 1097.71 | test_vpc_redundant.py
    test_09_delete_detached_volume | Success | 15.61 | test_volumes.py
    test_08_resize_volume | Success | 90.70 | test_volumes.py
    test_07_resize_fail | Success | 100.72 | test_volumes.py
    test_06_download_detached_volume | Success | 20.26 | test_volumes.py
    test_05_detach_volume | Success | 100.24 | test_volumes.py
    test_04_delete_attached_volume | Success | 10.19 | test_volumes.py
    test_03_download_attached_volume | Success | 15.20 | test_volumes.py
    test_02_attach_volume | Success | 10.77 | test_volumes.py
    test_01_create_volume | Success | 388.38 | test_volumes.py
    test_03_delete_vm_snapshots | Success | 280.20 | test_vm_snapshots.py
    test_02_revert_vm_snapshots | Success | 186.32 | test_vm_snapshots.py
    test_01_create_vm_snapshots | Success | 105.88 | test_vm_snapshots.py
    test_deploy_vm_multiple | Success | 247.51 | test_vm_life_cycle.py
    test_deploy_vm | Success | 0.02 | test_vm_life_cycle.py
    test_advZoneVirtualRouter | Success | 0.02 | test_vm_life_cycle.py
    test_10_attachAndDetach_iso | Success | 41.73 | test_vm_life_cycle.py
    test_09_expunge_vm | Success | 125.13 | test_vm_life_cycle.py
    test_08_migrate_vm | Success | 75.91 | test_vm_life_cycle.py
    test_07_restore_vm | Success | 0.09 | test_vm_life_cycle.py
    test_06_destroy_vm | Success | 10.12 | test_vm_life_cycle.py
    test_03_reboot_vm | Success | 20.17 | test_vm_life_cycle.py
    test_02_start_vm | Success | 30.23 | test_vm_life_cycle.py
    test_01_stop_vm | Success | 35.22 | test_vm_life_cycle.py
    test_CreateTemplateWithDuplicateName | Success | 162.03 | test_templates.py
    test_08_list_system_templates | Success | 0.02 | test_templates.py
    test_07_list_public_templates | Success | 0.03 | test_templates.py
    test_05_template_permissions | Success | 0.04 | test_templates.py
    test_04_extract_template | Success | 5.47 | test_templates.py
    test_03_delete_template | Success | 5.10 | test_templates.py
    test_02_edit_template | Success | 90.13 | test_templates.py
    test_01_create_template | Success | 85.63 | test_templates.py
    test_10_destroy_cpvm | Success | 261.56 | test_ssvm.py
    test_09_destroy_ssvm | Success | 259.12 | test_ssvm.py
    test_08_reboot_cpvm | Success | 161.57 | test_ssvm.py
    test_07_reboot_ssvm | Success | 143.90 | test_ssvm.py
    test_06_stop_cpvm | Success | 171.81 | test_ssvm.py
    test_05_stop_ssvm | Success | 199.34 | test_ssvm.py
    test_04_cpvm_internals | Success | 1.13 | test_ssvm.py
    test_03_ssvm_internals | Success | 3.56 | test_ssvm.py
    test_02_list_cpvm_vm | Success | 0.09 | test_ssvm.py
    test_01_list_sec_storage_vm | Success | 0.09 | test_ssvm.py
    test_01_snapshot_root_disk | Success | 31.33 | test_snapshots.py
    test_04_change_offering_small | Success | 121.07 | test_service_offerings.py
    test_03_delete_service_offering | Success | 0.03 | test_service_offerings.py
    test_02_edit_service_offering | Success | 0.04 | test_service_offerings.py
    test_01_create_service_offering | Success | 0.06 | test_service_offerings.py
    test_02_sys_template_ready | Success | 0.10 | test_secondary_storage.py
    test_01_sys_vm_start | Success | 0.13 | test_secondary_storage.py
    test_01_scale_vm | Success | 5.13 | test_scale_vm.py
    test_09_reboot_router | Success | 75.41 | test_routers.py
    test_08_start_router | Success | 60.34 | test_routers.py
    test_07_stop_router | Success | 15.14 | test_routers.py
    test_06_router_advanced | Success | 0.04 | test_routers.py
    test_05_router_basic | Success | 0.03 | test_routers.py
    test_04_restart_network_wo_cleanup | Success | 5.51 | test_routers.py
    test_03_restart_network_cleanup | Success | 135.74 | test_routers.py
    test_02_router_internal_adv | Success | 0.83 | test_routers.py
    test_01_router_internal_basic | Success | 0.46 | test_routers.py
    test_router_dns_guestipquery | Success | 48.84 | test_router_dns.py
    test_router_dns_externalipquery | Success | 0.04 | test_router_dns.py
    test_router_dhcphosts | Success | 112.59 | test_router_dhcphosts.py
    test_router_dhcp_opts | Success | 31.30 | test_router_dhcphosts.py
    test_01_updatevolumedetail | Success | 0.06 | test_resource_detail.py
    test_01_reset_vm_on_reboot | Success | 115.67 | test_reset_vm_on_reboot.py
    test_createRegion | Success | 0.03 | test_regions.py
    test_create_pvlan_network | Success | 5.18 | test_pvlan.py
    test_dedicatePublicIpRange | Success | 0.28 | test_public_ip_range.py
    test_03_vpc_privategw_restart_vpc_cleanup | Success | 932.63 | test_privategw_acl.py
    test_02_vpc_privategw_static_routes | Success | 667.63 | test_privategw_acl.py
    test_01_vpc_privategw_acl | Success | 132.50 | test_privategw_acl.py
    test_01_primary_storage_nfs | Success | 40.11 | test_primary_storage.py
    test_01_primary_storage_iscsi | Success | 83.27 | test_primary_storage.py
    test_createPortablePublicIPRange | Success | 15.33 | test_portable_publicip.py
    test_createPortablePublicIPAcquire | Success | 15.29 | test_portable_publicip.py
    test_isolate_network_password_server | Success | 69.24 | test_password_server.py
    test_UpdateStorageOverProvisioningFactor | Success | 0.09 | test_over_provisioning.py
    test_oobm_zchange_password | Success | 30.50 | test_outofbandmanagement.py
    test_oobm_multiple_mgmt_server_ownership | Success | 11.26 | test_outofbandmanagement.py
    test_oobm_issue_power_status | Success | 10.21 | test_outofbandmanagement.py
    test_oobm_issue_power_soft | Success | 15.27 | test_outofbandmanagement.py
    test_oobm_issue_power_reset | Success | 10.53 | test_outofbandmanagement.py
    test_oobm_issue_power_on | Success | 15.28 | test_outofbandmanagement.py
    test_oobm_issue_power_off | Success | 15.24 | test_outofbandmanagement.py
    test_oobm_issue_power_cycle | Success | 15.24 | test_outofbandmanagement.py
    test_oobm_enabledisable_across_clusterzones | Success | 77.13 | test_outofbandmanagement.py
    test_oobm_enable_feature_valid | Success | 0.11 | test_outofbandmanagement.py
    test_oobm_enable_feature_invalid | Success | 0.11 | test_outofbandmanagement.py
    test_oobm_disable_feature_valid | Success | 0.11 | test_outofbandmanagement.py
    test_oobm_disable_feature_invalid | Success | 0.10 | test_outofbandmanagement.py
    test_oobm_configure_invalid_driver | Success | 0.06 | test_outofbandmanagement.py
    test_oobm_configure_default_driver | Success | 0.06 | test_outofbandmanagement.py
    test_oobm_background_powerstate_sync | Success | 29.32 | test_outofbandmanagement.py
    test_extendPhysicalNetworkVlan | Success | 15.25 | test_non_contigiousvlan.py
    test_01_nic | Success | 649.93 | test_nic.py
    test_releaseIP | Success | 277.97 | test_network.py
    test_reboot_router | Success | 544.28 | test_network.py
    test_public_ip_user_account | Success | 10.33 | test_network.py
    test_public_ip_admin_account | Success | 40.26 | test_network.py
    test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Success | 86.61 | test_network.py
    test_network_rules_acquired_public_ip_2_nat_rule | Success | 76.31 | test_network.py
    test_network_rules_acquired_public_ip_1_static_nat_rule | Success | 101.06 | test_network.py
    test_delete_account | Success | 252.93 | test_network.py
    test_02_port_fwd_on_non_src_nat | Success | 70.70 | test_network.py
    test_01_port_fwd_on_src_nat | Success | 84.14 | test_network.py
    test_nic_secondaryip_add_remove | Success | 232.68 | test_multipleips_per_nic.py
    login_test_saml_user | Success | 21.81 | test_login.py
    test_assign_and_removal_lb | Success | 148.82 | test_loadbalance.py
    test_02_create_lb_rule_non_nat | Success | 207.53 | test_loadbalance.py
    test_01_create_lb_rule_src_nat | Success | 208.22 | test_loadbalance.py
    test_03_list_snapshots | Success | 0.05 | test_list_ids_parameter.py
    test_02_list_templates | Success | 0.03 | test_list_ids_parameter.py
    test_01_list_volumes | Success | 0.02 | test_list_ids_parameter.py
    test_07_list_default_iso | Success | 0.06 | test_iso.py
    test_05_iso_permissions | Success | 0.06 | test_iso.py
    test_04_extract_Iso | Success | 5.15 | test_iso.py
    test_03_delete_iso | Success | 95.18 | test_iso.py
    test_02_edit_iso | Success | 0.04 | test_iso.py
    test_01_create_iso | Success | 21.31 | test_iso.py
    test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Success | 544.57 | test_internal_lb.py
    test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Success | 323.65 | test_internal_lb.py
    test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Success | 1018.41 | test_internal_lb.py
    test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Success | 675.04 | test_internal_lb.py
    test_dedicateGuestVlanRange | Success | 10.20 | test_guest_vlan_range.py
    test_UpdateConfigParamWithScope | Success | 0.10 | test_global_settings.py
    test_rolepermission_lifecycle_update | Success | 6.36 | test_dynamicroles.py
    test_rolepermission_lifecycle_list | Success | 6.24 | test_dynamicroles.py
    test_rolepermission_lifecycle_delete | Success | 6.31 | test_dynamicroles.py
    test_rolepermission_lifecycle_create | Success | 6.21 | test_dynamicroles.py
    test_rolepermission_lifecycle_concurrent_updates | Success | 6.33 | test_dynamicroles.py
    test_role_lifecycle_update_role_inuse | Success | 6.19 | test_dynamicroles.py
    test_role_lifecycle_update | Success | 6.25 | test_dynamicroles.py
    test_role_lifecycle_list | Success | 6.17 | test_dynamicroles.py
    test_role_lifecycle_delete | Success | 11.21 | test_dynamicroles.py
    test_role_lifecycle_create | Success | 6.23 | test_dynamicroles.py
    test_role_inuse_deletion | Success | 6.17 | test_dynamicroles.py
    test_role_account_acls_multiple_mgmt_servers | Success | 7.58 | test_dynamicroles.py
    test_role_account_acls | Success | 7.71 | test_dynamicroles.py
    test_default_role_deletion | Success | 6.25 | test_dynamicroles.py
    test_04_create_fat_type_disk_offering | Success | 0.05 | test_disk_offerings.py
    test_03_delete_disk_offering | Success | 0.03 | test_disk_offerings.py
    test_02_edit_disk_offering | Success | 0.04 | test_disk_offerings.py
    test_02_create_sparse_type_disk_offering | Success | 0.05 | test_disk_offerings.py
    test_01_create_disk_offering | Success | 0.06 | test_disk_offerings.py
    test_deployvm_userdispersing | Success | 40.49 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userconcentrated | Success | 105.77 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_firstfit | Success | 211.50 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userdata_post | Success | 20.32 | test_deploy_vm_with_userdata.py
    test_deployvm_userdata | Success | 136.48 | test_deploy_vm_with_userdata.py
    test_02_deploy_vm_root_resize | Success | 6.16 | test_deploy_vm_root_resize.py
    test_01_deploy_vm_root_resize | Success | 6.33 | test_deploy_vm_root_resize.py
    test_00_deploy_vm_root_resize | Success | 6.24 | test_deploy_vm_root_resize.py
    test_deploy_vm_from_iso | Success | 177.24 | test_deploy_vm_iso.py
    test_DeployVmAntiAffinityGroup | Success | 357.02 | test_affinity_groups.py
    test_01_test_vm_volume_snapshot | Skipped | 0.00 | test_vm_snapshots.py
    test_06_copy_template | Skipped | 0.00 | test_templates.py
    test_static_role_account_acls | Skipped | 0.02 | test_staticroles.py
    test_06_copy_iso | Skipped | 0.00 | test_iso.py
    test_deploy_vgpu_enabled_vm | Skipped | 0.01 | test_deploy_vgpu_enabled_vm.py



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Packaging result: \u2714centos6 \u2714centos7 \u2714debian. JID-280


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by murali-reddy <gi...@git.apache.org>.
Github user murali-reddy commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan package


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by abhinandanprateek <gi...@git.apache.org>.
Github user abhinandanprateek commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy there is a potential to move some of the code into net utility classes, think about it.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Packaging result: \u2714centos6 \u2714centos7 \u2714debian. JID-201


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    <b>Trillian test result (tid-195)</b>
    Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
    Total time taken: 26462 seconds
    Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t195-kvm-centos7.zip
    Test completed. 45 look ok, 3 have error(s)
    
    
    Test | Result | Time (s) | Test File
    --- | --- | --- | ---
    test_02_redundant_VPC_default_routes | `Failure` | 864.95 | test_vpc_redundant.py
    test_04_rvpc_privategw_static_routes | `Failure` | 345.41 | test_privategw_acl.py
    test_03_vpc_privategw_restart_vpc_cleanup | `Failure` | 270.23 | test_privategw_acl.py
    test_02_vpc_privategw_static_routes | `Failure` | 259.92 | test_privategw_acl.py
    test_01_nic | `Error` | 465.01 | test_nic.py
    test_01_vpc_site2site_vpn | Success | 165.00 | test_vpc_vpn.py
    test_01_vpc_remote_access_vpn | Success | 66.17 | test_vpc_vpn.py
    test_01_redundant_vpc_site2site_vpn | Success | 241.04 | test_vpc_vpn.py
    test_02_VPC_default_routes | Success | 275.09 | test_vpc_router_nics.py
    test_01_VPC_nics_after_destroy | Success | 528.73 | test_vpc_router_nics.py
    test_05_rvpc_multi_tiers | Success | 519.34 | test_vpc_redundant.py
    test_04_rvpc_network_garbage_collector_nics | Success | 1398.85 | test_vpc_redundant.py
    test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Success | 544.37 | test_vpc_redundant.py
    test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Success | 1298.44 | test_vpc_redundant.py
    test_09_delete_detached_volume | Success | 15.46 | test_volumes.py
    test_08_resize_volume | Success | 15.41 | test_volumes.py
    test_07_resize_fail | Success | 20.45 | test_volumes.py
    test_06_download_detached_volume | Success | 15.47 | test_volumes.py
    test_05_detach_volume | Success | 100.26 | test_volumes.py
    test_04_delete_attached_volume | Success | 10.37 | test_volumes.py
    test_03_download_attached_volume | Success | 15.39 | test_volumes.py
    test_02_attach_volume | Success | 73.77 | test_volumes.py
    test_01_create_volume | Success | 711.27 | test_volumes.py
    test_deploy_vm_multiple | Success | 303.86 | test_vm_life_cycle.py
    test_deploy_vm | Success | 0.03 | test_vm_life_cycle.py
    test_advZoneVirtualRouter | Success | 0.02 | test_vm_life_cycle.py
    test_10_attachAndDetach_iso | Success | 26.68 | test_vm_life_cycle.py
    test_09_expunge_vm | Success | 125.18 | test_vm_life_cycle.py
    test_08_migrate_vm | Success | 40.89 | test_vm_life_cycle.py
    test_07_restore_vm | Success | 0.14 | test_vm_life_cycle.py
    test_06_destroy_vm | Success | 125.84 | test_vm_life_cycle.py
    test_03_reboot_vm | Success | 125.88 | test_vm_life_cycle.py
    test_02_start_vm | Success | 10.16 | test_vm_life_cycle.py
    test_01_stop_vm | Success | 40.35 | test_vm_life_cycle.py
    test_CreateTemplateWithDuplicateName | Success | 80.73 | test_templates.py
    test_08_list_system_templates | Success | 0.03 | test_templates.py
    test_07_list_public_templates | Success | 0.04 | test_templates.py
    test_05_template_permissions | Success | 0.06 | test_templates.py
    test_04_extract_template | Success | 5.21 | test_templates.py
    test_03_delete_template | Success | 5.11 | test_templates.py
    test_02_edit_template | Success | 90.12 | test_templates.py
    test_01_create_template | Success | 35.39 | test_templates.py
    test_10_destroy_cpvm | Success | 161.61 | test_ssvm.py
    test_09_destroy_ssvm | Success | 168.75 | test_ssvm.py
    test_08_reboot_cpvm | Success | 101.57 | test_ssvm.py
    test_07_reboot_ssvm | Success | 133.60 | test_ssvm.py
    test_06_stop_cpvm | Success | 131.75 | test_ssvm.py
    test_05_stop_ssvm | Success | 133.69 | test_ssvm.py
    test_04_cpvm_internals | Success | 1.22 | test_ssvm.py
    test_03_ssvm_internals | Success | 3.32 | test_ssvm.py
    test_02_list_cpvm_vm | Success | 0.12 | test_ssvm.py
    test_01_list_sec_storage_vm | Success | 0.13 | test_ssvm.py
    test_01_snapshot_root_disk | Success | 11.20 | test_snapshots.py
    test_04_change_offering_small | Success | 239.58 | test_service_offerings.py
    test_03_delete_service_offering | Success | 0.04 | test_service_offerings.py
    test_02_edit_service_offering | Success | 0.05 | test_service_offerings.py
    test_01_create_service_offering | Success | 0.11 | test_service_offerings.py
    test_02_sys_template_ready | Success | 0.15 | test_secondary_storage.py
    test_01_sys_vm_start | Success | 0.18 | test_secondary_storage.py
    test_09_reboot_router | Success | 40.34 | test_routers.py
    test_08_start_router | Success | 30.29 | test_routers.py
    test_07_stop_router | Success | 10.18 | test_routers.py
    test_06_router_advanced | Success | 0.06 | test_routers.py
    test_05_router_basic | Success | 0.04 | test_routers.py
    test_04_restart_network_wo_cleanup | Success | 5.69 | test_routers.py
    test_03_restart_network_cleanup | Success | 60.56 | test_routers.py
    test_02_router_internal_adv | Success | 1.03 | test_routers.py
    test_01_router_internal_basic | Success | 0.59 | test_routers.py
    test_router_dns_guestipquery | Success | 76.73 | test_router_dns.py
    test_router_dns_externalipquery | Success | 0.08 | test_router_dns.py
    test_router_dhcphosts | Success | 277.92 | test_router_dhcphosts.py
    test_01_updatevolumedetail | Success | 0.10 | test_resource_detail.py
    test_01_reset_vm_on_reboot | Success | 156.13 | test_reset_vm_on_reboot.py
    test_createRegion | Success | 0.04 | test_regions.py
    test_create_pvlan_network | Success | 5.21 | test_pvlan.py
    test_dedicatePublicIpRange | Success | 0.41 | test_public_ip_range.py
    test_01_vpc_privategw_acl | Success | 93.16 | test_privategw_acl.py
    test_01_primary_storage_nfs | Success | 35.80 | test_primary_storage.py
    test_createPortablePublicIPRange | Success | 15.19 | test_portable_publicip.py
    test_createPortablePublicIPAcquire | Success | 15.47 | test_portable_publicip.py
    test_isolate_network_password_server | Success | 86.31 | test_password_server.py
    test_UpdateStorageOverProvisioningFactor | Success | 0.13 | test_over_provisioning.py
    test_oobm_zchange_password | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_multiple_mgmt_server_ownership | Success | 16.52 | test_outofbandmanagement.py
    test_oobm_issue_power_status | Success | 5.51 | test_outofbandmanagement.py
    test_oobm_issue_power_soft | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_reset | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_on | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_off | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_cycle | Success | 16.02 | test_outofbandmanagement.py
    test_oobm_enabledisable_across_clusterzones | Success | 52.18 | test_outofbandmanagement.py
    test_oobm_enable_feature_valid | Success | 5.17 | test_outofbandmanagement.py
    test_oobm_enable_feature_invalid | Success | 0.11 | test_outofbandmanagement.py
    test_oobm_disable_feature_valid | Success | 5.20 | test_outofbandmanagement.py
    test_oobm_disable_feature_invalid | Success | 0.12 | test_outofbandmanagement.py
    test_oobm_configure_invalid_driver | Success | 0.10 | test_outofbandmanagement.py
    test_oobm_configure_default_driver | Success | 0.10 | test_outofbandmanagement.py
    test_oobm_background_powerstate_sync | Success | 29.44 | test_outofbandmanagement.py
    test_extendPhysicalNetworkVlan | Success | 15.31 | test_non_contigiousvlan.py
    test_releaseIP | Success | 269.20 | test_network.py
    test_reboot_router | Success | 429.49 | test_network.py
    test_public_ip_user_account | Success | 10.28 | test_network.py
    test_public_ip_admin_account | Success | 40.25 | test_network.py
    test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Success | 66.81 | test_network.py
    test_network_rules_acquired_public_ip_2_nat_rule | Success | 61.74 | test_network.py
    test_network_rules_acquired_public_ip_1_static_nat_rule | Success | 124.22 | test_network.py
    test_delete_account | Success | 299.28 | test_network.py
    test_02_port_fwd_on_non_src_nat | Success | 55.62 | test_network.py
    test_01_port_fwd_on_src_nat | Success | 111.75 | test_network.py
    test_nic_secondaryip_add_remove | Success | 208.45 | test_multipleips_per_nic.py
    login_test_saml_user | Success | 24.83 | test_login.py
    test_assign_and_removal_lb | Success | 133.37 | test_loadbalance.py
    test_02_create_lb_rule_non_nat | Success | 187.53 | test_loadbalance.py
    test_01_create_lb_rule_src_nat | Success | 217.85 | test_loadbalance.py
    test_03_list_snapshots | Success | 0.05 | test_list_ids_parameter.py
    test_02_list_templates | Success | 0.04 | test_list_ids_parameter.py
    test_01_list_volumes | Success | 0.03 | test_list_ids_parameter.py
    test_07_list_default_iso | Success | 0.06 | test_iso.py
    test_05_iso_permissions | Success | 0.06 | test_iso.py
    test_04_extract_Iso | Success | 5.15 | test_iso.py
    test_03_delete_iso | Success | 95.32 | test_iso.py
    test_02_edit_iso | Success | 0.06 | test_iso.py
    test_01_create_iso | Success | 21.99 | test_iso.py
    test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Success | 239.01 | test_internal_lb.py
    test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Success | 192.99 | test_internal_lb.py
    test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Success | 516.56 | test_internal_lb.py
    test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Success | 431.11 | test_internal_lb.py
    test_dedicateGuestVlanRange | Success | 10.27 | test_guest_vlan_range.py
    test_UpdateConfigParamWithScope | Success | 0.14 | test_global_settings.py
    test_rolepermission_lifecycle_update | Success | 7.07 | test_dynamicroles.py
    test_rolepermission_lifecycle_list | Success | 7.02 | test_dynamicroles.py
    test_rolepermission_lifecycle_delete | Success | 6.79 | test_dynamicroles.py
    test_rolepermission_lifecycle_create | Success | 6.83 | test_dynamicroles.py
    test_rolepermission_lifecycle_concurrent_updates | Success | 6.94 | test_dynamicroles.py
    test_role_lifecycle_update_role_inuse | Success | 6.84 | test_dynamicroles.py
    test_role_lifecycle_update | Success | 11.95 | test_dynamicroles.py
    test_role_lifecycle_list | Success | 7.10 | test_dynamicroles.py
    test_role_lifecycle_delete | Success | 11.87 | test_dynamicroles.py
    test_role_lifecycle_create | Success | 6.82 | test_dynamicroles.py
    test_role_inuse_deletion | Success | 6.80 | test_dynamicroles.py
    test_role_account_acls_multiple_mgmt_servers | Success | 8.98 | test_dynamicroles.py
    test_role_account_acls | Success | 9.25 | test_dynamicroles.py
    test_default_role_deletion | Success | 6.94 | test_dynamicroles.py
    test_04_create_fat_type_disk_offering | Success | 0.07 | test_disk_offerings.py
    test_03_delete_disk_offering | Success | 0.04 | test_disk_offerings.py
    test_02_edit_disk_offering | Success | 0.05 | test_disk_offerings.py
    test_02_create_sparse_type_disk_offering | Success | 0.07 | test_disk_offerings.py
    test_01_create_disk_offering | Success | 0.11 | test_disk_offerings.py
    test_deployvm_userdispersing | Success | 20.56 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userconcentrated | Success | 20.56 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_firstfit | Success | 80.78 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userdata_post | Success | 35.53 | test_deploy_vm_with_userdata.py
    test_deployvm_userdata | Success | 55.69 | test_deploy_vm_with_userdata.py
    test_02_deploy_vm_root_resize | Success | 6.92 | test_deploy_vm_root_resize.py
    test_01_deploy_vm_root_resize | Success | 6.96 | test_deploy_vm_root_resize.py
    test_00_deploy_vm_root_resize | Success | 218.36 | test_deploy_vm_root_resize.py
    test_deploy_vm_from_iso | Success | 208.50 | test_deploy_vm_iso.py
    test_DeployVmAntiAffinityGroup | Success | 65.92 | test_affinity_groups.py
    test_03_delete_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_02_revert_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_01_test_vm_volume_snapshot | Skipped | 0.00 | test_vm_snapshots.py
    test_01_create_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_06_copy_template | Skipped | 0.00 | test_templates.py
    test_static_role_account_acls | Skipped | 0.02 | test_staticroles.py
    test_01_scale_vm | Skipped | 0.00 | test_scale_vm.py
    test_01_primary_storage_iscsi | Skipped | 0.04 | test_primary_storage.py
    test_06_copy_iso | Skipped | 0.00 | test_iso.py
    test_deploy_vgpu_enabled_vm | Skipped | 0.00 | test_deploy_vgpu_enabled_vm.py



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by murali-reddy <gi...@git.apache.org>.
Github user murali-reddy commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @ustcweizhou thanks, i have fixed it earlier today and tested, am trying to fix other test failures and re-run the CI


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76496527
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestPortForwarding,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_port_forwarding_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for port forwarding on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. create a port forwarding on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    +        # Check if VM is in Running state before creating NAT and firewall rules
    +        vm_response = VirtualMachine.list(
    +            self.apiclient,
    +            id=self.virtual_machine.id
    +        )
    +
    +        self.assertEqual(
    +            isinstance(vm_response, list),
    +            True,
    +            "Check list VM returns a valid list"
    +        )
    +
    +        self.assertNotEqual(
    +            len(vm_response),
    +            0,
    +            "Check Port Forwarding Rule is created"
    +        )
    +        self.assertEqual(
    +            vm_response[0].state,
    +            'Running',
    +            "VM state should be Running before creating a NAT rule."
    +        )
    +
    +        # Open up firewall port for SSH
    +        FireWallRule.create(
    +            self.apiclient,
    +            ipaddressid=ip_address.ipaddress.id,
    +            protocol=self.services["natrule"]["protocol"],
    +            cidrlist=['0.0.0.0/0'],
    +            startport=self.services["natrule"]["publicport"],
    +            endport=self.services["natrule"]["publicport"]
    +        )
    +
    +        # Create PF rule
    +        nat_rule = NATRule.create(
    +            self.apiclient,
    +            self.virtual_machine,
    +            self.services["natrule"],
    +            ip_address.ipaddress.id
    +        )
    +
    +        try:
    +            logger.debug("SSHing into VM with IP address %s with NAT IP %s" %
    +                       (
    +                           self.virtual_machine.ipaddress,
    +                           ip_address.ipaddress.ipaddress
    +                       ))
    +            self.virtual_machine.get_ssh_client(ip_address.ipaddress.ipaddress)
    +        except Exception as e:
    +            self.fail(
    +                "SSH Access failed for %s: %s" %
    +                (self.virtual_machine.ipaddress, e)
    +            )
    +
    +        nat_rule.delete(self.apiclient)
    +
    +class TestStaticNat(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestStaticNat, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls.defaultNetworkId = cls.virtual_machine.nic[0].networkid
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestStaticNat,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_static_nat_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for static nat on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. Enable static NAT on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    +        # Check if VM is in Running state before creating NAT and firewall rules
    +        vm_response = VirtualMachine.list(
    +            self.apiclient,
    +            id=self.virtual_machine.id
    +        )
    +
    +        self.assertEqual(
    +            isinstance(vm_response, list),
    +            True,
    +            "Check list VM returns a valid list"
    +        )
    +
    +        self.assertNotEqual(
    +            len(vm_response),
    +            0,
    +            "Check Port Forwarding Rule is created"
    +        )
    +        self.assertEqual(
    +            vm_response[0].state,
    +            'Running',
    +            "VM state should be Running before creating a NAT rule."
    +        )
    +
    +        # Open up firewall port for SSH
    +        FireWallRule.create(
    +            self.apiclient,
    +            ipaddressid=ip_address.ipaddress.id,
    +            protocol=self.services["natrule"]["protocol"],
    +            cidrlist=['0.0.0.0/0'],
    +            startport=self.services["natrule"]["publicport"],
    +            endport=self.services["natrule"]["publicport"]
    +        )
    +
    +        # Create Static NAT rule
    +        StaticNATRule.enable(
    +            self.apiclient,
    +            ip_address.ipaddress.id,
    +            self.virtual_machine.id,
    +            self.defaultNetworkId
    +        )
    +
    +        try:
    +            logger.debug("SSHing into VM with IP address %s with NAT IP %s" %
    +                       (
    +                           self.virtual_machine.ipaddress,
    +                           ip_address.ipaddress.ipaddress
    +                       ))
    +            self.virtual_machine.get_ssh_client(ip_address.ipaddress.ipaddress)
    +        except Exception as e:
    +            self.fail(
    +                "SSH Access failed for %s: %s" %
    +                (self.virtual_machine.ipaddress, e)
    +            )
    +
    +        StaticNATRule.disable(
    +            self.apiclient,
    +            ip_address.ipaddress.id,
    +            self.virtual_machine.id
    +        )
    +
    +class TestRouting(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestRouting, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    --- End diff --
    
    Please see previous comments regarding a utility function to create VMs.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76482410
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    --- End diff --
    
    @abhinandanprateek is this the best way to determine the default template for VMs in a Marvin test suite?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76494135
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestPortForwarding,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_port_forwarding_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for port forwarding on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. create a port forwarding on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    +        # Check if VM is in Running state before creating NAT and firewall rules
    +        vm_response = VirtualMachine.list(
    +            self.apiclient,
    +            id=self.virtual_machine.id
    +        )
    +
    +        self.assertEqual(
    +            isinstance(vm_response, list),
    +            True,
    +            "Check list VM returns a valid list"
    +        )
    +
    +        self.assertNotEqual(
    +            len(vm_response),
    +            0,
    +            "Check Port Forwarding Rule is created"
    +        )
    +        self.assertEqual(
    +            vm_response[0].state,
    +            'Running',
    +            "VM state should be Running before creating a NAT rule."
    +        )
    +
    +        # Open up firewall port for SSH
    +        FireWallRule.create(
    +            self.apiclient,
    +            ipaddressid=ip_address.ipaddress.id,
    +            protocol=self.services["natrule"]["protocol"],
    +            cidrlist=['0.0.0.0/0'],
    +            startport=self.services["natrule"]["publicport"],
    +            endport=self.services["natrule"]["publicport"]
    +        )
    +
    +        # Create PF rule
    +        nat_rule = NATRule.create(
    +            self.apiclient,
    +            self.virtual_machine,
    +            self.services["natrule"],
    +            ip_address.ipaddress.id
    +        )
    +
    +        try:
    +            logger.debug("SSHing into VM with IP address %s with NAT IP %s" %
    +                       (
    +                           self.virtual_machine.ipaddress,
    +                           ip_address.ipaddress.ipaddress
    +                       ))
    +            self.virtual_machine.get_ssh_client(ip_address.ipaddress.ipaddress)
    +        except Exception as e:
    +            self.fail(
    +                "SSH Access failed for %s: %s" %
    +                (self.virtual_machine.ipaddress, e)
    +            )
    +
    +        nat_rule.delete(self.apiclient)
    --- End diff --
    
    Why not add ``nat_rule`` to cleanup?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan package


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    <b>Trillian test result (tid-393)</b>
    Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
    Total time taken: 29875 seconds
    Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t393-kvm-centos7.zip
    Test completed. 42 look ok, 6 have error(s)
    
    
    Test | Result | Time (s) | Test File
    --- | --- | --- | ---
    test_02_redundant_VPC_default_routes | `Failure` | 865.43 | test_vpc_redundant.py
    test_04_rvpc_privategw_static_routes | `Failure` | 436.45 | test_privategw_acl.py
    test_03_vpc_privategw_restart_vpc_cleanup | `Failure` | 320.71 | test_privategw_acl.py
    test_02_vpc_privategw_static_routes | `Failure` | 260.24 | test_privategw_acl.py
    test_04_extract_Iso | `Failure` | 5.14 | test_iso.py
    ContextSuite context=TestSnapshotRootDisk>:setup | `Error` | 0.00 | test_snapshots.py
    test_01_nic | `Error` | 511.05 | test_nic.py
    ContextSuite context=TestInternalLb>:setup | `Error` | 0.00 | test_internal_lb.py
    test_01_vpc_site2site_vpn | Success | 166.23 | test_vpc_vpn.py
    test_01_vpc_remote_access_vpn | Success | 66.17 | test_vpc_vpn.py
    test_01_redundant_vpc_site2site_vpn | Success | 256.69 | test_vpc_vpn.py
    test_02_VPC_default_routes | Success | 291.27 | test_vpc_router_nics.py
    test_01_VPC_nics_after_destroy | Success | 607.95 | test_vpc_router_nics.py
    test_05_rvpc_multi_tiers | Success | 523.32 | test_vpc_redundant.py
    test_04_rvpc_network_garbage_collector_nics | Success | 1392.33 | test_vpc_redundant.py
    test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Success | 572.60 | test_vpc_redundant.py
    test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Success | 1294.23 | test_vpc_redundant.py
    test_09_delete_detached_volume | Success | 15.51 | test_volumes.py
    test_08_resize_volume | Success | 15.43 | test_volumes.py
    test_07_resize_fail | Success | 20.51 | test_volumes.py
    test_06_download_detached_volume | Success | 15.33 | test_volumes.py
    test_05_detach_volume | Success | 100.27 | test_volumes.py
    test_04_delete_attached_volume | Success | 10.22 | test_volumes.py
    test_03_download_attached_volume | Success | 15.40 | test_volumes.py
    test_02_attach_volume | Success | 73.91 | test_volumes.py
    test_01_create_volume | Success | 716.32 | test_volumes.py
    test_deploy_vm_multiple | Success | 268.83 | test_vm_life_cycle.py
    test_deploy_vm | Success | 0.03 | test_vm_life_cycle.py
    test_advZoneVirtualRouter | Success | 0.02 | test_vm_life_cycle.py
    test_10_attachAndDetach_iso | Success | 26.73 | test_vm_life_cycle.py
    test_09_expunge_vm | Success | 125.25 | test_vm_life_cycle.py
    test_08_migrate_vm | Success | 40.98 | test_vm_life_cycle.py
    test_07_restore_vm | Success | 0.15 | test_vm_life_cycle.py
    test_06_destroy_vm | Success | 125.86 | test_vm_life_cycle.py
    test_03_reboot_vm | Success | 125.89 | test_vm_life_cycle.py
    test_02_start_vm | Success | 10.17 | test_vm_life_cycle.py
    test_01_stop_vm | Success | 40.33 | test_vm_life_cycle.py
    test_CreateTemplateWithDuplicateName | Success | 71.54 | test_templates.py
    test_08_list_system_templates | Success | 0.03 | test_templates.py
    test_07_list_public_templates | Success | 0.04 | test_templates.py
    test_05_template_permissions | Success | 0.06 | test_templates.py
    test_04_extract_template | Success | 5.14 | test_templates.py
    test_03_delete_template | Success | 5.11 | test_templates.py
    test_02_edit_template | Success | 90.10 | test_templates.py
    test_01_create_template | Success | 60.63 | test_templates.py
    test_10_destroy_cpvm | Success | 161.68 | test_ssvm.py
    test_09_destroy_ssvm | Success | 163.76 | test_ssvm.py
    test_08_reboot_cpvm | Success | 101.60 | test_ssvm.py
    test_07_reboot_ssvm | Success | 133.78 | test_ssvm.py
    test_06_stop_cpvm | Success | 131.71 | test_ssvm.py
    test_05_stop_ssvm | Success | 164.47 | test_ssvm.py
    test_04_cpvm_internals | Success | 1.88 | test_ssvm.py
    test_03_ssvm_internals | Success | 4.49 | test_ssvm.py
    test_02_list_cpvm_vm | Success | 0.13 | test_ssvm.py
    test_01_list_sec_storage_vm | Success | 0.14 | test_ssvm.py
    test_04_change_offering_small | Success | 239.67 | test_service_offerings.py
    test_03_delete_service_offering | Success | 0.04 | test_service_offerings.py
    test_02_edit_service_offering | Success | 0.09 | test_service_offerings.py
    test_01_create_service_offering | Success | 0.14 | test_service_offerings.py
    test_02_sys_template_ready | Success | 0.14 | test_secondary_storage.py
    test_01_sys_vm_start | Success | 0.20 | test_secondary_storage.py
    test_09_reboot_router | Success | 35.31 | test_routers.py
    test_08_start_router | Success | 30.29 | test_routers.py
    test_07_stop_router | Success | 10.17 | test_routers.py
    test_06_router_advanced | Success | 0.06 | test_routers.py
    test_05_router_basic | Success | 0.04 | test_routers.py
    test_04_restart_network_wo_cleanup | Success | 5.70 | test_routers.py
    test_03_restart_network_cleanup | Success | 55.49 | test_routers.py
    test_02_router_internal_adv | Success | 1.09 | test_routers.py
    test_01_router_internal_basic | Success | 0.63 | test_routers.py
    test_router_dns_guestipquery | Success | 76.78 | test_router_dns.py
    test_router_dns_externalipquery | Success | 0.06 | test_router_dns.py
    test_router_dhcphosts | Success | 277.04 | test_router_dhcphosts.py
    test_01_updatevolumedetail | Success | 0.12 | test_resource_detail.py
    test_01_reset_vm_on_reboot | Success | 131.41 | test_reset_vm_on_reboot.py
    test_createRegion | Success | 0.04 | test_regions.py
    test_create_pvlan_network | Success | 5.22 | test_pvlan.py
    test_dedicatePublicIpRange | Success | 0.45 | test_public_ip_range.py
    test_01_vpc_privategw_acl | Success | 88.33 | test_privategw_acl.py
    test_01_primary_storage_nfs | Success | 35.81 | test_primary_storage.py
    test_createPortablePublicIPRange | Success | 15.20 | test_portable_publicip.py
    test_createPortablePublicIPAcquire | Success | 15.48 | test_portable_publicip.py
    test_isolate_network_password_server | Success | 89.64 | test_password_server.py
    test_UpdateStorageOverProvisioningFactor | Success | 0.17 | test_over_provisioning.py
    test_oobm_zchange_password | Success | 21.01 | test_outofbandmanagement.py
    test_oobm_multiple_mgmt_server_ownership | Success | 16.51 | test_outofbandmanagement.py
    test_oobm_issue_power_status | Success | 10.52 | test_outofbandmanagement.py
    test_oobm_issue_power_soft | Success | 16.02 | test_outofbandmanagement.py
    test_oobm_issue_power_reset | Success | 15.53 | test_outofbandmanagement.py
    test_oobm_issue_power_on | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_off | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_cycle | Success | 15.51 | test_outofbandmanagement.py
    test_oobm_enabledisable_across_clusterzones | Success | 58.10 | test_outofbandmanagement.py
    test_oobm_enable_feature_valid | Success | 5.20 | test_outofbandmanagement.py
    test_oobm_enable_feature_invalid | Success | 0.13 | test_outofbandmanagement.py
    test_oobm_disable_feature_valid | Success | 5.22 | test_outofbandmanagement.py
    test_oobm_disable_feature_invalid | Success | 0.13 | test_outofbandmanagement.py
    test_oobm_configure_invalid_driver | Success | 0.11 | test_outofbandmanagement.py
    test_oobm_configure_default_driver | Success | 0.10 | test_outofbandmanagement.py
    test_oobm_background_powerstate_sync | Success | 29.68 | test_outofbandmanagement.py
    test_extendPhysicalNetworkVlan | Success | 15.34 | test_non_contigiousvlan.py
    test_releaseIP | Success | 269.56 | test_network.py
    test_reboot_router | Success | 425.27 | test_network.py
    test_public_ip_user_account | Success | 10.26 | test_network.py
    test_public_ip_admin_account | Success | 40.29 | test_network.py
    test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Success | 66.95 | test_network.py
    test_network_rules_acquired_public_ip_2_nat_rule | Success | 61.78 | test_network.py
    test_network_rules_acquired_public_ip_1_static_nat_rule | Success | 124.25 | test_network.py
    test_delete_account | Success | 278.70 | test_network.py
    test_02_port_fwd_on_non_src_nat | Success | 55.65 | test_network.py
    test_01_port_fwd_on_src_nat | Success | 111.75 | test_network.py
    test_nic_secondaryip_add_remove | Success | 208.82 | test_multipleips_per_nic.py
    login_test_saml_user | Success | 24.92 | test_login.py
    test_assign_and_removal_lb | Success | 133.75 | test_loadbalance.py
    test_02_create_lb_rule_non_nat | Success | 187.43 | test_loadbalance.py
    test_01_create_lb_rule_src_nat | Success | 218.13 | test_loadbalance.py
    test_03_list_snapshots | Success | 0.08 | test_list_ids_parameter.py
    test_02_list_templates | Success | 0.04 | test_list_ids_parameter.py
    test_01_list_volumes | Success | 0.03 | test_list_ids_parameter.py
    test_07_list_default_iso | Success | 0.06 | test_iso.py
    test_05_iso_permissions | Success | 0.06 | test_iso.py
    test_03_delete_iso | Success | 95.21 | test_iso.py
    test_02_edit_iso | Success | 0.09 | test_iso.py
    test_01_create_iso | Success | 22.20 | test_iso.py
    test_dedicateGuestVlanRange | Success | 10.27 | test_guest_vlan_range.py
    test_UpdateConfigParamWithScope | Success | 0.14 | test_global_settings.py
    test_rolepermission_lifecycle_update | Success | 7.08 | test_dynamicroles.py
    test_rolepermission_lifecycle_list | Success | 6.90 | test_dynamicroles.py
    test_rolepermission_lifecycle_delete | Success | 6.77 | test_dynamicroles.py
    test_rolepermission_lifecycle_create | Success | 6.79 | test_dynamicroles.py
    test_rolepermission_lifecycle_concurrent_updates | Success | 6.99 | test_dynamicroles.py
    test_role_lifecycle_update_role_inuse | Success | 6.79 | test_dynamicroles.py
    test_role_lifecycle_update | Success | 11.91 | test_dynamicroles.py
    test_role_lifecycle_list | Success | 6.79 | test_dynamicroles.py
    test_role_lifecycle_delete | Success | 11.84 | test_dynamicroles.py
    test_role_lifecycle_create | Success | 6.81 | test_dynamicroles.py
    test_role_inuse_deletion | Success | 6.78 | test_dynamicroles.py
    test_role_account_acls_multiple_mgmt_servers | Success | 8.98 | test_dynamicroles.py
    test_role_account_acls | Success | 9.21 | test_dynamicroles.py
    test_default_role_deletion | Success | 6.89 | test_dynamicroles.py
    test_04_create_fat_type_disk_offering | Success | 0.08 | test_disk_offerings.py
    test_03_delete_disk_offering | Success | 0.04 | test_disk_offerings.py
    test_02_edit_disk_offering | Success | 0.05 | test_disk_offerings.py
    test_02_create_sparse_type_disk_offering | Success | 0.08 | test_disk_offerings.py
    test_01_create_disk_offering | Success | 0.11 | test_disk_offerings.py
    test_deployvm_userdispersing | Success | 20.60 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userconcentrated | Success | 70.90 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_firstfit | Success | 70.77 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userdata_post | Success | 10.45 | test_deploy_vm_with_userdata.py
    test_deployvm_userdata | Success | 60.80 | test_deploy_vm_with_userdata.py
    test_02_deploy_vm_root_resize | Success | 6.99 | test_deploy_vm_root_resize.py
    test_01_deploy_vm_root_resize | Success | 6.90 | test_deploy_vm_root_resize.py
    test_00_deploy_vm_root_resize | Success | 289.14 | test_deploy_vm_root_resize.py
    test_deploy_vm_from_iso | Success | 233.50 | test_deploy_vm_iso.py
    test_DeployVmAntiAffinityGroup | Success | 71.04 | test_affinity_groups.py
    test_03_delete_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_02_revert_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_01_test_vm_volume_snapshot | Skipped | 0.00 | test_vm_snapshots.py
    test_01_create_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_06_copy_template | Skipped | 0.00 | test_templates.py
    test_static_role_account_acls | Skipped | 0.02 | test_staticroles.py
    test_01_scale_vm | Skipped | 0.00 | test_scale_vm.py
    test_01_primary_storage_iscsi | Skipped | 0.04 | test_primary_storage.py
    test_06_copy_iso | Skipped | 0.00 | test_iso.py
    test_deploy_vgpu_enabled_vm | Skipped | 0.01 | test_deploy_vgpu_enabled_vm.py



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Packaging result: \u2714centos6 \u2714centos7 \u2714debian. JID-323


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Travis failure is to do with a test_volumes failures in one of the component tests, not related to this PR. Will merge, and handle the Travis failure separately.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan test


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy what is the status of addressing the review feedback.  Also, have addressed the VPC-related issues as well?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    <b>Trillian test result (tid-597)</b>
    Environment: vmware-55u3 (x2), Advanced Networking with Mgmt server 7
    Total time taken: 36723 seconds
    Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t597-vmware-55u3.zip
    Test completed. 45 look ok, 3 have error(s)
    
    
    Test | Result | Time (s) | Test File
    --- | --- | --- | ---
    test_04_rvpc_privategw_static_routes | `Failure` | 864.65 | test_privategw_acl.py
    test_01_vpc_site2site_vpn | `Error` | 507.04 | test_vpc_vpn.py
    test_01_redundant_vpc_site2site_vpn | `Error` | 738.72 | test_vpc_vpn.py
    test_CreateTemplateWithDuplicateName | `Error` | 5.15 | test_templates.py
    test_01_create_template | `Error` | 5.14 | test_templates.py
    ContextSuite context=TestTemplates>:setup | `Error` | 220.60 | test_templates.py
    test_01_vpc_remote_access_vpn | Success | 161.94 | test_vpc_vpn.py
    test_02_VPC_default_routes | Success | 366.75 | test_vpc_router_nics.py
    test_01_VPC_nics_after_destroy | Success | 747.33 | test_vpc_router_nics.py
    test_05_rvpc_multi_tiers | Success | 721.74 | test_vpc_redundant.py
    test_04_rvpc_network_garbage_collector_nics | Success | 1570.62 | test_vpc_redundant.py
    test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Success | 724.84 | test_vpc_redundant.py
    test_02_redundant_VPC_default_routes | Success | 660.56 | test_vpc_redundant.py
    test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Success | 1366.28 | test_vpc_redundant.py
    test_09_delete_detached_volume | Success | 30.88 | test_volumes.py
    test_06_download_detached_volume | Success | 60.56 | test_volumes.py
    test_05_detach_volume | Success | 100.26 | test_volumes.py
    test_04_delete_attached_volume | Success | 10.21 | test_volumes.py
    test_03_download_attached_volume | Success | 20.32 | test_volumes.py
    test_02_attach_volume | Success | 58.75 | test_volumes.py
    test_01_create_volume | Success | 519.61 | test_volumes.py
    test_03_delete_vm_snapshots | Success | 275.24 | test_vm_snapshots.py
    test_02_revert_vm_snapshots | Success | 229.81 | test_vm_snapshots.py
    test_01_test_vm_volume_snapshot | Success | 146.24 | test_vm_snapshots.py
    test_01_create_vm_snapshots | Success | 161.69 | test_vm_snapshots.py
    test_deploy_vm_multiple | Success | 268.71 | test_vm_life_cycle.py
    test_deploy_vm | Success | 0.03 | test_vm_life_cycle.py
    test_advZoneVirtualRouter | Success | 0.02 | test_vm_life_cycle.py
    test_10_attachAndDetach_iso | Success | 26.84 | test_vm_life_cycle.py
    test_09_expunge_vm | Success | 125.18 | test_vm_life_cycle.py
    test_08_migrate_vm | Success | 81.15 | test_vm_life_cycle.py
    test_07_restore_vm | Success | 0.10 | test_vm_life_cycle.py
    test_06_destroy_vm | Success | 5.11 | test_vm_life_cycle.py
    test_03_reboot_vm | Success | 5.14 | test_vm_life_cycle.py
    test_02_start_vm | Success | 20.25 | test_vm_life_cycle.py
    test_01_stop_vm | Success | 10.15 | test_vm_life_cycle.py
    test_10_destroy_cpvm | Success | 236.87 | test_ssvm.py
    test_09_destroy_ssvm | Success | 238.85 | test_ssvm.py
    test_08_reboot_cpvm | Success | 306.81 | test_ssvm.py
    test_07_reboot_ssvm | Success | 158.44 | test_ssvm.py
    test_06_stop_cpvm | Success | 176.95 | test_ssvm.py
    test_05_stop_ssvm | Success | 208.94 | test_ssvm.py
    test_04_cpvm_internals | Success | 1.19 | test_ssvm.py
    test_03_ssvm_internals | Success | 4.11 | test_ssvm.py
    test_02_list_cpvm_vm | Success | 0.13 | test_ssvm.py
    test_01_list_sec_storage_vm | Success | 0.14 | test_ssvm.py
    test_01_snapshot_root_disk | Success | 61.45 | test_snapshots.py
    test_04_change_offering_small | Success | 97.73 | test_service_offerings.py
    test_03_delete_service_offering | Success | 0.04 | test_service_offerings.py
    test_02_edit_service_offering | Success | 0.08 | test_service_offerings.py
    test_01_create_service_offering | Success | 0.11 | test_service_offerings.py
    test_02_sys_template_ready | Success | 0.13 | test_secondary_storage.py
    test_01_sys_vm_start | Success | 0.19 | test_secondary_storage.py
    test_09_reboot_router | Success | 176.43 | test_routers.py
    test_08_start_router | Success | 115.88 | test_routers.py
    test_07_stop_router | Success | 20.42 | test_routers.py
    test_06_router_advanced | Success | 0.06 | test_routers.py
    test_05_router_basic | Success | 0.04 | test_routers.py
    test_04_restart_network_wo_cleanup | Success | 5.65 | test_routers.py
    test_03_restart_network_cleanup | Success | 196.65 | test_routers.py
    test_02_router_internal_adv | Success | 1.02 | test_routers.py
    test_01_router_internal_basic | Success | 0.55 | test_routers.py
    test_router_dns_guestipquery | Success | 106.80 | test_router_dns.py
    test_router_dns_externalipquery | Success | 0.06 | test_router_dns.py
    test_router_dhcphosts | Success | 149.55 | test_router_dhcphosts.py
    test_router_dhcp_opts | Success | 21.62 | test_router_dhcphosts.py
    test_01_updatevolumedetail | Success | 0.09 | test_resource_detail.py
    test_01_reset_vm_on_reboot | Success | 30.35 | test_reset_vm_on_reboot.py
    test_createRegion | Success | 0.04 | test_regions.py
    test_create_pvlan_network | Success | 5.21 | test_pvlan.py
    test_dedicatePublicIpRange | Success | 0.43 | test_public_ip_range.py
    test_03_vpc_privategw_restart_vpc_cleanup | Success | 1104.72 | test_privategw_acl.py
    test_02_vpc_privategw_static_routes | Success | 703.98 | test_privategw_acl.py
    test_01_vpc_privategw_acl | Success | 188.96 | test_privategw_acl.py
    test_01_primary_storage_nfs | Success | 37.39 | test_primary_storage.py
    test_createPortablePublicIPRange | Success | 15.20 | test_portable_publicip.py
    test_createPortablePublicIPAcquire | Success | 15.46 | test_portable_publicip.py
    test_isolate_network_password_server | Success | 94.22 | test_password_server.py
    test_UpdateStorageOverProvisioningFactor | Success | 0.14 | test_over_provisioning.py
    test_oobm_zchange_password | Success | 30.90 | test_outofbandmanagement.py
    test_oobm_multiple_mgmt_server_ownership | Success | 16.41 | test_outofbandmanagement.py
    test_oobm_issue_power_status | Success | 10.23 | test_outofbandmanagement.py
    test_oobm_issue_power_soft | Success | 15.32 | test_outofbandmanagement.py
    test_oobm_issue_power_reset | Success | 15.34 | test_outofbandmanagement.py
    test_oobm_issue_power_on | Success | 15.35 | test_outofbandmanagement.py
    test_oobm_issue_power_off | Success | 15.33 | test_outofbandmanagement.py
    test_oobm_issue_power_cycle | Success | 15.33 | test_outofbandmanagement.py
    test_oobm_enabledisable_across_clusterzones | Success | 82.61 | test_outofbandmanagement.py
    test_oobm_enable_feature_valid | Success | 0.12 | test_outofbandmanagement.py
    test_oobm_enable_feature_invalid | Success | 0.09 | test_outofbandmanagement.py
    test_oobm_disable_feature_valid | Success | 5.17 | test_outofbandmanagement.py
    test_oobm_disable_feature_invalid | Success | 0.10 | test_outofbandmanagement.py
    test_oobm_configure_invalid_driver | Success | 0.08 | test_outofbandmanagement.py
    test_oobm_configure_default_driver | Success | 0.08 | test_outofbandmanagement.py
    test_oobm_background_powerstate_sync | Success | 29.45 | test_outofbandmanagement.py
    test_extendPhysicalNetworkVlan | Success | 15.32 | test_non_contigiousvlan.py
    test_01_nic | Success | 597.33 | test_nic.py
    test_releaseIP | Success | 284.07 | test_network.py
    test_reboot_router | Success | 667.53 | test_network.py
    test_public_ip_user_account | Success | 10.40 | test_network.py
    test_public_ip_admin_account | Success | 40.29 | test_network.py
    test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Success | 76.90 | test_network.py
    test_network_rules_acquired_public_ip_2_nat_rule | Success | 61.64 | test_network.py
    test_network_rules_acquired_public_ip_1_static_nat_rule | Success | 125.25 | test_network.py
    test_delete_account | Success | 530.31 | test_network.py
    test_02_port_fwd_on_non_src_nat | Success | 55.65 | test_network.py
    test_01_port_fwd_on_src_nat | Success | 111.83 | test_network.py
    test_nic_secondaryip_add_remove | Success | 223.63 | test_multipleips_per_nic.py
    login_test_saml_user | Success | 24.71 | test_login.py
    test_assign_and_removal_lb | Success | 148.84 | test_loadbalance.py
    test_02_create_lb_rule_non_nat | Success | 207.38 | test_loadbalance.py
    test_01_create_lb_rule_src_nat | Success | 208.78 | test_loadbalance.py
    test_03_list_snapshots | Success | 0.08 | test_list_ids_parameter.py
    test_02_list_templates | Success | 0.04 | test_list_ids_parameter.py
    test_01_list_volumes | Success | 0.03 | test_list_ids_parameter.py
    test_07_list_default_iso | Success | 0.06 | test_iso.py
    test_05_iso_permissions | Success | 0.06 | test_iso.py
    test_04_extract_Iso | Success | 5.16 | test_iso.py
    test_03_delete_iso | Success | 95.21 | test_iso.py
    test_02_edit_iso | Success | 0.06 | test_iso.py
    test_01_create_iso | Success | 21.97 | test_iso.py
    test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Success | 581.00 | test_internal_lb.py
    test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Success | 414.83 | test_internal_lb.py
    test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Success | 1144.72 | test_internal_lb.py
    test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Success | 929.71 | test_internal_lb.py
    test_dedicateGuestVlanRange | Success | 10.27 | test_guest_vlan_range.py
    test_UpdateConfigParamWithScope | Success | 0.14 | test_global_settings.py
    test_rolepermission_lifecycle_update | Success | 7.09 | test_dynamicroles.py
    test_rolepermission_lifecycle_list | Success | 6.99 | test_dynamicroles.py
    test_rolepermission_lifecycle_delete | Success | 6.78 | test_dynamicroles.py
    test_rolepermission_lifecycle_create | Success | 6.75 | test_dynamicroles.py
    test_rolepermission_lifecycle_concurrent_updates | Success | 6.89 | test_dynamicroles.py
    test_role_lifecycle_update_role_inuse | Success | 6.85 | test_dynamicroles.py
    test_role_lifecycle_update | Success | 11.89 | test_dynamicroles.py
    test_role_lifecycle_list | Success | 7.18 | test_dynamicroles.py
    test_role_lifecycle_delete | Success | 11.83 | test_dynamicroles.py
    test_role_lifecycle_create | Success | 6.95 | test_dynamicroles.py
    test_role_inuse_deletion | Success | 6.76 | test_dynamicroles.py
    test_role_account_acls_multiple_mgmt_servers | Success | 8.97 | test_dynamicroles.py
    test_role_account_acls | Success | 9.29 | test_dynamicroles.py
    test_default_role_deletion | Success | 6.86 | test_dynamicroles.py
    test_04_create_fat_type_disk_offering | Success | 0.07 | test_disk_offerings.py
    test_03_delete_disk_offering | Success | 0.05 | test_disk_offerings.py
    test_02_edit_disk_offering | Success | 0.05 | test_disk_offerings.py
    test_02_create_sparse_type_disk_offering | Success | 0.07 | test_disk_offerings.py
    test_01_create_disk_offering | Success | 0.11 | test_disk_offerings.py
    test_deployvm_userdispersing | Success | 85.99 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userconcentrated | Success | 101.28 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_firstfit | Success | 201.57 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userdata_post | Success | 30.55 | test_deploy_vm_with_userdata.py
    test_deployvm_userdata | Success | 171.47 | test_deploy_vm_with_userdata.py
    test_02_deploy_vm_root_resize | Success | 6.85 | test_deploy_vm_root_resize.py
    test_01_deploy_vm_root_resize | Success | 6.91 | test_deploy_vm_root_resize.py
    test_00_deploy_vm_root_resize | Success | 6.88 | test_deploy_vm_root_resize.py
    test_deploy_vm_from_iso | Success | 233.50 | test_deploy_vm_iso.py
    test_DeployVmAntiAffinityGroup | Success | 181.68 | test_affinity_groups.py
    test_08_resize_volume | Skipped | 5.11 | test_volumes.py
    test_07_resize_fail | Skipped | 15.32 | test_volumes.py
    test_static_role_account_acls | Skipped | 0.02 | test_staticroles.py
    test_01_scale_vm | Skipped | 66.31 | test_scale_vm.py
    test_01_primary_storage_iscsi | Skipped | 0.04 | test_primary_storage.py
    test_06_copy_iso | Skipped | 0.00 | test_iso.py
    test_deploy_vgpu_enabled_vm | Skipped | 0.01 | test_deploy_vgpu_enabled_vm.py



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76484431
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestPortForwarding,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_port_forwarding_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for port forwarding on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. create a port forwarding on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    --- End diff --
    
    Add an assertion to validate the ``this.public_ip_range`` is not ``None`` or has an error.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by murali-reddy <gi...@git.apache.org>.
Github user murali-reddy commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @rhtyd please proceed with merge. I have not added the test suite(test_multiple_public_interfaces.py) part of this PR as smoke tests, because it takes around an hour for execution so they are best fit for component testing. Also tests need routable additional public IP range for the test case to succeed.
    
    I will run component test against 1753/1754 and report back results.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan test


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan test centos7 xenserver-65sp1


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Packaging result: \u2714centos6 \u2714centos7 \u2714debian. JID-254


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    <b>Trillian test result (#21)</b>
    Environment: vmware-55u3 (x2), Advanced Networking
    Total time taken: 27908s
    Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t21-vmware-55u3.zip
    Test completed. 45 look ok, 8 have errors
    
    
    Test | Result | Time (s)
    --- | --- | ---
    test_04_rvpc_privategw_static_routes | `Failure` | 382.998
    test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | `Failure` | 598.977
    test_03_vpc_privategw_restart_vpc_cleanup | `Failure` | 202.177
    test_03_vpc_internallb_haproxy_stats_on_all_interfaces | `Failure` | 120.997
    test_03_RVR_Network_check_router_state | `Failure` | 308.858
    test_02_vpc_privategw_static_routes | `Failure` | 207.177
    test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | `Failure` | 631.260
    test_02_RVR_Network_FW_PF_SSH_default_routes_egress_false | `Failure` | 565.425
    test_01_vpc_privategw_acl | `Failure` | 111.862
    test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | `Failure` | 430.487
    test_01_RVR_Network_FW_PF_SSH_default_routes_egress_true | `Failure` | 464.304
    test_router_dhcphosts | `Error` | 834.237
    test_isolate_network_password_server | `Error` | 829.874
    test_02_routervm_iptables_policies | `Error` | 888.488
    test_01_vpc_site2site_vpn | `Error` | 485.994
    test_01_vpc_remote_access_vpn | `Error` | 0.075
    test_01_test_vm_volume_snapshot | `Error` | 191.106
    test_01_single_VPC_iptables_policies | `Error` | 1026.261
    test_01_redundant_vpc_site2site_vpn | `Error` | 716.864
    ContextSuite context=TestRouterDHCPHosts>:teardown | `Error` | 855.313
    test_router_dns_guestipquery | Success | 76.640
    test_router_dns_externalipquery | Success | 0.054
    test_reboot_router | Success | 629.192
    test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Success | 76.555
    test_network_rules_acquired_public_ip_2_nat_rule | Success | 61.441
    test_network_rules_acquired_public_ip_1_static_nat_rule | Success | 124.970
    test_network_acl | Success | 151.231
    test_deployvm_userdata_post | Success | 30.430
    test_deployvm_userdata | Success | 211.457
    test_deploy_vm_from_iso | Success | 458.299
    test_createRegion | Success | 0.041
    test_assign_and_removal_lb | Success | 148.691
    test_10_destroy_cpvm | Success | 261.579
    test_10_attachAndDetach_iso | Success | 71.746
    test_09_destroy_ssvm | Success | 244.470
    test_08_reboot_cpvm | Success | 156.414
    test_07_reboot_ssvm | Success | 158.193
    test_06_stop_cpvm | Success | 176.587
    test_06_download_detached_volume | Success | 55.413
    test_05_stop_ssvm | Success | 173.415
    test_05_rvpc_multi_tiers | Success | 684.340
    test_04_rvpc_network_garbage_collector_nics | Success | 880.461
    test_04_restart_network_wo_cleanup | Success | 5.583
    test_04_extract_template | Success | 10.176
    test_04_extract_Iso | Success | 5.132
    test_04_cpvm_internals | Success | 1.087
    test_04_change_offering_small | Success | 96.901
    test_03_ssvm_internals | Success | 3.339
    test_03_delete_vm_snapshots | Success | 275.207
    test_03_delete_iso | Success | 95.118
    test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Success | 736.715
    test_02_revert_vm_snapshots | Success | 227.063
    test_02_redundant_VPC_default_routes | Success | 651.796
    test_02_port_fwd_on_non_src_nat | Success | 55.453
    test_02_isolate_network_FW_PF_default_routes_egress_false | Success | 321.366
    test_02_edit_iso | Success | 0.066
    test_02_deploy_vm_root_resize | Success | 6.193
    test_02_create_lb_rule_non_nat | Success | 207.381
    test_02_attach_volume | Success | 48.971
    test_02_VPC_default_routes | Success | 324.804
    test_01_snapshot_root_disk | Success | 146.564
    test_01_router_internal_basic | Success | 0.488
    test_01_port_fwd_on_src_nat | Success | 111.674
    test_01_nic | Success | 795.582
    test_01_isolate_network_FW_PF_default_routes_egress_true | Success | 306.420
    test_01_deploy_vm_root_resize | Success | 6.179
    test_01_create_volume | Success | 512.345
    test_01_create_vm_snapshots | Success | 161.679
    test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Success | 1372.001
    test_01_create_lb_rule_src_nat | Success | 207.685
    test_01_create_iso | Success | 66.303
    test_01_VPC_nics_after_destroy | Success | 674.828
    test_00_deploy_vm_root_resize | Success | 6.339
    test_deploy_vgpu_enabled_vm | Skipped | 0.004
    test_08_resize_volume | Skipped | 5.092
    test_07_resize_fail | Skipped | 10.196
    test_06_copy_template | Skipped | 0.000
    test_01_primary_storage_iscsi | Skipped | 0.028



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by murali-reddy <gi...@git.apache.org>.
Github user murali-reddy commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan test centos7 kvm-centos7


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/cloudstack/pull/1659


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan package


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76494044
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestPortForwarding,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_port_forwarding_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for port forwarding on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. create a port forwarding on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    +        # Check if VM is in Running state before creating NAT and firewall rules
    +        vm_response = VirtualMachine.list(
    +            self.apiclient,
    +            id=self.virtual_machine.id
    +        )
    +
    +        self.assertEqual(
    +            isinstance(vm_response, list),
    +            True,
    +            "Check list VM returns a valid list"
    +        )
    +
    +        self.assertNotEqual(
    +            len(vm_response),
    +            0,
    +            "Check Port Forwarding Rule is created"
    +        )
    +        self.assertEqual(
    +            vm_response[0].state,
    +            'Running',
    +            "VM state should be Running before creating a NAT rule."
    +        )
    +
    +        # Open up firewall port for SSH
    +        FireWallRule.create(
    +            self.apiclient,
    +            ipaddressid=ip_address.ipaddress.id,
    +            protocol=self.services["natrule"]["protocol"],
    +            cidrlist=['0.0.0.0/0'],
    +            startport=self.services["natrule"]["publicport"],
    +            endport=self.services["natrule"]["publicport"]
    +        )
    +
    +        # Create PF rule
    +        nat_rule = NATRule.create(
    +            self.apiclient,
    +            self.virtual_machine,
    +            self.services["natrule"],
    +            ip_address.ipaddress.id
    +        )
    --- End diff --
    
    Please add assertions to verify the ``nat_rule`` is not ``None`` and valid.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76493975
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestPortForwarding,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_port_forwarding_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for port forwarding on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. create a port forwarding on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    +        # Check if VM is in Running state before creating NAT and firewall rules
    +        vm_response = VirtualMachine.list(
    +            self.apiclient,
    +            id=self.virtual_machine.id
    +        )
    +
    +        self.assertEqual(
    +            isinstance(vm_response, list),
    +            True,
    +            "Check list VM returns a valid list"
    +        )
    +
    +        self.assertNotEqual(
    +            len(vm_response),
    +            0,
    +            "Check Port Forwarding Rule is created"
    +        )
    +        self.assertEqual(
    +            vm_response[0].state,
    +            'Running',
    +            "VM state should be Running before creating a NAT rule."
    +        )
    +
    +        # Open up firewall port for SSH
    +        FireWallRule.create(
    +            self.apiclient,
    +            ipaddressid=ip_address.ipaddress.id,
    +            protocol=self.services["natrule"]["protocol"],
    +            cidrlist=['0.0.0.0/0'],
    +            startport=self.services["natrule"]["publicport"],
    +            endport=self.services["natrule"]["publicport"]
    +        )
    --- End diff --
    
    Should we need to test CIDRs in addition to ``0.0.0.0/0`?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Packaging result: \u2714centos6 \u2714centos7 \u2714debian. JID-32


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @rhtyd a Trillian-Jenkins matrix job (centos6 mgmt + xs65sp1, centos7 mgmt + vmware55u3, centos7 mgmt + kvmcentos7) has been kicked to run smoke tests


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    <b>Trillian test result (tid-483)</b>
    Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
    Total time taken: 27669 seconds
    Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t483-kvm-centos7.zip
    Test completed. 46 look ok, 2 have error(s)
    
    
    Test | Result | Time (s) | Test File
    --- | --- | --- | ---
    test_router_dhcp_opts | `Failure` | 21.15 | test_router_dhcphosts.py
    test_04_rvpc_privategw_static_routes | `Failure` | 378.21 | test_privategw_acl.py
    test_01_vpc_site2site_vpn | Success | 172.13 | test_vpc_vpn.py
    test_01_vpc_remote_access_vpn | Success | 66.21 | test_vpc_vpn.py
    test_01_redundant_vpc_site2site_vpn | Success | 291.96 | test_vpc_vpn.py
    test_02_VPC_default_routes | Success | 260.39 | test_vpc_router_nics.py
    test_01_VPC_nics_after_destroy | Success | 534.83 | test_vpc_router_nics.py
    test_05_rvpc_multi_tiers | Success | 522.10 | test_vpc_redundant.py
    test_04_rvpc_network_garbage_collector_nics | Success | 1432.06 | test_vpc_redundant.py
    test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Success | 630.09 | test_vpc_redundant.py
    test_02_redundant_VPC_default_routes | Success | 782.47 | test_vpc_redundant.py
    test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Success | 1324.79 | test_vpc_redundant.py
    test_09_delete_detached_volume | Success | 15.56 | test_volumes.py
    test_08_resize_volume | Success | 15.40 | test_volumes.py
    test_07_resize_fail | Success | 20.49 | test_volumes.py
    test_06_download_detached_volume | Success | 15.30 | test_volumes.py
    test_05_detach_volume | Success | 100.30 | test_volumes.py
    test_04_delete_attached_volume | Success | 10.22 | test_volumes.py
    test_03_download_attached_volume | Success | 15.35 | test_volumes.py
    test_02_attach_volume | Success | 43.83 | test_volumes.py
    test_01_create_volume | Success | 651.99 | test_volumes.py
    test_deploy_vm_multiple | Success | 233.55 | test_vm_life_cycle.py
    test_deploy_vm | Success | 0.03 | test_vm_life_cycle.py
    test_advZoneVirtualRouter | Success | 0.03 | test_vm_life_cycle.py
    test_10_attachAndDetach_iso | Success | 26.71 | test_vm_life_cycle.py
    test_09_expunge_vm | Success | 125.30 | test_vm_life_cycle.py
    test_08_migrate_vm | Success | 41.03 | test_vm_life_cycle.py
    test_07_restore_vm | Success | 0.14 | test_vm_life_cycle.py
    test_06_destroy_vm | Success | 125.89 | test_vm_life_cycle.py
    test_03_reboot_vm | Success | 125.94 | test_vm_life_cycle.py
    test_02_start_vm | Success | 10.21 | test_vm_life_cycle.py
    test_01_stop_vm | Success | 35.34 | test_vm_life_cycle.py
    test_CreateTemplateWithDuplicateName | Success | 85.97 | test_templates.py
    test_08_list_system_templates | Success | 0.03 | test_templates.py
    test_07_list_public_templates | Success | 0.04 | test_templates.py
    test_05_template_permissions | Success | 0.06 | test_templates.py
    test_04_extract_template | Success | 5.18 | test_templates.py
    test_03_delete_template | Success | 5.12 | test_templates.py
    test_02_edit_template | Success | 90.18 | test_templates.py
    test_01_create_template | Success | 55.56 | test_templates.py
    test_10_destroy_cpvm | Success | 136.43 | test_ssvm.py
    test_09_destroy_ssvm | Success | 163.87 | test_ssvm.py
    test_08_reboot_cpvm | Success | 131.75 | test_ssvm.py
    test_07_reboot_ssvm | Success | 103.19 | test_ssvm.py
    test_06_stop_cpvm | Success | 136.84 | test_ssvm.py
    test_05_stop_ssvm | Success | 133.42 | test_ssvm.py
    test_04_cpvm_internals | Success | 1.22 | test_ssvm.py
    test_03_ssvm_internals | Success | 2.94 | test_ssvm.py
    test_02_list_cpvm_vm | Success | 0.13 | test_ssvm.py
    test_01_list_sec_storage_vm | Success | 0.13 | test_ssvm.py
    test_01_snapshot_root_disk | Success | 11.50 | test_snapshots.py
    test_04_change_offering_small | Success | 239.69 | test_service_offerings.py
    test_03_delete_service_offering | Success | 0.05 | test_service_offerings.py
    test_02_edit_service_offering | Success | 0.09 | test_service_offerings.py
    test_01_create_service_offering | Success | 0.12 | test_service_offerings.py
    test_02_sys_template_ready | Success | 0.14 | test_secondary_storage.py
    test_01_sys_vm_start | Success | 0.20 | test_secondary_storage.py
    test_09_reboot_router | Success | 35.35 | test_routers.py
    test_08_start_router | Success | 25.26 | test_routers.py
    test_07_stop_router | Success | 10.16 | test_routers.py
    test_06_router_advanced | Success | 0.06 | test_routers.py
    test_05_router_basic | Success | 0.04 | test_routers.py
    test_04_restart_network_wo_cleanup | Success | 5.60 | test_routers.py
    test_03_restart_network_cleanup | Success | 55.53 | test_routers.py
    test_02_router_internal_adv | Success | 0.86 | test_routers.py
    test_01_router_internal_basic | Success | 0.47 | test_routers.py
    test_router_dns_guestipquery | Success | 76.86 | test_router_dns.py
    test_router_dns_externalipquery | Success | 0.09 | test_router_dns.py
    test_router_dhcphosts | Success | 277.11 | test_router_dhcphosts.py
    test_01_updatevolumedetail | Success | 0.09 | test_resource_detail.py
    test_01_reset_vm_on_reboot | Success | 131.00 | test_reset_vm_on_reboot.py
    test_createRegion | Success | 0.04 | test_regions.py
    test_create_pvlan_network | Success | 5.25 | test_pvlan.py
    test_dedicatePublicIpRange | Success | 0.50 | test_public_ip_range.py
    test_03_vpc_privategw_restart_vpc_cleanup | Success | 553.05 | test_privategw_acl.py
    test_02_vpc_privategw_static_routes | Success | 356.47 | test_privategw_acl.py
    test_01_vpc_privategw_acl | Success | 93.32 | test_privategw_acl.py
    test_01_primary_storage_nfs | Success | 36.05 | test_primary_storage.py
    test_createPortablePublicIPRange | Success | 15.20 | test_portable_publicip.py
    test_createPortablePublicIPAcquire | Success | 15.48 | test_portable_publicip.py
    test_isolate_network_password_server | Success | 86.69 | test_password_server.py
    test_UpdateStorageOverProvisioningFactor | Success | 0.18 | test_over_provisioning.py
    test_oobm_zchange_password | Success | 25.71 | test_outofbandmanagement.py
    test_oobm_multiple_mgmt_server_ownership | Success | 11.35 | test_outofbandmanagement.py
    test_oobm_issue_power_status | Success | 15.43 | test_outofbandmanagement.py
    test_oobm_issue_power_soft | Success | 15.36 | test_outofbandmanagement.py
    test_oobm_issue_power_reset | Success | 15.36 | test_outofbandmanagement.py
    test_oobm_issue_power_on | Success | 15.34 | test_outofbandmanagement.py
    test_oobm_issue_power_off | Success | 15.34 | test_outofbandmanagement.py
    test_oobm_issue_power_cycle | Success | 15.35 | test_outofbandmanagement.py
    test_oobm_enabledisable_across_clusterzones | Success | 82.67 | test_outofbandmanagement.py
    test_oobm_enable_feature_valid | Success | 5.17 | test_outofbandmanagement.py
    test_oobm_enable_feature_invalid | Success | 0.11 | test_outofbandmanagement.py
    test_oobm_disable_feature_valid | Success | 5.22 | test_outofbandmanagement.py
    test_oobm_disable_feature_invalid | Success | 0.11 | test_outofbandmanagement.py
    test_oobm_configure_invalid_driver | Success | 0.09 | test_outofbandmanagement.py
    test_oobm_configure_default_driver | Success | 0.08 | test_outofbandmanagement.py
    test_oobm_background_powerstate_sync | Success | 29.51 | test_outofbandmanagement.py
    test_extendPhysicalNetworkVlan | Success | 15.34 | test_non_contigiousvlan.py
    test_01_nic | Success | 582.47 | test_nic.py
    test_releaseIP | Success | 289.24 | test_network.py
    test_reboot_router | Success | 401.53 | test_network.py
    test_public_ip_user_account | Success | 10.28 | test_network.py
    test_public_ip_admin_account | Success | 40.29 | test_network.py
    test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Success | 67.09 | test_network.py
    test_network_rules_acquired_public_ip_2_nat_rule | Success | 61.83 | test_network.py
    test_network_rules_acquired_public_ip_1_static_nat_rule | Success | 124.52 | test_network.py
    test_delete_account | Success | 319.81 | test_network.py
    test_02_port_fwd_on_non_src_nat | Success | 55.72 | test_network.py
    test_01_port_fwd_on_src_nat | Success | 112.77 | test_network.py
    test_nic_secondaryip_add_remove | Success | 199.01 | test_multipleips_per_nic.py
    login_test_saml_user | Success | 25.81 | test_login.py
    test_assign_and_removal_lb | Success | 133.94 | test_loadbalance.py
    test_02_create_lb_rule_non_nat | Success | 187.27 | test_loadbalance.py
    test_01_create_lb_rule_src_nat | Success | 217.92 | test_loadbalance.py
    test_03_list_snapshots | Success | 0.08 | test_list_ids_parameter.py
    test_02_list_templates | Success | 0.04 | test_list_ids_parameter.py
    test_01_list_volumes | Success | 0.03 | test_list_ids_parameter.py
    test_07_list_default_iso | Success | 0.07 | test_iso.py
    test_05_iso_permissions | Success | 0.09 | test_iso.py
    test_04_extract_Iso | Success | 5.26 | test_iso.py
    test_03_delete_iso | Success | 95.18 | test_iso.py
    test_02_edit_iso | Success | 0.06 | test_iso.py
    test_01_create_iso | Success | 21.93 | test_iso.py
    test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Success | 258.42 | test_internal_lb.py
    test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Success | 203.65 | test_internal_lb.py
    test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Success | 516.30 | test_internal_lb.py
    test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Success | 429.67 | test_internal_lb.py
    test_dedicateGuestVlanRange | Success | 10.30 | test_guest_vlan_range.py
    test_UpdateConfigParamWithScope | Success | 0.15 | test_global_settings.py
    test_rolepermission_lifecycle_update | Success | 7.25 | test_dynamicroles.py
    test_rolepermission_lifecycle_list | Success | 6.94 | test_dynamicroles.py
    test_rolepermission_lifecycle_delete | Success | 6.89 | test_dynamicroles.py
    test_rolepermission_lifecycle_create | Success | 6.82 | test_dynamicroles.py
    test_rolepermission_lifecycle_concurrent_updates | Success | 6.92 | test_dynamicroles.py
    test_role_lifecycle_update_role_inuse | Success | 6.82 | test_dynamicroles.py
    test_role_lifecycle_update | Success | 6.87 | test_dynamicroles.py
    test_role_lifecycle_list | Success | 6.86 | test_dynamicroles.py
    test_role_lifecycle_delete | Success | 11.89 | test_dynamicroles.py
    test_role_lifecycle_create | Success | 6.82 | test_dynamicroles.py
    test_role_inuse_deletion | Success | 6.82 | test_dynamicroles.py
    test_role_account_acls_multiple_mgmt_servers | Success | 9.28 | test_dynamicroles.py
    test_role_account_acls | Success | 9.52 | test_dynamicroles.py
    test_default_role_deletion | Success | 6.92 | test_dynamicroles.py
    test_04_create_fat_type_disk_offering | Success | 0.09 | test_disk_offerings.py
    test_03_delete_disk_offering | Success | 0.04 | test_disk_offerings.py
    test_02_edit_disk_offering | Success | 0.06 | test_disk_offerings.py
    test_02_create_sparse_type_disk_offering | Success | 0.08 | test_disk_offerings.py
    test_01_create_disk_offering | Success | 0.11 | test_disk_offerings.py
    test_deployvm_userdispersing | Success | 20.60 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userconcentrated | Success | 50.83 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_firstfit | Success | 70.89 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userdata_post | Success | 10.43 | test_deploy_vm_with_userdata.py
    test_deployvm_userdata | Success | 60.81 | test_deploy_vm_with_userdata.py
    test_02_deploy_vm_root_resize | Success | 7.16 | test_deploy_vm_root_resize.py
    test_01_deploy_vm_root_resize | Success | 7.88 | test_deploy_vm_root_resize.py
    test_00_deploy_vm_root_resize | Success | 274.02 | test_deploy_vm_root_resize.py
    test_deploy_vm_from_iso | Success | 214.00 | test_deploy_vm_iso.py
    test_DeployVmAntiAffinityGroup | Success | 61.02 | test_affinity_groups.py
    test_03_delete_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_02_revert_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_01_test_vm_volume_snapshot | Skipped | 0.00 | test_vm_snapshots.py
    test_01_create_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_06_copy_template | Skipped | 0.00 | test_templates.py
    test_static_role_account_acls | Skipped | 0.02 | test_staticroles.py
    test_01_scale_vm | Skipped | 0.00 | test_scale_vm.py
    test_01_primary_storage_iscsi | Skipped | 0.04 | test_primary_storage.py
    test_06_copy_iso | Skipped | 0.00 | test_iso.py
    test_deploy_vgpu_enabled_vm | Skipped | 0.01 | test_deploy_vgpu_enabled_vm.py



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76484318
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestPortForwarding,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_port_forwarding_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for port forwarding on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. create a port forwarding on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    --- End diff --
    
    Add an assertion to validate the ``dedicate_ip_range_response`` is not ``None`` or has an error.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by dsclose <gi...@git.apache.org>.
Github user dsclose commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy - thank you for picking this up. Let me know when you think it's appropriate to close PR #1519 and I shall do so.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by murali-reddy <gi...@git.apache.org>.
Github user murali-reddy commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    component test results. If any one wish to run component test test_multiple_public_interfaces.py, add a new public ip range in the test_daya.py, in the 'publiciprange' dict object.
    
    Test iptable rules in case we have IP associated with a network which is in ... === TestName: test_iptable_rules | Status : SUCCESS ===
    ok
    Test for port forwarding on a IP which is in pubic IP range different ... === TestName: test_port_forwarding_on_ip_from_non_src_nat_ip_range | Status : SUCCESS ===
    ok
    Test routing table in case we have IP associated with a network which is in ... === TestName: test_routing_tables | Status : SUCCESS ===
    ok
    Test for static nat on a IP which is in pubic IP range different ... === TestName: test_static_nat_on_ip_from_non_src_nat_ip_range | Status : SUCCESS ===
    ok
    Test Create VPC PF rules on acquired public ip when VpcVirtualRouter is Running ... === TestName: test_network_services_VPC_CreatePF | Status : SUCCESS ===
    ok
    Test Create VPC PF rules on acquired public ip when VpcVirtualRouter is Running ... === TestName: test_network_services_VPC_CreatePF | Status : SUCCESS ===
    ok
    
    ----------------------------------------------------------------------
    Ran 6 tests in 1539.183s
    
    OK


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by abhinandanprateek <gi...@git.apache.org>.
Github user abhinandanprateek commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Did a code walk-thru and review with @murali-reddy, LGTM.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Test lgtm, @murali-reddy are we good on this PR? I'm seeing some failures though not sure if they related to your changes. /cc @jburwell @abhinandanprateek 


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76484499
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestPortForwarding,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_port_forwarding_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for port forwarding on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. create a port forwarding on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    --- End diff --
    
    Add an assertion to validate the `ip_range`` is not ``None`` or has an error.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy can you check why we've test failures for KVM? Also, if the integration tests don't take a lot of time (few minutes to half hour) can you move it to smoke tests?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    <b>Trillian test result (tid-440)</b>
    Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
    Total time taken: 33701 seconds
    Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t440-kvm-centos7.zip
    Test completed. 35 look ok, 13 have error(s)
    
    
    Test | Result | Time (s) | Test File
    --- | --- | --- | ---
    test_02_VPC_default_routes | `Failure` | 812.61 | test_vpc_router_nics.py
    test_01_VPC_nics_after_destroy | `Failure` | 802.74 | test_vpc_router_nics.py
    test_05_rvpc_multi_tiers | `Failure` | 344.39 | test_vpc_redundant.py
    test_04_rvpc_network_garbage_collector_nics | `Failure` | 292.52 | test_vpc_redundant.py
    test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | `Failure` | 308.11 | test_vpc_redundant.py
    test_02_redundant_VPC_default_routes | `Failure` | 850.49 | test_vpc_redundant.py
    test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | `Failure` | 369.71 | test_vpc_redundant.py
    test_02_attach_volume | `Failure` | 668.65 | test_volumes.py
    test_01_create_volume | `Failure` | 683.96 | test_volumes.py
    test_10_attachAndDetach_iso | `Failure` | 684.02 | test_vm_life_cycle.py
    test_04_change_offering_small | `Failure` | 794.64 | test_service_offerings.py
    test_router_dns_guestipquery | `Failure` | 277.48 | test_router_dns.py
    test_router_dhcphosts | `Failure` | 188.70 | test_router_dhcphosts.py
    test_router_dhcp_opts | `Failure` | 21.10 | test_router_dhcphosts.py
    test_04_rvpc_privategw_static_routes | `Failure` | 994.91 | test_privategw_acl.py
    test_03_vpc_privategw_restart_vpc_cleanup | `Failure` | 934.94 | test_privategw_acl.py
    test_02_vpc_privategw_static_routes | `Failure` | 914.87 | test_privategw_acl.py
    test_isolate_network_password_server | `Failure` | 188.81 | test_password_server.py
    test_reboot_router | `Failure` | 442.02 | test_network.py
    test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | `Failure` | 831.79 | test_network.py
    test_network_rules_acquired_public_ip_2_nat_rule | `Failure` | 679.53 | test_network.py
    test_network_rules_acquired_public_ip_1_static_nat_rule | `Failure` | 675.65 | test_network.py
    test_02_port_fwd_on_non_src_nat | `Failure` | 678.93 | test_network.py
    test_01_port_fwd_on_src_nat | `Failure` | 673.81 | test_network.py
    test_assign_and_removal_lb | `Failure` | 110.44 | test_loadbalance.py
    test_02_create_lb_rule_non_nat | `Failure` | 110.40 | test_loadbalance.py
    test_01_create_lb_rule_src_nat | `Failure` | 110.55 | test_loadbalance.py
    test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | `Failure` | 275.29 | test_internal_lb.py
    test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | `Failure` | 209.92 | test_internal_lb.py
    test_01_vpc_site2site_vpn | `Error` | 295.74 | test_vpc_vpn.py
    test_01_redundant_vpc_site2site_vpn | `Error` | 376.30 | test_vpc_vpn.py
    test_05_rvpc_multi_tiers | `Error` | 405.30 | test_vpc_redundant.py
    ContextSuite context=TestRouterDHCPHosts>:teardown | `Error` | 234.13 | test_router_dhcphosts.py
    test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | `Error` | 230.33 | test_internal_lb.py
    test_03_vpc_internallb_haproxy_stats_on_all_interfaces | `Error` | 215.26 | test_internal_lb.py
    test_01_vpc_remote_access_vpn | Success | 61.08 | test_vpc_vpn.py
    test_09_delete_detached_volume | Success | 15.48 | test_volumes.py
    test_08_resize_volume | Success | 15.38 | test_volumes.py
    test_07_resize_fail | Success | 20.50 | test_volumes.py
    test_06_download_detached_volume | Success | 15.29 | test_volumes.py
    test_05_detach_volume | Success | 100.28 | test_volumes.py
    test_04_delete_attached_volume | Success | 10.23 | test_volumes.py
    test_03_download_attached_volume | Success | 15.28 | test_volumes.py
    test_deploy_vm_multiple | Success | 289.44 | test_vm_life_cycle.py
    test_deploy_vm | Success | 0.03 | test_vm_life_cycle.py
    test_advZoneVirtualRouter | Success | 0.02 | test_vm_life_cycle.py
    test_09_expunge_vm | Success | 125.20 | test_vm_life_cycle.py
    test_08_migrate_vm | Success | 30.93 | test_vm_life_cycle.py
    test_07_restore_vm | Success | 0.13 | test_vm_life_cycle.py
    test_06_destroy_vm | Success | 125.84 | test_vm_life_cycle.py
    test_03_reboot_vm | Success | 125.81 | test_vm_life_cycle.py
    test_02_start_vm | Success | 5.14 | test_vm_life_cycle.py
    test_01_stop_vm | Success | 125.89 | test_vm_life_cycle.py
    test_CreateTemplateWithDuplicateName | Success | 171.46 | test_templates.py
    test_08_list_system_templates | Success | 0.03 | test_templates.py
    test_07_list_public_templates | Success | 0.04 | test_templates.py
    test_05_template_permissions | Success | 0.07 | test_templates.py
    test_04_extract_template | Success | 5.22 | test_templates.py
    test_03_delete_template | Success | 5.11 | test_templates.py
    test_02_edit_template | Success | 90.15 | test_templates.py
    test_01_create_template | Success | 65.55 | test_templates.py
    test_10_destroy_cpvm | Success | 166.42 | test_ssvm.py
    test_09_destroy_ssvm | Success | 163.29 | test_ssvm.py
    test_08_reboot_cpvm | Success | 131.57 | test_ssvm.py
    test_07_reboot_ssvm | Success | 133.51 | test_ssvm.py
    test_06_stop_cpvm | Success | 131.72 | test_ssvm.py
    test_05_stop_ssvm | Success | 133.83 | test_ssvm.py
    test_04_cpvm_internals | Success | 1.17 | test_ssvm.py
    test_03_ssvm_internals | Success | 3.29 | test_ssvm.py
    test_02_list_cpvm_vm | Success | 0.12 | test_ssvm.py
    test_01_list_sec_storage_vm | Success | 0.13 | test_ssvm.py
    test_01_snapshot_root_disk | Success | 11.32 | test_snapshots.py
    test_03_delete_service_offering | Success | 0.04 | test_service_offerings.py
    test_02_edit_service_offering | Success | 0.09 | test_service_offerings.py
    test_01_create_service_offering | Success | 0.11 | test_service_offerings.py
    test_02_sys_template_ready | Success | 0.12 | test_secondary_storage.py
    test_01_sys_vm_start | Success | 0.18 | test_secondary_storage.py
    test_09_reboot_router | Success | 30.26 | test_routers.py
    test_08_start_router | Success | 20.23 | test_routers.py
    test_07_stop_router | Success | 10.16 | test_routers.py
    test_06_router_advanced | Success | 0.06 | test_routers.py
    test_05_router_basic | Success | 0.04 | test_routers.py
    test_04_restart_network_wo_cleanup | Success | 5.57 | test_routers.py
    test_03_restart_network_cleanup | Success | 60.52 | test_routers.py
    test_02_router_internal_adv | Success | 0.84 | test_routers.py
    test_01_router_internal_basic | Success | 0.46 | test_routers.py
    test_router_dns_externalipquery | Success | 0.08 | test_router_dns.py
    test_01_updatevolumedetail | Success | 5.12 | test_resource_detail.py
    test_01_reset_vm_on_reboot | Success | 130.89 | test_reset_vm_on_reboot.py
    test_createRegion | Success | 0.04 | test_regions.py
    test_create_pvlan_network | Success | 5.22 | test_pvlan.py
    test_dedicatePublicIpRange | Success | 0.42 | test_public_ip_range.py
    test_01_vpc_privategw_acl | Success | 93.16 | test_privategw_acl.py
    test_01_primary_storage_nfs | Success | 35.76 | test_primary_storage.py
    test_createPortablePublicIPRange | Success | 15.19 | test_portable_publicip.py
    test_createPortablePublicIPAcquire | Success | 15.44 | test_portable_publicip.py
    test_UpdateStorageOverProvisioningFactor | Success | 0.14 | test_over_provisioning.py
    test_oobm_zchange_password | Success | 20.52 | test_outofbandmanagement.py
    test_oobm_multiple_mgmt_server_ownership | Success | 16.52 | test_outofbandmanagement.py
    test_oobm_issue_power_status | Success | 5.50 | test_outofbandmanagement.py
    test_oobm_issue_power_soft | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_reset | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_on | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_off | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_cycle | Success | 16.02 | test_outofbandmanagement.py
    test_oobm_enabledisable_across_clusterzones | Success | 57.25 | test_outofbandmanagement.py
    test_oobm_enable_feature_valid | Success | 5.17 | test_outofbandmanagement.py
    test_oobm_enable_feature_invalid | Success | 0.11 | test_outofbandmanagement.py
    test_oobm_disable_feature_valid | Success | 5.21 | test_outofbandmanagement.py
    test_oobm_disable_feature_invalid | Success | 0.12 | test_outofbandmanagement.py
    test_oobm_configure_invalid_driver | Success | 0.09 | test_outofbandmanagement.py
    test_oobm_configure_default_driver | Success | 0.09 | test_outofbandmanagement.py
    test_oobm_background_powerstate_sync | Success | 29.52 | test_outofbandmanagement.py
    test_extendPhysicalNetworkVlan | Success | 15.31 | test_non_contigiousvlan.py
    test_01_nic | Success | 500.69 | test_nic.py
    test_releaseIP | Success | 243.69 | test_network.py
    test_public_ip_user_account | Success | 10.27 | test_network.py
    test_public_ip_admin_account | Success | 40.27 | test_network.py
    test_delete_account | Success | 334.44 | test_network.py
    test_nic_secondaryip_add_remove | Success | 198.79 | test_multipleips_per_nic.py
    login_test_saml_user | Success | 24.60 | test_login.py
    test_03_list_snapshots | Success | 0.08 | test_list_ids_parameter.py
    test_02_list_templates | Success | 0.04 | test_list_ids_parameter.py
    test_01_list_volumes | Success | 0.03 | test_list_ids_parameter.py
    test_07_list_default_iso | Success | 0.06 | test_iso.py
    test_05_iso_permissions | Success | 0.14 | test_iso.py
    test_04_extract_Iso | Success | 5.16 | test_iso.py
    test_03_delete_iso | Success | 95.13 | test_iso.py
    test_02_edit_iso | Success | 0.06 | test_iso.py
    test_01_create_iso | Success | 21.88 | test_iso.py
    test_dedicateGuestVlanRange | Success | 10.28 | test_guest_vlan_range.py
    test_UpdateConfigParamWithScope | Success | 0.16 | test_global_settings.py
    test_rolepermission_lifecycle_update | Success | 7.15 | test_dynamicroles.py
    test_rolepermission_lifecycle_list | Success | 6.87 | test_dynamicroles.py
    test_rolepermission_lifecycle_delete | Success | 6.74 | test_dynamicroles.py
    test_rolepermission_lifecycle_create | Success | 6.84 | test_dynamicroles.py
    test_rolepermission_lifecycle_concurrent_updates | Success | 6.90 | test_dynamicroles.py
    test_role_lifecycle_update_role_inuse | Success | 6.83 | test_dynamicroles.py
    test_role_lifecycle_update | Success | 11.93 | test_dynamicroles.py
    test_role_lifecycle_list | Success | 6.98 | test_dynamicroles.py
    test_role_lifecycle_delete | Success | 11.87 | test_dynamicroles.py
    test_role_lifecycle_create | Success | 6.78 | test_dynamicroles.py
    test_role_inuse_deletion | Success | 6.78 | test_dynamicroles.py
    test_role_account_acls_multiple_mgmt_servers | Success | 9.06 | test_dynamicroles.py
    test_role_account_acls | Success | 9.43 | test_dynamicroles.py
    test_default_role_deletion | Success | 7.04 | test_dynamicroles.py
    test_04_create_fat_type_disk_offering | Success | 0.06 | test_disk_offerings.py
    test_03_delete_disk_offering | Success | 0.04 | test_disk_offerings.py
    test_02_edit_disk_offering | Success | 0.05 | test_disk_offerings.py
    test_02_create_sparse_type_disk_offering | Success | 0.07 | test_disk_offerings.py
    test_01_create_disk_offering | Success | 0.11 | test_disk_offerings.py
    test_deployvm_userdispersing | Success | 20.61 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userconcentrated | Success | 10.56 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_firstfit | Success | 126.22 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userdata_post | Success | 50.80 | test_deploy_vm_with_userdata.py
    test_deployvm_userdata | Success | 55.91 | test_deploy_vm_with_userdata.py
    test_02_deploy_vm_root_resize | Success | 7.06 | test_deploy_vm_root_resize.py
    test_01_deploy_vm_root_resize | Success | 6.89 | test_deploy_vm_root_resize.py
    test_00_deploy_vm_root_resize | Success | 258.72 | test_deploy_vm_root_resize.py
    test_deploy_vm_from_iso | Success | 203.35 | test_deploy_vm_iso.py
    test_DeployVmAntiAffinityGroup | Success | 126.56 | test_affinity_groups.py
    test_03_delete_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_02_revert_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_01_test_vm_volume_snapshot | Skipped | 0.00 | test_vm_snapshots.py
    test_01_create_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_06_copy_template | Skipped | 0.00 | test_templates.py
    test_static_role_account_acls | Skipped | 0.02 | test_staticroles.py
    test_01_scale_vm | Skipped | 0.00 | test_scale_vm.py
    test_01_primary_storage_iscsi | Skipped | 0.03 | test_primary_storage.py
    test_06_copy_iso | Skipped | 0.00 | test_iso.py
    test_deploy_vgpu_enabled_vm | Skipped | 0.00 | test_deploy_vgpu_enabled_vm.py



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76493886
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestPortForwarding,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_port_forwarding_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for port forwarding on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. create a port forwarding on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    +        # Check if VM is in Running state before creating NAT and firewall rules
    +        vm_response = VirtualMachine.list(
    +            self.apiclient,
    +            id=self.virtual_machine.id
    +        )
    +
    +        self.assertEqual(
    +            isinstance(vm_response, list),
    +            True,
    +            "Check list VM returns a valid list"
    +        )
    +
    +        self.assertNotEqual(
    +            len(vm_response),
    +            0,
    +            "Check Port Forwarding Rule is created"
    +        )
    +        self.assertEqual(
    +            vm_response[0].state,
    +            'Running',
    +            "VM state should be Running before creating a NAT rule."
    +        )
    +
    +        # Open up firewall port for SSH
    +        FireWallRule.create(
    +            self.apiclient,
    +            ipaddressid=ip_address.ipaddress.id,
    +            protocol=self.services["natrule"]["protocol"],
    +            cidrlist=['0.0.0.0/0'],
    +            startport=self.services["natrule"]["publicport"],
    +            endport=self.services["natrule"]["publicport"]
    +        )
    +
    +        # Create PF rule
    +        nat_rule = NATRule.create(
    +            self.apiclient,
    +            self.virtual_machine,
    +            self.services["natrule"],
    +            ip_address.ipaddress.id
    +        )
    +
    +        try:
    +            logger.debug("SSHing into VM with IP address %s with NAT IP %s" %
    +                       (
    +                           self.virtual_machine.ipaddress,
    +                           ip_address.ipaddress.ipaddress
    +                       ))
    +            self.virtual_machine.get_ssh_client(ip_address.ipaddress.ipaddress)
    +        except Exception as e:
    +            self.fail(
    +                "SSH Access failed for %s: %s" %
    +                (self.virtual_machine.ipaddress, e)
    +            )
    --- End diff --
    
    Lines 213-224 seem like a good candidate to extract to utility function in the utils module.  Verifying that we can connect via SSH to a host seems like a fairly common test task.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @dsclose what is your opinion of the changes in this PR relative to your work?  Do you see any gaps or missing pieces?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76481464
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/configure.py ---
    @@ -884,6 +884,13 @@ def processStaticNatRule(self, rule):
             device = self.getDeviceByIp(rule["public_ip"])
             if device is None:
                 raise Exception("Ip address %s has no device in the ips databag" % rule["public_ip"])
    +
    +        self.fw.append(["mangle", "",
    +                        "-A PREROUTING -s %s/32 -m state --state NEW -j MARK --set-xmark 0x%s/0xffffffff" % \
    +                        (rule["internal_ip"], device[len("eth"):])])
    +        self.fw.append(["mangle", "",
    +                        "-A PREROUTING -s %s/32 -m state --state NEW -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff" % \
    --- End diff --
    
    Is there value in extracting the ``0xffffffff`` to a constant?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by milamberspace <gi...@git.apache.org>.
Github user milamberspace commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy @rhtyd Possible regression introduce by the PR1659 see https://issues.apache.org/jira/browse/CLOUDSTACK-9770


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    <b>Trillian test result (tid-464)</b>
    Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
    Total time taken: 28781 seconds
    Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t464-kvm-centos7.zip
    Test completed. 44 look ok, 4 have error(s)
    
    
    Test | Result | Time (s) | Test File
    --- | --- | --- | ---
    test_02_redundant_VPC_default_routes | `Failure` | 920.96 | test_vpc_redundant.py
    test_router_dhcp_opts | `Failure` | 21.30 | test_router_dhcphosts.py
    test_04_rvpc_privategw_static_routes | `Failure` | 406.87 | test_privategw_acl.py
    test_03_vpc_privategw_restart_vpc_cleanup | `Failure` | 255.61 | test_privategw_acl.py
    test_02_vpc_privategw_static_routes | `Failure` | 296.51 | test_privategw_acl.py
    test_04_extract_template | `Error` | 5.12 | test_templates.py
    test_01_vpc_site2site_vpn | Success | 161.06 | test_vpc_vpn.py
    test_01_vpc_remote_access_vpn | Success | 91.39 | test_vpc_vpn.py
    test_01_redundant_vpc_site2site_vpn | Success | 321.88 | test_vpc_vpn.py
    test_02_VPC_default_routes | Success | 285.18 | test_vpc_router_nics.py
    test_01_VPC_nics_after_destroy | Success | 574.36 | test_vpc_router_nics.py
    test_05_rvpc_multi_tiers | Success | 528.63 | test_vpc_redundant.py
    test_04_rvpc_network_garbage_collector_nics | Success | 1394.26 | test_vpc_redundant.py
    test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Success | 565.28 | test_vpc_redundant.py
    test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Success | 1318.80 | test_vpc_redundant.py
    test_09_delete_detached_volume | Success | 15.88 | test_volumes.py
    test_08_resize_volume | Success | 15.55 | test_volumes.py
    test_07_resize_fail | Success | 20.50 | test_volumes.py
    test_06_download_detached_volume | Success | 15.36 | test_volumes.py
    test_05_detach_volume | Success | 100.23 | test_volumes.py
    test_04_delete_attached_volume | Success | 10.21 | test_volumes.py
    test_03_download_attached_volume | Success | 15.33 | test_volumes.py
    test_02_attach_volume | Success | 73.83 | test_volumes.py
    test_01_create_volume | Success | 711.70 | test_volumes.py
    test_deploy_vm_multiple | Success | 283.93 | test_vm_life_cycle.py
    test_deploy_vm | Success | 0.03 | test_vm_life_cycle.py
    test_advZoneVirtualRouter | Success | 0.02 | test_vm_life_cycle.py
    test_10_attachAndDetach_iso | Success | 26.65 | test_vm_life_cycle.py
    test_09_expunge_vm | Success | 125.21 | test_vm_life_cycle.py
    test_08_migrate_vm | Success | 81.24 | test_vm_life_cycle.py
    test_07_restore_vm | Success | 0.10 | test_vm_life_cycle.py
    test_06_destroy_vm | Success | 125.81 | test_vm_life_cycle.py
    test_03_reboot_vm | Success | 125.92 | test_vm_life_cycle.py
    test_02_start_vm | Success | 10.18 | test_vm_life_cycle.py
    test_01_stop_vm | Success | 40.35 | test_vm_life_cycle.py
    test_CreateTemplateWithDuplicateName | Success | 85.73 | test_templates.py
    test_08_list_system_templates | Success | 0.03 | test_templates.py
    test_07_list_public_templates | Success | 0.04 | test_templates.py
    test_05_template_permissions | Success | 0.06 | test_templates.py
    test_03_delete_template | Success | 5.11 | test_templates.py
    test_02_edit_template | Success | 90.19 | test_templates.py
    test_01_create_template | Success | 60.56 | test_templates.py
    test_10_destroy_cpvm | Success | 161.80 | test_ssvm.py
    test_09_destroy_ssvm | Success | 163.80 | test_ssvm.py
    test_08_reboot_cpvm | Success | 131.81 | test_ssvm.py
    test_07_reboot_ssvm | Success | 133.75 | test_ssvm.py
    test_06_stop_cpvm | Success | 131.92 | test_ssvm.py
    test_05_stop_ssvm | Success | 133.90 | test_ssvm.py
    test_04_cpvm_internals | Success | 1.27 | test_ssvm.py
    test_03_ssvm_internals | Success | 3.54 | test_ssvm.py
    test_02_list_cpvm_vm | Success | 0.15 | test_ssvm.py
    test_01_list_sec_storage_vm | Success | 0.13 | test_ssvm.py
    test_01_snapshot_root_disk | Success | 16.38 | test_snapshots.py
    test_04_change_offering_small | Success | 239.68 | test_service_offerings.py
    test_03_delete_service_offering | Success | 0.05 | test_service_offerings.py
    test_02_edit_service_offering | Success | 0.09 | test_service_offerings.py
    test_01_create_service_offering | Success | 0.12 | test_service_offerings.py
    test_02_sys_template_ready | Success | 0.17 | test_secondary_storage.py
    test_01_sys_vm_start | Success | 0.20 | test_secondary_storage.py
    test_09_reboot_router | Success | 40.34 | test_routers.py
    test_08_start_router | Success | 30.34 | test_routers.py
    test_07_stop_router | Success | 10.18 | test_routers.py
    test_06_router_advanced | Success | 0.06 | test_routers.py
    test_05_router_basic | Success | 0.04 | test_routers.py
    test_04_restart_network_wo_cleanup | Success | 5.71 | test_routers.py
    test_03_restart_network_cleanup | Success | 65.62 | test_routers.py
    test_02_router_internal_adv | Success | 1.12 | test_routers.py
    test_01_router_internal_basic | Success | 0.58 | test_routers.py
    test_router_dns_guestipquery | Success | 76.92 | test_router_dns.py
    test_router_dns_externalipquery | Success | 0.09 | test_router_dns.py
    test_router_dhcphosts | Success | 307.48 | test_router_dhcphosts.py
    test_01_updatevolumedetail | Success | 0.08 | test_resource_detail.py
    test_01_reset_vm_on_reboot | Success | 196.41 | test_reset_vm_on_reboot.py
    test_createRegion | Success | 0.04 | test_regions.py
    test_create_pvlan_network | Success | 5.25 | test_pvlan.py
    test_dedicatePublicIpRange | Success | 0.47 | test_public_ip_range.py
    test_01_vpc_privategw_acl | Success | 108.52 | test_privategw_acl.py
    test_01_primary_storage_nfs | Success | 35.81 | test_primary_storage.py
    test_createPortablePublicIPRange | Success | 15.39 | test_portable_publicip.py
    test_createPortablePublicIPAcquire | Success | 15.46 | test_portable_publicip.py
    test_isolate_network_password_server | Success | 89.46 | test_password_server.py
    test_UpdateStorageOverProvisioningFactor | Success | 0.13 | test_over_provisioning.py
    test_oobm_zchange_password | Success | 21.02 | test_outofbandmanagement.py
    test_oobm_multiple_mgmt_server_ownership | Success | 16.52 | test_outofbandmanagement.py
    test_oobm_issue_power_status | Success | 5.51 | test_outofbandmanagement.py
    test_oobm_issue_power_soft | Success | 15.51 | test_outofbandmanagement.py
    test_oobm_issue_power_reset | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_on | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_off | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_cycle | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_enabledisable_across_clusterzones | Success | 62.57 | test_outofbandmanagement.py
    test_oobm_enable_feature_valid | Success | 5.19 | test_outofbandmanagement.py
    test_oobm_enable_feature_invalid | Success | 0.12 | test_outofbandmanagement.py
    test_oobm_disable_feature_valid | Success | 5.23 | test_outofbandmanagement.py
    test_oobm_disable_feature_invalid | Success | 0.15 | test_outofbandmanagement.py
    test_oobm_configure_invalid_driver | Success | 0.11 | test_outofbandmanagement.py
    test_oobm_configure_default_driver | Success | 0.13 | test_outofbandmanagement.py
    test_oobm_background_powerstate_sync | Success | 29.57 | test_outofbandmanagement.py
    test_extendPhysicalNetworkVlan | Success | 15.39 | test_non_contigiousvlan.py
    test_01_nic | Success | 551.67 | test_nic.py
    test_releaseIP | Success | 289.31 | test_network.py
    test_reboot_router | Success | 475.17 | test_network.py
    test_public_ip_user_account | Success | 10.25 | test_network.py
    test_public_ip_admin_account | Success | 40.33 | test_network.py
    test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Success | 67.09 | test_network.py
    test_network_rules_acquired_public_ip_2_nat_rule | Success | 61.76 | test_network.py
    test_network_rules_acquired_public_ip_1_static_nat_rule | Success | 125.17 | test_network.py
    test_delete_account | Success | 354.55 | test_network.py
    test_02_port_fwd_on_non_src_nat | Success | 55.67 | test_network.py
    test_01_port_fwd_on_src_nat | Success | 111.88 | test_network.py
    test_nic_secondaryip_add_remove | Success | 224.06 | test_multipleips_per_nic.py
    login_test_saml_user | Success | 25.15 | test_login.py
    test_assign_and_removal_lb | Success | 133.95 | test_loadbalance.py
    test_02_create_lb_rule_non_nat | Success | 187.75 | test_loadbalance.py
    test_01_create_lb_rule_src_nat | Success | 187.96 | test_loadbalance.py
    test_03_list_snapshots | Success | 0.08 | test_list_ids_parameter.py
    test_02_list_templates | Success | 0.04 | test_list_ids_parameter.py
    test_01_list_volumes | Success | 0.03 | test_list_ids_parameter.py
    test_07_list_default_iso | Success | 0.07 | test_iso.py
    test_05_iso_permissions | Success | 0.07 | test_iso.py
    test_04_extract_Iso | Success | 5.26 | test_iso.py
    test_03_delete_iso | Success | 95.14 | test_iso.py
    test_02_edit_iso | Success | 0.06 | test_iso.py
    test_01_create_iso | Success | 21.94 | test_iso.py
    test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Success | 274.50 | test_internal_lb.py
    test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Success | 198.98 | test_internal_lb.py
    test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Success | 577.15 | test_internal_lb.py
    test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Success | 441.75 | test_internal_lb.py
    test_dedicateGuestVlanRange | Success | 10.38 | test_guest_vlan_range.py
    test_UpdateConfigParamWithScope | Success | 0.16 | test_global_settings.py
    test_rolepermission_lifecycle_update | Success | 7.21 | test_dynamicroles.py
    test_rolepermission_lifecycle_list | Success | 6.96 | test_dynamicroles.py
    test_rolepermission_lifecycle_delete | Success | 6.78 | test_dynamicroles.py
    test_rolepermission_lifecycle_create | Success | 6.90 | test_dynamicroles.py
    test_rolepermission_lifecycle_concurrent_updates | Success | 7.09 | test_dynamicroles.py
    test_role_lifecycle_update_role_inuse | Success | 6.87 | test_dynamicroles.py
    test_role_lifecycle_update | Success | 11.90 | test_dynamicroles.py
    test_role_lifecycle_list | Success | 6.90 | test_dynamicroles.py
    test_role_lifecycle_delete | Success | 11.86 | test_dynamicroles.py
    test_role_lifecycle_create | Success | 6.83 | test_dynamicroles.py
    test_role_inuse_deletion | Success | 6.83 | test_dynamicroles.py
    test_role_account_acls_multiple_mgmt_servers | Success | 9.03 | test_dynamicroles.py
    test_role_account_acls | Success | 9.14 | test_dynamicroles.py
    test_default_role_deletion | Success | 6.98 | test_dynamicroles.py
    test_04_create_fat_type_disk_offering | Success | 0.10 | test_disk_offerings.py
    test_03_delete_disk_offering | Success | 0.04 | test_disk_offerings.py
    test_02_edit_disk_offering | Success | 0.06 | test_disk_offerings.py
    test_02_create_sparse_type_disk_offering | Success | 0.09 | test_disk_offerings.py
    test_01_create_disk_offering | Success | 0.08 | test_disk_offerings.py
    test_deployvm_userdispersing | Success | 20.65 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userconcentrated | Success | 50.84 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_firstfit | Success | 192.16 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userdata_post | Success | 10.41 | test_deploy_vm_with_userdata.py
    test_deployvm_userdata | Success | 70.86 | test_deploy_vm_with_userdata.py
    test_02_deploy_vm_root_resize | Success | 6.95 | test_deploy_vm_root_resize.py
    test_01_deploy_vm_root_resize | Success | 6.97 | test_deploy_vm_root_resize.py
    test_00_deploy_vm_root_resize | Success | 259.00 | test_deploy_vm_root_resize.py
    test_deploy_vm_from_iso | Success | 238.68 | test_deploy_vm_iso.py
    test_DeployVmAntiAffinityGroup | Success | 131.38 | test_affinity_groups.py
    test_03_delete_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_02_revert_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_01_test_vm_volume_snapshot | Skipped | 0.00 | test_vm_snapshots.py
    test_01_create_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_06_copy_template | Skipped | 0.00 | test_templates.py
    test_static_role_account_acls | Skipped | 0.03 | test_staticroles.py
    test_01_scale_vm | Skipped | 0.00 | test_scale_vm.py
    test_01_primary_storage_iscsi | Skipped | 0.04 | test_primary_storage.py
    test_06_copy_iso | Skipped | 0.00 | test_iso.py
    test_deploy_vgpu_enabled_vm | Skipped | 0.01 | test_deploy_vgpu_enabled_vm.py



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan test


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Packaging result: \u2714centos6 \u2714centos7 \u2714debian. JID-263


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Packaging result: \u2716centos6 \u2714centos7 \u2714debian. JID-279


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan help


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by abhinandanprateek <gi...@git.apache.org>.
Github user abhinandanprateek commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    LGTM on code review and testing @murali-reddy @rhtyd 



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by abhinandanprateek <gi...@git.apache.org>.
Github user abhinandanprateek commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r80615061
  
    --- Diff: test/integration/component/test_multiple_public_interfaces.py ---
    @@ -0,0 +1,1365 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestPortForwarding,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_port_forwarding_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for port forwarding on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. create a port forwarding on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    +        # Check if VM is in Running state before creating NAT and firewall rules
    +        vm_response = VirtualMachine.list(
    +            self.apiclient,
    +            id=self.virtual_machine.id
    +        )
    +
    +        self.assertEqual(
    +            isinstance(vm_response, list),
    +            True,
    +            "Check list VM returns a valid list"
    +        )
    +
    +        self.assertNotEqual(
    +            len(vm_response),
    +            0,
    +            "Check Port Forwarding Rule is created"
    +        )
    +        self.assertEqual(
    +            vm_response[0].state,
    +            'Running',
    +            "VM state should be Running before creating a NAT rule."
    +        )
    +
    +        # Open up firewall port for SSH
    +        FireWallRule.create(
    +            self.apiclient,
    +            ipaddressid=ip_address.ipaddress.id,
    +            protocol=self.services["natrule"]["protocol"],
    +            cidrlist=['0.0.0.0/0'],
    +            startport=self.services["natrule"]["publicport"],
    +            endport=self.services["natrule"]["publicport"]
    +        )
    +
    +        # Create PF rule
    +        nat_rule = NATRule.create(
    +            self.apiclient,
    +            self.virtual_machine,
    +            self.services["natrule"],
    +            ip_address.ipaddress.id
    +        )
    +
    +        try:
    +            logger.debug("SSHing into VM with IP address %s with NAT IP %s" %
    +                       (
    +                           self.virtual_machine.ipaddress,
    +                           ip_address.ipaddress.ipaddress
    +                       ))
    +            self.virtual_machine.get_ssh_client(ip_address.ipaddress.ipaddress)
    +        except Exception as e:
    +            self.fail(
    +                "SSH Access failed for %s: %s" %
    +                (self.virtual_machine.ipaddress, e)
    +            )
    +
    +        nat_rule.delete(self.apiclient)
    +
    +class TestStaticNat(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestStaticNat, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls.defaultNetworkId = cls.virtual_machine.nic[0].networkid
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestStaticNat,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_static_nat_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for static nat on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. Enable static NAT on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    +        # Check if VM is in Running state before creating NAT and firewall rules
    +        vm_response = VirtualMachine.list(
    +            self.apiclient,
    +            id=self.virtual_machine.id
    +        )
    +
    +        self.assertEqual(
    +            isinstance(vm_response, list),
    +            True,
    +            "Check list VM returns a valid list"
    +        )
    +
    +        self.assertNotEqual(
    +            len(vm_response),
    +            0,
    +            "Check Port Forwarding Rule is created"
    +        )
    +        self.assertEqual(
    +            vm_response[0].state,
    +            'Running',
    +            "VM state should be Running before creating a NAT rule."
    +        )
    +
    +        # Open up firewall port for SSH
    +        FireWallRule.create(
    +            self.apiclient,
    +            ipaddressid=ip_address.ipaddress.id,
    +            protocol=self.services["natrule"]["protocol"],
    +            cidrlist=['0.0.0.0/0'],
    +            startport=self.services["natrule"]["publicport"],
    +            endport=self.services["natrule"]["publicport"]
    +        )
    +
    +        # Create Static NAT rule
    +        StaticNATRule.enable(
    +            self.apiclient,
    +            ip_address.ipaddress.id,
    +            self.virtual_machine.id,
    +            self.defaultNetworkId
    +        )
    +
    +        try:
    +            logger.debug("SSHing into VM with IP address %s with NAT IP %s" %
    +                       (
    +                           self.virtual_machine.ipaddress,
    +                           ip_address.ipaddress.ipaddress
    +                       ))
    +            self.virtual_machine.get_ssh_client(ip_address.ipaddress.ipaddress)
    +        except Exception as e:
    +            self.fail(
    +                "SSH Access failed for %s: %s" %
    +                (self.virtual_machine.ipaddress, e)
    +            )
    +
    +        StaticNATRule.disable(
    +            self.apiclient,
    +            ip_address.ipaddress.id,
    +            self.virtual_machine.id
    +        )
    +
    +class TestRouting(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestRouting, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestRouting,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_routing_tables(self):
    +        """Test routing table in case we have IP associated with a network which is in
    +            different pubic IP range from that of public IP range that has source NAT IP.
    +            When IP is associated we should see a new route table created.
    +            When IP is associated we should see a that route table is deleted.
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. Create a firewall rule to open up the port, so that IP is associated with network
    +        # 5. Login to VR and verify routing tables, there should be Table_eth3
    +        # 6. Delete firewall rule, since its last IP, routing table Table_eth3 should be deleted
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    +        # Check if VM is in Running state before creating NAT and firewall rules
    +        vm_response = VirtualMachine.list(
    +            self.apiclient,
    +            id=self.virtual_machine.id
    +        )
    +
    +        self.assertEqual(
    +            isinstance(vm_response, list),
    +            True,
    +            "Check list VM returns a valid list"
    +        )
    +
    +        self.assertNotEqual(
    +            len(vm_response),
    +            0,
    +            "Check Port Forwarding Rule is created"
    +        )
    +        self.assertEqual(
    +            vm_response[0].state,
    +            'Running',
    +            "VM state should be Running before creating Firewall rule."
    +        )
    +
    +        # Open up firewall port for SSH, this will associate IP with VR
    +        firewall_rule = FireWallRule.create(
    +            self.apiclient,
    +            ipaddressid=ip_address.ipaddress.id,
    +            protocol=self.services["natrule"]["protocol"],
    +            cidrlist=['0.0.0.0/0'],
    +            startport=self.services["natrule"]["publicport"],
    +            endport=self.services["natrule"]["publicport"]
    +        )
    +
    +        # Get the router details associated with account
    +        routers = list_routers(
    +            self.apiclient,
    +            account=self.account.name,
    +            domainid=self.account.domainid,
    +        )
    +        router = routers[0]
    +
    +        if (self.hypervisor.lower() == 'vmware'
    +                or self.hypervisor.lower() == 'hyperv'):
    +            result = get_process_status(
    +                self.apiclient.connection.mgtSvr,
    +                22,
    +                self.apiclient.connection.user,
    +                self.apiclient.connection.passwd,
    +                router.linklocalip,
    +                'ip route list table Table_eth3',
    +                hypervisor=self.hypervisor
    +            )
    +        else:
    +            hosts = list_hosts(
    +                self.apiclient,
    +                id=router.hostid,
    +            )
    +            self.assertEqual(
    +                isinstance(hosts, list),
    +                True,
    +                "Check for list hosts response return valid data"
    +            )
    +            host = hosts[0]
    +            host.user = self.services["configurableData"]["host"]["username"]
    +            host.passwd = self.services["configurableData"]["host"]["password"]
    +            try:
    +                result = get_process_status(
    +                    host.ipaddress,
    +                    22,
    +                    host.user,
    +                    host.passwd,
    +                    router.linklocalip,
    +                    'ip route list table Table_eth3'
    +                )
    +            except KeyError:
    +                self.skipTest(
    +                    "Provide a marvin config file with host\
    +                            credentials to run %s" %
    +                    self._testMethodName)
    +
    +        self.debug("ip route list table Table_eth3: %s" % result)
    +        public_range_gateway = self.services["publiciprange"]["gateway"]
    +        default_route_rule = "default via " + public_range_gateway + " dev eth3  proto static"
    +        self.debug("default route result: %s" % str(result[0]))
    +        self.assertEqual(
    +            default_route_rule,
    +            str(result[0]),
    +            "Check default route table entry for public ip range"
    +        )
    +
    +        res = str(result)
    +        self.assertEqual(
    +            res.count("throw") > 2,
    +            True,
    +            "Check routing rules to throw rest of the traffic. Count shoule be Atleast 2 for the control and guest traffic "
    +        )
    +
    +        firewall_rule.delete(self.apiclient)
    +
    +        if (self.hypervisor.lower() == 'vmware'
    +                or self.hypervisor.lower() == 'hyperv'):
    +            result = get_process_status(
    +                self.apiclient.connection.mgtSvr,
    +                22,
    +                self.apiclient.connection.user,
    +                self.apiclient.connection.passwd,
    +                router.linklocalip,
    +                'ip route list table Table_eth3',
    +                hypervisor=self.hypervisor
    +            )
    +        else:
    +            hosts = list_hosts(
    +                self.apiclient,
    +                id=router.hostid,
    +            )
    +            self.assertEqual(
    +                isinstance(hosts, list),
    +                True,
    +                "Check for list hosts response return valid data"
    +            )
    +            host = hosts[0]
    +            host.user = self.services["configurableData"]["host"]["username"]
    +            host.passwd = self.services["configurableData"]["host"]["password"]
    +            try:
    +                result = get_process_status(
    +                    host.ipaddress,
    +                    22,
    +                    host.user,
    +                    host.passwd,
    +                    router.linklocalip,
    +                    'ip route list table Table_eth3'
    +                )
    +            except KeyError:
    +                self.skipTest(
    +                    "Provide a marvin config file with host\
    +                            credentials to run %s" %
    +                    self._testMethodName)
    +
    +        self.debug("ip route list table Table_eth3: %s" % result)
    +        res = str(result)
    +        self.assertEqual(
    +            res.count("default via"),
    +            0,
    +            "Check to ensure there should not be any default rule"
    +        )
    +
    +        self.assertEqual(
    +            res.count("throw"),
    +            0,
    +            "Check to ensure there should not be any throw rule"
    +        )
    +
    +class TestIptables(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestIptables, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestIptables,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_iptable_rules(self):
    +        """Test iptable rules in case we have IP associated with a network which is in
    +            different pubic IP range from that of public IP range that has source NAT IP.
    +            When IP is associated we should see a rule '-i eth3 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT' in FORWARD table.
    +            When IP is dis-associated we should see a rule in the FORWARD table is deleted.
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. Create a firewall rule to open up the port, so that IP is associated with network
    +        # 5. Login to VR and verify routing tables, there should be Table_eth3
    +        # 6. Delete firewall rule, since its last IP, routing table Table_eth3 should be deleted
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    +        # Check if VM is in Running state before creating NAT and firewall rules
    +        vm_response = VirtualMachine.list(
    +            self.apiclient,
    +            id=self.virtual_machine.id
    +        )
    +
    +        self.assertEqual(
    +            isinstance(vm_response, list),
    +            True,
    +            "Check list VM returns a valid list"
    +        )
    +
    +        self.assertNotEqual(
    +            len(vm_response),
    +            0,
    +            "Check Port Forwarding Rule is created"
    +        )
    +        self.assertEqual(
    +            vm_response[0].state,
    +            'Running',
    +            "VM state should be Running before creating a NAT rule."
    +        )
    +
    +        # Open up firewall port for SSH
    +        firewall_rule = FireWallRule.create(
    +            self.apiclient,
    +            ipaddressid=ip_address.ipaddress.id,
    +            protocol=self.services["natrule"]["protocol"],
    +            cidrlist=['0.0.0.0/0'],
    +            startport=self.services["natrule"]["publicport"],
    +            endport=self.services["natrule"]["publicport"]
    +        )
    +
    +        # Get the router details associated with account
    +        routers = list_routers(
    +            self.apiclient,
    +            account=self.account.name,
    +            domainid=self.account.domainid,
    +        )
    +        router = routers[0]
    +
    +        if (self.hypervisor.lower() == 'vmware'
    +                or self.hypervisor.lower() == 'hyperv'):
    +            result = get_process_status(
    +                self.apiclient.connection.mgtSvr,
    +                22,
    +                self.apiclient.connection.user,
    +                self.apiclient.connection.passwd,
    +                router.linklocalip,
    +                'iptables -t filter -L FORWARD  -v',
    +                hypervisor=self.hypervisor
    +            )
    +        else:
    +            hosts = list_hosts(
    +                self.apiclient,
    +                id=router.hostid,
    +            )
    +            self.assertEqual(
    +                isinstance(hosts, list),
    +                True,
    +                "Check for list hosts response return valid data"
    +            )
    +            host = hosts[0]
    +            host.user = self.services["configurableData"]["host"]["username"]
    +            host.passwd = self.services["configurableData"]["host"]["password"]
    +            try:
    +                result = get_process_status(
    +                    host.ipaddress,
    +                    22,
    +                    host.user,
    +                    host.passwd,
    +                    router.linklocalip,
    +                    'iptables -t filter -L FORWARD  -v'
    +                )
    +            except KeyError:
    +                self.skipTest(
    +                    "Provide a marvin config file with host\
    +                            credentials to run %s" %
    +                    self._testMethodName)
    +
    +        self.debug("iptables -t filter -L FORWARD  -v: %s" % result)
    +        res = str(result)
    +        self.assertEqual(
    +            res.count("eth3   eth0    anywhere             anywhere             state RELATED,ESTABLISHED"),
    +            1,
    +            "Check to ensure there is a iptable rule to accept the RELATED,ESTABLISHED traffic"
    +        )
    +
    +
    +        firewall_rule.delete(self.apiclient)
    +
    --- End diff --
    
    I think creating and validating a firewall rule can be moved to net utility class, as this has possibilities to be reused.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    LGTM. @murali-reddy can you squash the commits to a single commit and rebase against latest 4.9 branch. Following merge of PR #1703 I'll kick a new trillian test run and merge based on the test results.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76494274
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    --- End diff --
    
    Many test cases seem to start with creating one or more VMs.  Would it make sense to to extract lines 77-117 to utility function in Marvin?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76494735
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestPortForwarding,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_port_forwarding_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for port forwarding on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. create a port forwarding on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    +        # Check if VM is in Running state before creating NAT and firewall rules
    +        vm_response = VirtualMachine.list(
    +            self.apiclient,
    +            id=self.virtual_machine.id
    +        )
    +
    +        self.assertEqual(
    +            isinstance(vm_response, list),
    +            True,
    +            "Check list VM returns a valid list"
    +        )
    +
    +        self.assertNotEqual(
    +            len(vm_response),
    +            0,
    +            "Check Port Forwarding Rule is created"
    +        )
    +        self.assertEqual(
    +            vm_response[0].state,
    +            'Running',
    +            "VM state should be Running before creating a NAT rule."
    +        )
    +
    +        # Open up firewall port for SSH
    +        FireWallRule.create(
    +            self.apiclient,
    +            ipaddressid=ip_address.ipaddress.id,
    +            protocol=self.services["natrule"]["protocol"],
    +            cidrlist=['0.0.0.0/0'],
    +            startport=self.services["natrule"]["publicport"],
    +            endport=self.services["natrule"]["publicport"]
    +        )
    +
    +        # Create PF rule
    +        nat_rule = NATRule.create(
    +            self.apiclient,
    +            self.virtual_machine,
    +            self.services["natrule"],
    +            ip_address.ipaddress.id
    +        )
    +
    +        try:
    +            logger.debug("SSHing into VM with IP address %s with NAT IP %s" %
    +                       (
    +                           self.virtual_machine.ipaddress,
    +                           ip_address.ipaddress.ipaddress
    +                       ))
    +            self.virtual_machine.get_ssh_client(ip_address.ipaddress.ipaddress)
    +        except Exception as e:
    +            self.fail(
    +                "SSH Access failed for %s: %s" %
    +                (self.virtual_machine.ipaddress, e)
    +            )
    +
    +        nat_rule.delete(self.apiclient)
    +
    +class TestStaticNat(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestStaticNat, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls.defaultNetworkId = cls.virtual_machine.nic[0].networkid
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestStaticNat,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_static_nat_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for static nat on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. Enable static NAT on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    --- End diff --
    
    Please see previous notes regarding extracting the dedication/creation of public IP ranges to private utility method.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Packaging result: \u2714centos6 \u2714centos7 \u2714debian. JID-20


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy @abhinandanprateek @DaanHoogland can you comment on this?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @rhtyd a Trillian-Jenkins test job (centos7 mgmt + kvm-centos7) has been kicked to run smoke tests


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    <b>Trillian test result (tid-168)</b>
    Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
    Total time taken: 24863 seconds
    Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t168-kvm-centos7.zip
    Test completed. 45 look ok, 3 have error(s)
    
    
    Test | Result | Time (s) | Test File
    --- | --- | --- | ---
    test_04_rvpc_privategw_static_routes | `Failure` | 315.31 | test_privategw_acl.py
    test_03_vpc_privategw_restart_vpc_cleanup | `Failure` | 244.68 | test_privategw_acl.py
    test_02_vpc_privategw_static_routes | `Failure` | 270.08 | test_privategw_acl.py
    test_oobm_zchange_password | `Failure` | 20.53 | test_outofbandmanagement.py
    test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | `Failure` | 307.72 | test_internal_lb.py
    test_03_vpc_internallb_haproxy_stats_on_all_interfaces | `Failure` | 242.73 | test_internal_lb.py
    test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | `Failure` | 371.02 | test_internal_lb.py
    test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | `Failure` | 376.01 | test_internal_lb.py
    test_01_nic | `Error` | 454.93 | test_nic.py
    test_01_vpc_site2site_vpn | Success | 149.86 | test_vpc_vpn.py
    test_01_vpc_remote_access_vpn | Success | 61.08 | test_vpc_vpn.py
    test_01_redundant_vpc_site2site_vpn | Success | 220.38 | test_vpc_vpn.py
    test_02_VPC_default_routes | Success | 254.69 | test_vpc_router_nics.py
    test_01_VPC_nics_after_destroy | Success | 533.96 | test_vpc_router_nics.py
    test_05_rvpc_multi_tiers | Success | 502.20 | test_vpc_redundant.py
    test_04_rvpc_network_garbage_collector_nics | Success | 1331.50 | test_vpc_redundant.py
    test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Success | 543.34 | test_vpc_redundant.py
    test_02_redundant_VPC_default_routes | Success | 750.21 | test_vpc_redundant.py
    test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Success | 1261.03 | test_vpc_redundant.py
    test_09_delete_detached_volume | Success | 15.67 | test_volumes.py
    test_08_resize_volume | Success | 15.40 | test_volumes.py
    test_07_resize_fail | Success | 20.48 | test_volumes.py
    test_06_download_detached_volume | Success | 15.28 | test_volumes.py
    test_05_detach_volume | Success | 100.25 | test_volumes.py
    test_04_delete_attached_volume | Success | 10.19 | test_volumes.py
    test_03_download_attached_volume | Success | 15.28 | test_volumes.py
    test_02_attach_volume | Success | 43.72 | test_volumes.py
    test_01_create_volume | Success | 621.05 | test_volumes.py
    test_deploy_vm_multiple | Success | 258.59 | test_vm_life_cycle.py
    test_deploy_vm | Success | 0.03 | test_vm_life_cycle.py
    test_advZoneVirtualRouter | Success | 0.02 | test_vm_life_cycle.py
    test_10_attachAndDetach_iso | Success | 26.61 | test_vm_life_cycle.py
    test_09_expunge_vm | Success | 125.20 | test_vm_life_cycle.py
    test_08_migrate_vm | Success | 36.58 | test_vm_life_cycle.py
    test_07_restore_vm | Success | 0.13 | test_vm_life_cycle.py
    test_06_destroy_vm | Success | 130.87 | test_vm_life_cycle.py
    test_03_reboot_vm | Success | 125.88 | test_vm_life_cycle.py
    test_02_start_vm | Success | 5.15 | test_vm_life_cycle.py
    test_01_stop_vm | Success | 35.32 | test_vm_life_cycle.py
    test_CreateTemplateWithDuplicateName | Success | 85.75 | test_templates.py
    test_08_list_system_templates | Success | 0.03 | test_templates.py
    test_07_list_public_templates | Success | 0.04 | test_templates.py
    test_05_template_permissions | Success | 0.06 | test_templates.py
    test_04_extract_template | Success | 5.15 | test_templates.py
    test_03_delete_template | Success | 5.11 | test_templates.py
    test_02_edit_template | Success | 90.13 | test_templates.py
    test_01_create_template | Success | 35.43 | test_templates.py
    test_10_destroy_cpvm | Success | 161.49 | test_ssvm.py
    test_09_destroy_ssvm | Success | 134.28 | test_ssvm.py
    test_08_reboot_cpvm | Success | 101.42 | test_ssvm.py
    test_07_reboot_ssvm | Success | 103.31 | test_ssvm.py
    test_06_stop_cpvm | Success | 131.59 | test_ssvm.py
    test_05_stop_ssvm | Success | 133.39 | test_ssvm.py
    test_04_cpvm_internals | Success | 1.03 | test_ssvm.py
    test_03_ssvm_internals | Success | 2.96 | test_ssvm.py
    test_02_list_cpvm_vm | Success | 0.12 | test_ssvm.py
    test_01_list_sec_storage_vm | Success | 0.15 | test_ssvm.py
    test_01_snapshot_root_disk | Success | 16.39 | test_snapshots.py
    test_04_change_offering_small | Success | 209.57 | test_service_offerings.py
    test_03_delete_service_offering | Success | 0.04 | test_service_offerings.py
    test_02_edit_service_offering | Success | 0.08 | test_service_offerings.py
    test_01_create_service_offering | Success | 0.11 | test_service_offerings.py
    test_02_sys_template_ready | Success | 0.13 | test_secondary_storage.py
    test_01_sys_vm_start | Success | 0.20 | test_secondary_storage.py
    test_09_reboot_router | Success | 35.34 | test_routers.py
    test_08_start_router | Success | 25.25 | test_routers.py
    test_07_stop_router | Success | 10.16 | test_routers.py
    test_06_router_advanced | Success | 0.06 | test_routers.py
    test_05_router_basic | Success | 0.04 | test_routers.py
    test_04_restart_network_wo_cleanup | Success | 5.65 | test_routers.py
    test_03_restart_network_cleanup | Success | 65.57 | test_routers.py
    test_02_router_internal_adv | Success | 0.91 | test_routers.py
    test_01_router_internal_basic | Success | 0.51 | test_routers.py
    test_router_dns_guestipquery | Success | 76.77 | test_router_dns.py
    test_router_dns_externalipquery | Success | 0.06 | test_router_dns.py
    test_router_dhcphosts | Success | 272.61 | test_router_dhcphosts.py
    test_01_updatevolumedetail | Success | 0.09 | test_resource_detail.py
    test_01_reset_vm_on_reboot | Success | 146.55 | test_reset_vm_on_reboot.py
    test_createRegion | Success | 0.04 | test_regions.py
    test_create_pvlan_network | Success | 5.22 | test_pvlan.py
    test_dedicatePublicIpRange | Success | 0.45 | test_public_ip_range.py
    test_01_vpc_privategw_acl | Success | 118.46 | test_privategw_acl.py
    test_01_primary_storage_nfs | Success | 35.84 | test_primary_storage.py
    test_createPortablePublicIPRange | Success | 15.19 | test_portable_publicip.py
    test_createPortablePublicIPAcquire | Success | 15.46 | test_portable_publicip.py
    test_isolate_network_password_server | Success | 89.95 | test_password_server.py
    test_UpdateStorageOverProvisioningFactor | Success | 0.13 | test_over_provisioning.py
    test_oobm_multiple_mgmt_server_ownership | Success | 17.00 | test_outofbandmanagement.py
    test_oobm_issue_power_status | Success | 10.54 | test_outofbandmanagement.py
    test_oobm_issue_power_soft | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_reset | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_on | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_off | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_cycle | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_enabledisable_across_clusterzones | Success | 57.25 | test_outofbandmanagement.py
    test_oobm_enable_feature_valid | Success | 5.18 | test_outofbandmanagement.py
    test_oobm_enable_feature_invalid | Success | 0.13 | test_outofbandmanagement.py
    test_oobm_disable_feature_valid | Success | 0.17 | test_outofbandmanagement.py
    test_oobm_disable_feature_invalid | Success | 0.12 | test_outofbandmanagement.py
    test_oobm_configure_invalid_driver | Success | 0.10 | test_outofbandmanagement.py
    test_oobm_configure_default_driver | Success | 0.10 | test_outofbandmanagement.py
    test_oobm_background_powerstate_sync | Success | 29.71 | test_outofbandmanagement.py
    test_extendPhysicalNetworkVlan | Success | 10.35 | test_non_contigiousvlan.py
    test_releaseIP | Success | 188.47 | test_network.py
    test_reboot_router | Success | 379.29 | test_network.py
    test_public_ip_user_account | Success | 10.56 | test_network.py
    test_public_ip_admin_account | Success | 40.28 | test_network.py
    test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Success | 66.69 | test_network.py
    test_network_rules_acquired_public_ip_2_nat_rule | Success | 61.65 | test_network.py
    test_network_rules_acquired_public_ip_1_static_nat_rule | Success | 123.90 | test_network.py
    test_delete_account | Success | 288.63 | test_network.py
    test_02_port_fwd_on_non_src_nat | Success | 55.77 | test_network.py
    test_01_port_fwd_on_src_nat | Success | 111.79 | test_network.py
    test_nic_secondaryip_add_remove | Success | 223.55 | test_multipleips_per_nic.py
    login_test_saml_user | Success | 24.57 | test_login.py
    test_assign_and_removal_lb | Success | 133.52 | test_loadbalance.py
    test_02_create_lb_rule_non_nat | Success | 187.42 | test_loadbalance.py
    test_01_create_lb_rule_src_nat | Success | 207.90 | test_loadbalance.py
    test_03_list_snapshots | Success | 0.06 | test_list_ids_parameter.py
    test_02_list_templates | Success | 0.04 | test_list_ids_parameter.py
    test_01_list_volumes | Success | 0.03 | test_list_ids_parameter.py
    test_07_list_default_iso | Success | 0.06 | test_iso.py
    test_05_iso_permissions | Success | 0.06 | test_iso.py
    test_04_extract_Iso | Success | 5.14 | test_iso.py
    test_03_delete_iso | Success | 95.20 | test_iso.py
    test_02_edit_iso | Success | 0.06 | test_iso.py
    test_01_create_iso | Success | 21.88 | test_iso.py
    test_dedicateGuestVlanRange | Success | 10.33 | test_guest_vlan_range.py
    test_UpdateConfigParamWithScope | Success | 0.13 | test_global_settings.py
    test_rolepermission_lifecycle_update | Success | 7.02 | test_dynamicroles.py
    test_rolepermission_lifecycle_list | Success | 6.87 | test_dynamicroles.py
    test_rolepermission_lifecycle_delete | Success | 6.72 | test_dynamicroles.py
    test_rolepermission_lifecycle_create | Success | 6.76 | test_dynamicroles.py
    test_rolepermission_lifecycle_concurrent_updates | Success | 6.99 | test_dynamicroles.py
    test_role_lifecycle_update_role_inuse | Success | 6.78 | test_dynamicroles.py
    test_role_lifecycle_update | Success | 11.84 | test_dynamicroles.py
    test_role_lifecycle_list | Success | 6.78 | test_dynamicroles.py
    test_role_lifecycle_delete | Success | 11.82 | test_dynamicroles.py
    test_role_lifecycle_create | Success | 6.79 | test_dynamicroles.py
    test_role_inuse_deletion | Success | 6.74 | test_dynamicroles.py
    test_role_account_acls_multiple_mgmt_servers | Success | 8.96 | test_dynamicroles.py
    test_role_account_acls | Success | 9.16 | test_dynamicroles.py
    test_default_role_deletion | Success | 6.89 | test_dynamicroles.py
    test_04_create_fat_type_disk_offering | Success | 0.07 | test_disk_offerings.py
    test_03_delete_disk_offering | Success | 0.04 | test_disk_offerings.py
    test_02_edit_disk_offering | Success | 0.05 | test_disk_offerings.py
    test_02_create_sparse_type_disk_offering | Success | 0.07 | test_disk_offerings.py
    test_01_create_disk_offering | Success | 0.10 | test_disk_offerings.py
    test_deployvm_userdispersing | Success | 20.56 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userconcentrated | Success | 20.56 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_firstfit | Success | 90.82 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userdata_post | Success | 10.38 | test_deploy_vm_with_userdata.py
    test_deployvm_userdata | Success | 75.84 | test_deploy_vm_with_userdata.py
    test_02_deploy_vm_root_resize | Success | 6.84 | test_deploy_vm_root_resize.py
    test_01_deploy_vm_root_resize | Success | 6.84 | test_deploy_vm_root_resize.py
    test_00_deploy_vm_root_resize | Success | 213.30 | test_deploy_vm_root_resize.py
    test_deploy_vm_from_iso | Success | 198.19 | test_deploy_vm_iso.py
    test_DeployVmAntiAffinityGroup | Success | 81.02 | test_affinity_groups.py
    test_03_delete_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_02_revert_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_01_test_vm_volume_snapshot | Skipped | 0.00 | test_vm_snapshots.py
    test_01_create_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_06_copy_template | Skipped | 0.00 | test_templates.py
    test_static_role_account_acls | Skipped | 0.02 | test_staticroles.py
    test_01_scale_vm | Skipped | 0.00 | test_scale_vm.py
    test_01_primary_storage_iscsi | Skipped | 0.04 | test_primary_storage.py
    test_06_copy_iso | Skipped | 0.00 | test_iso.py
    test_deploy_vgpu_enabled_vm | Skipped | 0.00 | test_deploy_vgpu_enabled_vm.py



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @jburwell a Trillian-Jenkins test job (centos7 mgmt + vmware-55u3) has been kicked to run smoke tests


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    #1692 has been opened that replaces #1683 to address the ping test issue on the 4.8, 4.9, and master branches rather just master for the original PR.  Testing the PR now.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    <b>Trillian test result (tid-532)</b>
    Environment: vmware-55u3 (x2), Advanced Networking with Mgmt server 7
    Total time taken: 35829 seconds
    Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t532-vmware-55u3.zip
    Test completed. 44 look ok, 4 have error(s)
    
    
    Test | Result | Time (s) | Test File
    --- | --- | --- | ---
    test_01_redundant_vpc_site2site_vpn | `Failure` | 475.07 | test_vpc_vpn.py
    test_04_rvpc_privategw_static_routes | `Failure` | 982.62 | test_privategw_acl.py
    test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | `Failure` | 216.66 | test_internal_lb.py
    test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | `Failure` | 126.29 | test_internal_lb.py
    test_01_vpc_site2site_vpn | `Error` | 543.04 | test_vpc_vpn.py
    test_05_rvpc_multi_tiers | `Error` | 132.69 | test_vpc_redundant.py
    test_01_vpc_remote_access_vpn | Success | 177.06 | test_vpc_vpn.py
    test_02_VPC_default_routes | Success | 340.74 | test_vpc_router_nics.py
    test_01_VPC_nics_after_destroy | Success | 814.99 | test_vpc_router_nics.py
    test_04_rvpc_network_garbage_collector_nics | Success | 1554.98 | test_vpc_redundant.py
    test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Success | 725.91 | test_vpc_redundant.py
    test_02_redundant_VPC_default_routes | Success | 727.82 | test_vpc_redundant.py
    test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Success | 1509.99 | test_vpc_redundant.py
    test_09_delete_detached_volume | Success | 31.12 | test_volumes.py
    test_06_download_detached_volume | Success | 95.77 | test_volumes.py
    test_05_detach_volume | Success | 105.30 | test_volumes.py
    test_04_delete_attached_volume | Success | 15.25 | test_volumes.py
    test_03_download_attached_volume | Success | 25.46 | test_volumes.py
    test_02_attach_volume | Success | 63.85 | test_volumes.py
    test_01_create_volume | Success | 549.55 | test_volumes.py
    test_03_delete_vm_snapshots | Success | 275.17 | test_vm_snapshots.py
    test_02_revert_vm_snapshots | Success | 200.26 | test_vm_snapshots.py
    test_01_test_vm_volume_snapshot | Success | 368.24 | test_vm_snapshots.py
    test_01_create_vm_snapshots | Success | 159.06 | test_vm_snapshots.py
    test_deploy_vm_multiple | Success | 309.06 | test_vm_life_cycle.py
    test_deploy_vm | Success | 0.03 | test_vm_life_cycle.py
    test_advZoneVirtualRouter | Success | 0.02 | test_vm_life_cycle.py
    test_10_attachAndDetach_iso | Success | 26.86 | test_vm_life_cycle.py
    test_09_expunge_vm | Success | 125.22 | test_vm_life_cycle.py
    test_08_migrate_vm | Success | 86.36 | test_vm_life_cycle.py
    test_07_restore_vm | Success | 0.11 | test_vm_life_cycle.py
    test_06_destroy_vm | Success | 10.15 | test_vm_life_cycle.py
    test_03_reboot_vm | Success | 5.15 | test_vm_life_cycle.py
    test_02_start_vm | Success | 25.28 | test_vm_life_cycle.py
    test_01_stop_vm | Success | 10.15 | test_vm_life_cycle.py
    test_CreateTemplateWithDuplicateName | Success | 287.25 | test_templates.py
    test_08_list_system_templates | Success | 0.04 | test_templates.py
    test_07_list_public_templates | Success | 0.05 | test_templates.py
    test_05_template_permissions | Success | 0.07 | test_templates.py
    test_04_extract_template | Success | 15.27 | test_templates.py
    test_03_delete_template | Success | 5.12 | test_templates.py
    test_02_edit_template | Success | 90.15 | test_templates.py
    test_01_create_template | Success | 141.01 | test_templates.py
    test_10_destroy_cpvm | Success | 322.22 | test_ssvm.py
    test_09_destroy_ssvm | Success | 274.20 | test_ssvm.py
    test_08_reboot_cpvm | Success | 156.75 | test_ssvm.py
    test_07_reboot_ssvm | Success | 158.57 | test_ssvm.py
    test_06_stop_cpvm | Success | 201.97 | test_ssvm.py
    test_05_stop_ssvm | Success | 178.60 | test_ssvm.py
    test_04_cpvm_internals | Success | 1.36 | test_ssvm.py
    test_03_ssvm_internals | Success | 3.40 | test_ssvm.py
    test_02_list_cpvm_vm | Success | 0.22 | test_ssvm.py
    test_01_list_sec_storage_vm | Success | 0.14 | test_ssvm.py
    test_01_snapshot_root_disk | Success | 71.72 | test_snapshots.py
    test_04_change_offering_small | Success | 122.06 | test_service_offerings.py
    test_03_delete_service_offering | Success | 0.04 | test_service_offerings.py
    test_02_edit_service_offering | Success | 0.08 | test_service_offerings.py
    test_01_create_service_offering | Success | 0.13 | test_service_offerings.py
    test_02_sys_template_ready | Success | 0.14 | test_secondary_storage.py
    test_01_sys_vm_start | Success | 0.19 | test_secondary_storage.py
    test_09_reboot_router | Success | 141.00 | test_routers.py
    test_08_start_router | Success | 110.79 | test_routers.py
    test_07_stop_router | Success | 25.25 | test_routers.py
    test_06_router_advanced | Success | 0.08 | test_routers.py
    test_05_router_basic | Success | 0.05 | test_routers.py
    test_04_restart_network_wo_cleanup | Success | 5.72 | test_routers.py
    test_03_restart_network_cleanup | Success | 186.45 | test_routers.py
    test_02_router_internal_adv | Success | 1.14 | test_routers.py
    test_01_router_internal_basic | Success | 0.61 | test_routers.py
    test_router_dns_guestipquery | Success | 77.47 | test_router_dns.py
    test_router_dns_externalipquery | Success | 0.06 | test_router_dns.py
    test_router_dhcphosts | Success | 126.07 | test_router_dhcphosts.py
    test_router_dhcp_opts | Success | 21.76 | test_router_dhcphosts.py
    test_01_updatevolumedetail | Success | 0.17 | test_resource_detail.py
    test_01_reset_vm_on_reboot | Success | 70.74 | test_reset_vm_on_reboot.py
    test_createRegion | Success | 0.04 | test_regions.py
    test_create_pvlan_network | Success | 5.27 | test_pvlan.py
    test_dedicatePublicIpRange | Success | 0.52 | test_public_ip_range.py
    test_03_vpc_privategw_restart_vpc_cleanup | Success | 1242.68 | test_privategw_acl.py
    test_02_vpc_privategw_static_routes | Success | 779.89 | test_privategw_acl.py
    test_01_vpc_privategw_acl | Success | 199.00 | test_privategw_acl.py
    test_01_primary_storage_nfs | Success | 37.35 | test_primary_storage.py
    test_createPortablePublicIPRange | Success | 15.18 | test_portable_publicip.py
    test_createPortablePublicIPAcquire | Success | 15.97 | test_portable_publicip.py
    test_isolate_network_password_server | Success | 64.16 | test_password_server.py
    test_UpdateStorageOverProvisioningFactor | Success | 0.15 | test_over_provisioning.py
    test_oobm_zchange_password | Success | 31.10 | test_outofbandmanagement.py
    test_oobm_multiple_mgmt_server_ownership | Success | 16.32 | test_outofbandmanagement.py
    test_oobm_issue_power_status | Success | 10.28 | test_outofbandmanagement.py
    test_oobm_issue_power_soft | Success | 10.39 | test_outofbandmanagement.py
    test_oobm_issue_power_reset | Success | 15.33 | test_outofbandmanagement.py
    test_oobm_issue_power_on | Success | 15.31 | test_outofbandmanagement.py
    test_oobm_issue_power_off | Success | 15.35 | test_outofbandmanagement.py
    test_oobm_issue_power_cycle | Success | 15.38 | test_outofbandmanagement.py
    test_oobm_enabledisable_across_clusterzones | Success | 92.79 | test_outofbandmanagement.py
    test_oobm_enable_feature_valid | Success | 5.16 | test_outofbandmanagement.py
    test_oobm_enable_feature_invalid | Success | 0.13 | test_outofbandmanagement.py
    test_oobm_disable_feature_valid | Success | 5.18 | test_outofbandmanagement.py
    test_oobm_disable_feature_invalid | Success | 0.11 | test_outofbandmanagement.py
    test_oobm_configure_invalid_driver | Success | 0.09 | test_outofbandmanagement.py
    test_oobm_configure_default_driver | Success | 0.07 | test_outofbandmanagement.py
    test_oobm_background_powerstate_sync | Success | 29.49 | test_outofbandmanagement.py
    test_extendPhysicalNetworkVlan | Success | 15.31 | test_non_contigiousvlan.py
    test_01_nic | Success | 778.13 | test_nic.py
    test_releaseIP | Success | 299.16 | test_network.py
    test_reboot_router | Success | 606.19 | test_network.py
    test_public_ip_user_account | Success | 10.25 | test_network.py
    test_public_ip_admin_account | Success | 40.26 | test_network.py
    test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Success | 76.99 | test_network.py
    test_network_rules_acquired_public_ip_2_nat_rule | Success | 61.73 | test_network.py
    test_network_rules_acquired_public_ip_1_static_nat_rule | Success | 125.46 | test_network.py
    test_delete_account | Success | 288.85 | test_network.py
    test_02_port_fwd_on_non_src_nat | Success | 55.62 | test_network.py
    test_01_port_fwd_on_src_nat | Success | 111.80 | test_network.py
    test_nic_secondaryip_add_remove | Success | 264.16 | test_multipleips_per_nic.py
    login_test_saml_user | Success | 24.89 | test_login.py
    test_assign_and_removal_lb | Success | 149.45 | test_loadbalance.py
    test_02_create_lb_rule_non_nat | Success | 207.27 | test_loadbalance.py
    test_01_create_lb_rule_src_nat | Success | 209.22 | test_loadbalance.py
    test_03_list_snapshots | Success | 0.08 | test_list_ids_parameter.py
    test_02_list_templates | Success | 0.04 | test_list_ids_parameter.py
    test_01_list_volumes | Success | 0.03 | test_list_ids_parameter.py
    test_07_list_default_iso | Success | 0.06 | test_iso.py
    test_05_iso_permissions | Success | 0.06 | test_iso.py
    test_04_extract_Iso | Success | 5.17 | test_iso.py
    test_03_delete_iso | Success | 95.21 | test_iso.py
    test_02_edit_iso | Success | 0.06 | test_iso.py
    test_01_create_iso | Success | 22.01 | test_iso.py
    test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Success | 434.52 | test_internal_lb.py
    test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Success | 833.80 | test_internal_lb.py
    test_dedicateGuestVlanRange | Success | 10.28 | test_guest_vlan_range.py
    test_UpdateConfigParamWithScope | Success | 0.36 | test_global_settings.py
    test_rolepermission_lifecycle_update | Success | 7.17 | test_dynamicroles.py
    test_rolepermission_lifecycle_list | Success | 6.89 | test_dynamicroles.py
    test_rolepermission_lifecycle_delete | Success | 6.79 | test_dynamicroles.py
    test_rolepermission_lifecycle_create | Success | 6.97 | test_dynamicroles.py
    test_rolepermission_lifecycle_concurrent_updates | Success | 7.04 | test_dynamicroles.py
    test_role_lifecycle_update_role_inuse | Success | 6.86 | test_dynamicroles.py
    test_role_lifecycle_update | Success | 11.96 | test_dynamicroles.py
    test_role_lifecycle_list | Success | 7.04 | test_dynamicroles.py
    test_role_lifecycle_delete | Success | 11.86 | test_dynamicroles.py
    test_role_lifecycle_create | Success | 6.83 | test_dynamicroles.py
    test_role_inuse_deletion | Success | 6.83 | test_dynamicroles.py
    test_role_account_acls_multiple_mgmt_servers | Success | 9.35 | test_dynamicroles.py
    test_role_account_acls | Success | 9.15 | test_dynamicroles.py
    test_default_role_deletion | Success | 6.93 | test_dynamicroles.py
    test_04_create_fat_type_disk_offering | Success | 0.08 | test_disk_offerings.py
    test_03_delete_disk_offering | Success | 0.04 | test_disk_offerings.py
    test_02_edit_disk_offering | Success | 0.05 | test_disk_offerings.py
    test_02_create_sparse_type_disk_offering | Success | 0.06 | test_disk_offerings.py
    test_01_create_disk_offering | Success | 0.11 | test_disk_offerings.py
    test_deployvm_userdispersing | Success | 131.46 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userconcentrated | Success | 55.87 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_firstfit | Success | 191.70 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userdata_post | Success | 101.34 | test_deploy_vm_with_userdata.py
    test_deployvm_userdata | Success | 136.26 | test_deploy_vm_with_userdata.py
    test_02_deploy_vm_root_resize | Success | 6.76 | test_deploy_vm_root_resize.py
    test_01_deploy_vm_root_resize | Success | 6.78 | test_deploy_vm_root_resize.py
    test_00_deploy_vm_root_resize | Success | 6.90 | test_deploy_vm_root_resize.py
    test_deploy_vm_from_iso | Success | 223.75 | test_deploy_vm_iso.py
    test_DeployVmAntiAffinityGroup | Success | 257.51 | test_affinity_groups.py
    test_08_resize_volume | Skipped | 5.11 | test_volumes.py
    test_07_resize_fail | Skipped | 10.37 | test_volumes.py
    test_06_copy_template | Skipped | 0.00 | test_templates.py
    test_static_role_account_acls | Skipped | 0.02 | test_staticroles.py
    test_01_scale_vm | Skipped | 66.36 | test_scale_vm.py
    test_01_primary_storage_iscsi | Skipped | 0.04 | test_primary_storage.py
    test_06_copy_iso | Skipped | 0.00 | test_iso.py
    test_deploy_vgpu_enabled_vm | Skipped | 0.00 | test_deploy_vgpu_enabled_vm.py



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy @abhinandanprateek let me know any help needed from my end?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by murali-reddy <gi...@git.apache.org>.
Github user murali-reddy commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan test


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    <b>Trillian test result (tid-581)</b>
    Environment: kvm-centos7 (x2), Advanced Networking with Mgmt server 7
    Total time taken: 28738 seconds
    Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t581-kvm-centos7.zip
    Test completed. 45 look ok, 3 have error(s)
    
    
    Test | Result | Time (s) | Test File
    --- | --- | --- | ---
    test_02_redundant_VPC_default_routes | `Failure` | 860.01 | test_vpc_redundant.py
    test_04_rvpc_privategw_static_routes | `Failure` | 463.64 | test_privategw_acl.py
    test_01_create_template | `Error` | 70.62 | test_templates.py
    test_01_vpc_site2site_vpn | Success | 135.36 | test_vpc_vpn.py
    test_01_vpc_remote_access_vpn | Success | 86.44 | test_vpc_vpn.py
    test_01_redundant_vpc_site2site_vpn | Success | 258.72 | test_vpc_vpn.py
    test_02_VPC_default_routes | Success | 250.02 | test_vpc_router_nics.py
    test_01_VPC_nics_after_destroy | Success | 566.53 | test_vpc_router_nics.py
    test_05_rvpc_multi_tiers | Success | 521.44 | test_vpc_redundant.py
    test_04_rvpc_network_garbage_collector_nics | Success | 1543.24 | test_vpc_redundant.py
    test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Success | 566.83 | test_vpc_redundant.py
    test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Success | 1300.59 | test_vpc_redundant.py
    test_09_delete_detached_volume | Success | 15.91 | test_volumes.py
    test_08_resize_volume | Success | 15.42 | test_volumes.py
    test_07_resize_fail | Success | 20.49 | test_volumes.py
    test_06_download_detached_volume | Success | 15.62 | test_volumes.py
    test_05_detach_volume | Success | 100.29 | test_volumes.py
    test_04_delete_attached_volume | Success | 10.25 | test_volumes.py
    test_03_download_attached_volume | Success | 15.38 | test_volumes.py
    test_02_attach_volume | Success | 74.61 | test_volumes.py
    test_01_create_volume | Success | 681.63 | test_volumes.py
    test_deploy_vm_multiple | Success | 304.30 | test_vm_life_cycle.py
    test_deploy_vm | Success | 0.03 | test_vm_life_cycle.py
    test_advZoneVirtualRouter | Success | 0.03 | test_vm_life_cycle.py
    test_10_attachAndDetach_iso | Success | 26.65 | test_vm_life_cycle.py
    test_09_expunge_vm | Success | 125.18 | test_vm_life_cycle.py
    test_08_migrate_vm | Success | 35.96 | test_vm_life_cycle.py
    test_07_restore_vm | Success | 0.16 | test_vm_life_cycle.py
    test_06_destroy_vm | Success | 130.89 | test_vm_life_cycle.py
    test_03_reboot_vm | Success | 125.87 | test_vm_life_cycle.py
    test_02_start_vm | Success | 10.18 | test_vm_life_cycle.py
    test_01_stop_vm | Success | 35.32 | test_vm_life_cycle.py
    test_CreateTemplateWithDuplicateName | Success | 126.28 | test_templates.py
    test_08_list_system_templates | Success | 0.03 | test_templates.py
    test_07_list_public_templates | Success | 0.04 | test_templates.py
    test_05_template_permissions | Success | 0.06 | test_templates.py
    test_04_extract_template | Success | 5.16 | test_templates.py
    test_03_delete_template | Success | 5.12 | test_templates.py
    test_02_edit_template | Success | 90.15 | test_templates.py
    test_10_destroy_cpvm | Success | 131.46 | test_ssvm.py
    test_09_destroy_ssvm | Success | 168.60 | test_ssvm.py
    test_08_reboot_cpvm | Success | 131.38 | test_ssvm.py
    test_07_reboot_ssvm | Success | 103.47 | test_ssvm.py
    test_06_stop_cpvm | Success | 101.52 | test_ssvm.py
    test_05_stop_ssvm | Success | 133.51 | test_ssvm.py
    test_04_cpvm_internals | Success | 1.06 | test_ssvm.py
    test_03_ssvm_internals | Success | 3.20 | test_ssvm.py
    test_02_list_cpvm_vm | Success | 0.14 | test_ssvm.py
    test_01_list_sec_storage_vm | Success | 0.14 | test_ssvm.py
    test_01_snapshot_root_disk | Success | 16.54 | test_snapshots.py
    test_04_change_offering_small | Success | 235.00 | test_service_offerings.py
    test_03_delete_service_offering | Success | 0.04 | test_service_offerings.py
    test_02_edit_service_offering | Success | 0.06 | test_service_offerings.py
    test_01_create_service_offering | Success | 0.11 | test_service_offerings.py
    test_02_sys_template_ready | Success | 0.14 | test_secondary_storage.py
    test_01_sys_vm_start | Success | 0.19 | test_secondary_storage.py
    test_09_reboot_router | Success | 35.32 | test_routers.py
    test_08_start_router | Success | 30.32 | test_routers.py
    test_07_stop_router | Success | 10.16 | test_routers.py
    test_06_router_advanced | Success | 0.06 | test_routers.py
    test_05_router_basic | Success | 0.04 | test_routers.py
    test_04_restart_network_wo_cleanup | Success | 5.60 | test_routers.py
    test_03_restart_network_cleanup | Success | 55.54 | test_routers.py
    test_02_router_internal_adv | Success | 0.85 | test_routers.py
    test_01_router_internal_basic | Success | 0.50 | test_routers.py
    test_router_dns_guestipquery | Success | 76.97 | test_router_dns.py
    test_router_dns_externalipquery | Success | 0.11 | test_router_dns.py
    test_router_dhcphosts | Success | 243.84 | test_router_dhcphosts.py
    test_router_dhcp_opts | Success | 21.64 | test_router_dhcphosts.py
    test_01_updatevolumedetail | Success | 0.09 | test_resource_detail.py
    test_01_reset_vm_on_reboot | Success | 131.02 | test_reset_vm_on_reboot.py
    test_createRegion | Success | 0.05 | test_regions.py
    test_create_pvlan_network | Success | 5.24 | test_pvlan.py
    test_dedicatePublicIpRange | Success | 0.45 | test_public_ip_range.py
    test_03_vpc_privategw_restart_vpc_cleanup | Success | 472.53 | test_privategw_acl.py
    test_02_vpc_privategw_static_routes | Success | 438.33 | test_privategw_acl.py
    test_01_vpc_privategw_acl | Success | 88.62 | test_privategw_acl.py
    test_01_primary_storage_nfs | Success | 35.85 | test_primary_storage.py
    test_createPortablePublicIPRange | Success | 15.24 | test_portable_publicip.py
    test_createPortablePublicIPAcquire | Success | 20.55 | test_portable_publicip.py
    test_isolate_network_password_server | Success | 59.44 | test_password_server.py
    test_UpdateStorageOverProvisioningFactor | Success | 0.26 | test_over_provisioning.py
    test_oobm_zchange_password | Success | 30.87 | test_outofbandmanagement.py
    test_oobm_multiple_mgmt_server_ownership | Success | 16.46 | test_outofbandmanagement.py
    test_oobm_issue_power_status | Success | 10.33 | test_outofbandmanagement.py
    test_oobm_issue_power_soft | Success | 15.52 | test_outofbandmanagement.py
    test_oobm_issue_power_reset | Success | 15.54 | test_outofbandmanagement.py
    test_oobm_issue_power_on | Success | 15.41 | test_outofbandmanagement.py
    test_oobm_issue_power_off | Success | 15.41 | test_outofbandmanagement.py
    test_oobm_issue_power_cycle | Success | 10.42 | test_outofbandmanagement.py
    test_oobm_enabledisable_across_clusterzones | Success | 87.92 | test_outofbandmanagement.py
    test_oobm_enable_feature_valid | Success | 5.21 | test_outofbandmanagement.py
    test_oobm_enable_feature_invalid | Success | 0.12 | test_outofbandmanagement.py
    test_oobm_disable_feature_valid | Success | 0.20 | test_outofbandmanagement.py
    test_oobm_disable_feature_invalid | Success | 0.12 | test_outofbandmanagement.py
    test_oobm_configure_invalid_driver | Success | 0.10 | test_outofbandmanagement.py
    test_oobm_configure_default_driver | Success | 0.09 | test_outofbandmanagement.py
    test_oobm_background_powerstate_sync | Success | 29.68 | test_outofbandmanagement.py
    test_extendPhysicalNetworkVlan | Success | 15.43 | test_non_contigiousvlan.py
    test_01_nic | Success | 537.43 | test_nic.py
    test_releaseIP | Success | 244.01 | test_network.py
    test_reboot_router | Success | 389.56 | test_network.py
    test_public_ip_user_account | Success | 10.27 | test_network.py
    test_public_ip_admin_account | Success | 40.28 | test_network.py
    test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Success | 66.86 | test_network.py
    test_network_rules_acquired_public_ip_2_nat_rule | Success | 61.59 | test_network.py
    test_network_rules_acquired_public_ip_1_static_nat_rule | Success | 123.80 | test_network.py
    test_delete_account | Success | 263.87 | test_network.py
    test_02_port_fwd_on_non_src_nat | Success | 55.70 | test_network.py
    test_01_port_fwd_on_src_nat | Success | 111.86 | test_network.py
    test_nic_secondaryip_add_remove | Success | 203.78 | test_multipleips_per_nic.py
    login_test_saml_user | Success | 25.73 | test_login.py
    test_assign_and_removal_lb | Success | 133.20 | test_loadbalance.py
    test_02_create_lb_rule_non_nat | Success | 187.24 | test_loadbalance.py
    test_01_create_lb_rule_src_nat | Success | 217.67 | test_loadbalance.py
    test_03_list_snapshots | Success | 0.08 | test_list_ids_parameter.py
    test_02_list_templates | Success | 0.04 | test_list_ids_parameter.py
    test_01_list_volumes | Success | 0.03 | test_list_ids_parameter.py
    test_07_list_default_iso | Success | 0.08 | test_iso.py
    test_05_iso_permissions | Success | 0.08 | test_iso.py
    test_04_extract_Iso | Success | 5.69 | test_iso.py
    test_03_delete_iso | Success | 95.17 | test_iso.py
    test_02_edit_iso | Success | 0.07 | test_iso.py
    test_01_create_iso | Success | 22.23 | test_iso.py
    test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Success | 239.17 | test_internal_lb.py
    test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Success | 189.26 | test_internal_lb.py
    test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Success | 527.23 | test_internal_lb.py
    test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Success | 436.38 | test_internal_lb.py
    test_dedicateGuestVlanRange | Success | 10.31 | test_guest_vlan_range.py
    test_UpdateConfigParamWithScope | Success | 0.17 | test_global_settings.py
    test_rolepermission_lifecycle_update | Success | 7.41 | test_dynamicroles.py
    test_rolepermission_lifecycle_list | Success | 7.32 | test_dynamicroles.py
    test_rolepermission_lifecycle_delete | Success | 7.06 | test_dynamicroles.py
    test_rolepermission_lifecycle_create | Success | 6.91 | test_dynamicroles.py
    test_rolepermission_lifecycle_concurrent_updates | Success | 7.11 | test_dynamicroles.py
    test_role_lifecycle_update_role_inuse | Success | 7.17 | test_dynamicroles.py
    test_role_lifecycle_update | Success | 12.19 | test_dynamicroles.py
    test_role_lifecycle_list | Success | 6.95 | test_dynamicroles.py
    test_role_lifecycle_delete | Success | 12.05 | test_dynamicroles.py
    test_role_lifecycle_create | Success | 7.02 | test_dynamicroles.py
    test_role_inuse_deletion | Success | 7.40 | test_dynamicroles.py
    test_role_account_acls_multiple_mgmt_servers | Success | 9.51 | test_dynamicroles.py
    test_role_account_acls | Success | 9.85 | test_dynamicroles.py
    test_default_role_deletion | Success | 7.17 | test_dynamicroles.py
    test_04_create_fat_type_disk_offering | Success | 0.09 | test_disk_offerings.py
    test_03_delete_disk_offering | Success | 0.05 | test_disk_offerings.py
    test_02_edit_disk_offering | Success | 0.08 | test_disk_offerings.py
    test_02_create_sparse_type_disk_offering | Success | 0.09 | test_disk_offerings.py
    test_01_create_disk_offering | Success | 0.12 | test_disk_offerings.py
    test_deployvm_userdispersing | Success | 71.21 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userconcentrated | Success | 20.96 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_firstfit | Success | 50.77 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userdata_post | Success | 5.50 | test_deploy_vm_with_userdata.py
    test_deployvm_userdata | Success | 45.88 | test_deploy_vm_with_userdata.py
    test_02_deploy_vm_root_resize | Success | 6.97 | test_deploy_vm_root_resize.py
    test_01_deploy_vm_root_resize | Success | 7.06 | test_deploy_vm_root_resize.py
    test_00_deploy_vm_root_resize | Success | 284.48 | test_deploy_vm_root_resize.py
    test_deploy_vm_from_iso | Success | 203.77 | test_deploy_vm_iso.py
    test_DeployVmAntiAffinityGroup | Success | 61.08 | test_affinity_groups.py
    test_03_delete_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_02_revert_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_01_test_vm_volume_snapshot | Skipped | 0.00 | test_vm_snapshots.py
    test_01_create_vm_snapshots | Skipped | 0.00 | test_vm_snapshots.py
    test_06_copy_template | Skipped | 0.00 | test_templates.py
    test_static_role_account_acls | Skipped | 0.03 | test_staticroles.py
    test_01_scale_vm | Skipped | 0.00 | test_scale_vm.py
    test_01_primary_storage_iscsi | Skipped | 0.04 | test_primary_storage.py
    test_06_copy_iso | Skipped | 0.00 | test_iso.py
    test_deploy_vgpu_enabled_vm | Skipped | 0.01 | test_deploy_vgpu_enabled_vm.py



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by murali-reddy <gi...@git.apache.org>.
Github user murali-reddy commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan package


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @jburwell a Trillian-Jenkins test job (centos7 mgmt + xenserver-65sp1) has been kicked to run smoke tests


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy 8 errors occurred in the VMware test run.  Could you please investigate these failures?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    <b>Trillian test result (tid-591)</b>
    Environment: xenserver-65sp1 (x2), Advanced Networking with Mgmt server 6
    Total time taken: 34361 seconds
    Marvin logs: https://github.com/blueorangutan/acs-prs/releases/download/trillian/pr1659-t591-xenserver-65sp1.zip
    Test completed. 43 look ok, 5 have error(s)
    
    
    Test | Result | Time (s) | Test File
    --- | --- | --- | ---
    test_05_rvpc_multi_tiers | `Failure` | 507.47 | test_vpc_redundant.py
    test_04_rvpc_network_garbage_collector_nics | `Failure` | 1382.51 | test_vpc_redundant.py
    test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | `Failure` | 565.36 | test_vpc_redundant.py
    test_04_rvpc_privategw_static_routes | `Failure` | 772.68 | test_privategw_acl.py
    ContextSuite context=TestSnapshotRootDisk>:teardown | `Error` | 57.32 | test_snapshots.py
    test_router_dns_guestipquery | `Error` | 5.23 | test_router_dns.py
    ContextSuite context=TestRouterDHCPOpts>:teardown | `Error` | 107.60 | test_router_dhcphosts.py
    test_01_vpc_site2site_vpn | Success | 331.78 | test_vpc_vpn.py
    test_01_vpc_remote_access_vpn | Success | 167.16 | test_vpc_vpn.py
    test_01_redundant_vpc_site2site_vpn | Success | 583.93 | test_vpc_vpn.py
    test_02_VPC_default_routes | Success | 321.44 | test_vpc_router_nics.py
    test_01_VPC_nics_after_destroy | Success | 714.76 | test_vpc_router_nics.py
    test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Success | 926.95 | test_vpc_redundant.py
    test_02_redundant_VPC_default_routes | Success | 1054.20 | test_vpc_redundant.py
    test_09_delete_detached_volume | Success | 20.79 | test_volumes.py
    test_08_resize_volume | Success | 111.21 | test_volumes.py
    test_07_resize_fail | Success | 121.33 | test_volumes.py
    test_06_download_detached_volume | Success | 25.41 | test_volumes.py
    test_05_detach_volume | Success | 100.29 | test_volumes.py
    test_04_delete_attached_volume | Success | 10.25 | test_volumes.py
    test_03_download_attached_volume | Success | 20.39 | test_volumes.py
    test_02_attach_volume | Success | 10.74 | test_volumes.py
    test_01_create_volume | Success | 387.57 | test_volumes.py
    test_03_delete_vm_snapshots | Success | 280.32 | test_vm_snapshots.py
    test_02_revert_vm_snapshots | Success | 224.58 | test_vm_snapshots.py
    test_01_create_vm_snapshots | Success | 130.87 | test_vm_snapshots.py
    test_deploy_vm_multiple | Success | 243.93 | test_vm_life_cycle.py
    test_deploy_vm | Success | 0.03 | test_vm_life_cycle.py
    test_advZoneVirtualRouter | Success | 0.03 | test_vm_life_cycle.py
    test_10_attachAndDetach_iso | Success | 27.06 | test_vm_life_cycle.py
    test_09_expunge_vm | Success | 125.27 | test_vm_life_cycle.py
    test_08_migrate_vm | Success | 66.30 | test_vm_life_cycle.py
    test_07_restore_vm | Success | 0.14 | test_vm_life_cycle.py
    test_06_destroy_vm | Success | 10.19 | test_vm_life_cycle.py
    test_03_reboot_vm | Success | 20.28 | test_vm_life_cycle.py
    test_02_start_vm | Success | 25.33 | test_vm_life_cycle.py
    test_01_stop_vm | Success | 30.34 | test_vm_life_cycle.py
    test_CreateTemplateWithDuplicateName | Success | 126.16 | test_templates.py
    test_08_list_system_templates | Success | 0.03 | test_templates.py
    test_07_list_public_templates | Success | 0.07 | test_templates.py
    test_05_template_permissions | Success | 0.09 | test_templates.py
    test_04_extract_template | Success | 5.19 | test_templates.py
    test_03_delete_template | Success | 5.13 | test_templates.py
    test_02_edit_template | Success | 90.20 | test_templates.py
    test_01_create_template | Success | 60.70 | test_templates.py
    test_10_destroy_cpvm | Success | 226.81 | test_ssvm.py
    test_09_destroy_ssvm | Success | 234.24 | test_ssvm.py
    test_08_reboot_cpvm | Success | 171.73 | test_ssvm.py
    test_07_reboot_ssvm | Success | 184.10 | test_ssvm.py
    test_06_stop_cpvm | Success | 166.78 | test_ssvm.py
    test_05_stop_ssvm | Success | 174.09 | test_ssvm.py
    test_04_cpvm_internals | Success | 1.15 | test_ssvm.py
    test_03_ssvm_internals | Success | 3.68 | test_ssvm.py
    test_02_list_cpvm_vm | Success | 0.15 | test_ssvm.py
    test_01_list_sec_storage_vm | Success | 0.14 | test_ssvm.py
    test_01_snapshot_root_disk | Success | 16.73 | test_snapshots.py
    test_04_change_offering_small | Success | 129.25 | test_service_offerings.py
    test_03_delete_service_offering | Success | 0.05 | test_service_offerings.py
    test_02_edit_service_offering | Success | 0.11 | test_service_offerings.py
    test_01_create_service_offering | Success | 0.11 | test_service_offerings.py
    test_02_sys_template_ready | Success | 0.15 | test_secondary_storage.py
    test_01_sys_vm_start | Success | 0.19 | test_secondary_storage.py
    test_01_scale_vm | Success | 5.28 | test_scale_vm.py
    test_09_reboot_router | Success | 65.58 | test_routers.py
    test_08_start_router | Success | 65.59 | test_routers.py
    test_07_stop_router | Success | 20.37 | test_routers.py
    test_06_router_advanced | Success | 0.07 | test_routers.py
    test_05_router_basic | Success | 0.05 | test_routers.py
    test_04_restart_network_wo_cleanup | Success | 5.59 | test_routers.py
    test_03_restart_network_cleanup | Success | 141.48 | test_routers.py
    test_02_router_internal_adv | Success | 0.83 | test_routers.py
    test_01_router_internal_basic | Success | 0.53 | test_routers.py
    test_router_dns_externalipquery | Success | 0.09 | test_router_dns.py
    test_router_dhcphosts | Success | 112.98 | test_router_dhcphosts.py
    test_router_dhcp_opts | Success | 31.81 | test_router_dhcphosts.py
    test_01_updatevolumedetail | Success | 0.12 | test_resource_detail.py
    test_01_reset_vm_on_reboot | Success | 95.93 | test_reset_vm_on_reboot.py
    test_createRegion | Success | 0.06 | test_regions.py
    test_create_pvlan_network | Success | 5.28 | test_pvlan.py
    test_dedicatePublicIpRange | Success | 0.59 | test_public_ip_range.py
    test_03_vpc_privategw_restart_vpc_cleanup | Success | 871.08 | test_privategw_acl.py
    test_02_vpc_privategw_static_routes | Success | 700.68 | test_privategw_acl.py
    test_01_vpc_privategw_acl | Success | 165.11 | test_privategw_acl.py
    test_01_primary_storage_nfs | Success | 39.09 | test_primary_storage.py
    test_01_primary_storage_iscsi | Success | 78.54 | test_primary_storage.py
    test_createPortablePublicIPRange | Success | 15.26 | test_portable_publicip.py
    test_createPortablePublicIPAcquire | Success | 15.62 | test_portable_publicip.py
    test_isolate_network_password_server | Success | 36.19 | test_password_server.py
    test_UpdateStorageOverProvisioningFactor | Success | 0.18 | test_over_provisioning.py
    test_oobm_zchange_password | Success | 30.90 | test_outofbandmanagement.py
    test_oobm_multiple_mgmt_server_ownership | Success | 16.46 | test_outofbandmanagement.py
    test_oobm_issue_power_status | Success | 10.32 | test_outofbandmanagement.py
    test_oobm_issue_power_soft | Success | 10.66 | test_outofbandmanagement.py
    test_oobm_issue_power_reset | Success | 15.46 | test_outofbandmanagement.py
    test_oobm_issue_power_on | Success | 15.46 | test_outofbandmanagement.py
    test_oobm_issue_power_off | Success | 15.44 | test_outofbandmanagement.py
    test_oobm_issue_power_cycle | Success | 16.18 | test_outofbandmanagement.py
    test_oobm_enabledisable_across_clusterzones | Success | 88.53 | test_outofbandmanagement.py
    test_oobm_enable_feature_valid | Success | 0.23 | test_outofbandmanagement.py
    test_oobm_enable_feature_invalid | Success | 0.14 | test_outofbandmanagement.py
    test_oobm_disable_feature_valid | Success | 5.25 | test_outofbandmanagement.py
    test_oobm_disable_feature_invalid | Success | 0.14 | test_outofbandmanagement.py
    test_oobm_configure_invalid_driver | Success | 0.09 | test_outofbandmanagement.py
    test_oobm_configure_default_driver | Success | 0.10 | test_outofbandmanagement.py
    test_oobm_background_powerstate_sync | Success | 23.59 | test_outofbandmanagement.py
    test_extendPhysicalNetworkVlan | Success | 15.48 | test_non_contigiousvlan.py
    test_01_nic | Success | 673.08 | test_nic.py
    test_releaseIP | Success | 300.11 | test_network.py
    test_reboot_router | Success | 652.72 | test_network.py
    test_public_ip_user_account | Success | 10.35 | test_network.py
    test_public_ip_admin_account | Success | 40.57 | test_network.py
    test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Success | 87.08 | test_network.py
    test_network_rules_acquired_public_ip_2_nat_rule | Success | 76.86 | test_network.py
    test_network_rules_acquired_public_ip_1_static_nat_rule | Success | 101.51 | test_network.py
    test_delete_account | Success | 269.67 | test_network.py
    test_02_port_fwd_on_non_src_nat | Success | 71.01 | test_network.py
    test_01_port_fwd_on_src_nat | Success | 84.21 | test_network.py
    test_nic_secondaryip_add_remove | Success | 219.21 | test_multipleips_per_nic.py
    login_test_saml_user | Success | 25.13 | test_login.py
    test_assign_and_removal_lb | Success | 149.67 | test_loadbalance.py
    test_02_create_lb_rule_non_nat | Success | 207.87 | test_loadbalance.py
    test_01_create_lb_rule_src_nat | Success | 209.91 | test_loadbalance.py
    test_03_list_snapshots | Success | 0.13 | test_list_ids_parameter.py
    test_02_list_templates | Success | 0.05 | test_list_ids_parameter.py
    test_01_list_volumes | Success | 0.04 | test_list_ids_parameter.py
    test_07_list_default_iso | Success | 0.09 | test_iso.py
    test_05_iso_permissions | Success | 0.07 | test_iso.py
    test_04_extract_Iso | Success | 5.25 | test_iso.py
    test_03_delete_iso | Success | 95.28 | test_iso.py
    test_02_edit_iso | Success | 0.07 | test_iso.py
    test_01_create_iso | Success | 22.11 | test_iso.py
    test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Success | 537.50 | test_internal_lb.py
    test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Success | 361.10 | test_internal_lb.py
    test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Success | 1036.98 | test_internal_lb.py
    test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Success | 710.20 | test_internal_lb.py
    test_dedicateGuestVlanRange | Success | 10.36 | test_guest_vlan_range.py
    test_UpdateConfigParamWithScope | Success | 0.18 | test_global_settings.py
    test_rolepermission_lifecycle_update | Success | 7.43 | test_dynamicroles.py
    test_rolepermission_lifecycle_list | Success | 7.19 | test_dynamicroles.py
    test_rolepermission_lifecycle_delete | Success | 6.91 | test_dynamicroles.py
    test_rolepermission_lifecycle_create | Success | 6.97 | test_dynamicroles.py
    test_rolepermission_lifecycle_concurrent_updates | Success | 7.18 | test_dynamicroles.py
    test_role_lifecycle_update_role_inuse | Success | 7.00 | test_dynamicroles.py
    test_role_lifecycle_update | Success | 12.13 | test_dynamicroles.py
    test_role_lifecycle_list | Success | 7.08 | test_dynamicroles.py
    test_role_lifecycle_delete | Success | 12.06 | test_dynamicroles.py
    test_role_lifecycle_create | Success | 6.99 | test_dynamicroles.py
    test_role_inuse_deletion | Success | 6.99 | test_dynamicroles.py
    test_role_account_acls_multiple_mgmt_servers | Success | 9.57 | test_dynamicroles.py
    test_role_account_acls | Success | 9.86 | test_dynamicroles.py
    test_default_role_deletion | Success | 7.19 | test_dynamicroles.py
    test_04_create_fat_type_disk_offering | Success | 0.09 | test_disk_offerings.py
    test_03_delete_disk_offering | Success | 0.07 | test_disk_offerings.py
    test_02_edit_disk_offering | Success | 0.06 | test_disk_offerings.py
    test_02_create_sparse_type_disk_offering | Success | 0.09 | test_disk_offerings.py
    test_01_create_disk_offering | Success | 0.14 | test_disk_offerings.py
    test_deployvm_userdispersing | Success | 56.45 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userconcentrated | Success | 121.60 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_firstfit | Success | 182.09 | test_deploy_vms_with_varied_deploymentplanners.py
    test_deployvm_userdata_post | Success | 20.57 | test_deploy_vm_with_userdata.py
    test_deployvm_userdata | Success | 136.74 | test_deploy_vm_with_userdata.py
    test_02_deploy_vm_root_resize | Success | 6.89 | test_deploy_vm_root_resize.py
    test_01_deploy_vm_root_resize | Success | 6.87 | test_deploy_vm_root_resize.py
    test_00_deploy_vm_root_resize | Success | 7.24 | test_deploy_vm_root_resize.py
    test_deploy_vm_from_iso | Success | 194.24 | test_deploy_vm_iso.py
    test_DeployVmAntiAffinityGroup | Success | 207.19 | test_affinity_groups.py
    test_01_test_vm_volume_snapshot | Skipped | 0.00 | test_vm_snapshots.py
    test_06_copy_template | Skipped | 0.00 | test_templates.py
    test_static_role_account_acls | Skipped | 0.03 | test_staticroles.py
    test_06_copy_iso | Skipped | 0.00 | test_iso.py
    test_deploy_vgpu_enabled_vm | Skipped | 0.01 | test_deploy_vgpu_enabled_vm.py



---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan test matrix


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by ustcweizhou <gi...@git.apache.org>.
Github user ustcweizhou commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy FYI
    ```
    diff --git a/systemvm/patches/debian/config/opt/cloud/bin/merge.py b/systemvm/patches/debian/config/opt/cloud/bin/merge.py
    index c6ed190..7f3dbbc 100755
    --- a/systemvm/patches/debian/config/opt/cloud/bin/merge.py
    +++ b/systemvm/patches/debian/config/opt/cloud/bin/merge.py
    @@ -217,6 +217,9 @@ class updateDataBag:
             elif (self.qFile.data['cmd_line']['type'] == "dhcpsrvr"):
                 self.processCLItem('0', "guest")
                 self.processCLItem('1', "control")
    +        elif (self.qFile.data['cmd_line']['type'] == "ilbvm"):
    +            self.processCLItem('0', "guest")
    +            self.processCLItem('1', "control")
             return cs_cmdline.merge(dbag, self.qFile.data)
    
         def processCLItem(self, num, nw_type):
    ```


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76496565
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    +
    +    def setUp(self):
    +        self.apiclient = self.testClient.getApiClient()
    +        self.cleanup = []
    +        return
    +
    +    @classmethod
    +    def tearDownClass(cls):
    +        try:
    +            cls.apiclient = super(
    +                TestPortForwarding,
    +                cls).getClsTestClient().getApiClient()
    +            cleanup_resources(cls.apiclient, cls._cleanup)
    +        except Exception as e:
    +            raise Exception("Warning: Exception during cleanup : %s" % e)
    +
    +    def tearDown(self):
    +        cleanup_resources(self.apiclient, self.cleanup)
    +        return
    +
    +    @attr(tags=["advanced", "smoke"], required_hardware="true")
    +    def test_port_forwarding_on_ip_from_non_src_nat_ip_range(self):
    +        """Test for port forwarding on a IP which is in pubic IP range different
    +           from public IP range that has source NAT IP associated with network
    +        """
    +
    +        # Validate the following:
    +        # 1. Create a new public IP range and dedicate to a account
    +        # 2. Acquire a IP from new public range
    +        # 3. create a port forwarding on acquired IP from new range
    +        # 4. Create a firewall rule to open up the port
    +        # 5. Test SSH works to the VM
    +
    +        self.public_ip_range = PublicIpRange.create(
    +                                    self.apiclient,
    +                                    self.services["publiciprange"]
    +                               )
    +
    +        self.debug("Dedicating Public IP range to the account");
    +        dedicate_public_ip_range_response = PublicIpRange.dedicate(
    +                                                self.apiclient,
    +                                                self.public_ip_range.vlan.id,
    +                                                account=self.account.name,
    +                                                domainid=self.account.domainid
    +                                            )
    +        ip_address = PublicIPAddress.create(
    +            self.apiclient,
    +            self.account.name,
    +            self.zone.id,
    +            self.account.domainid,
    +            self.services["virtual_machine"]
    +        )
    +        self.cleanup.append(ip_address)
    +        self.cleanup.append(self.public_ip_range)
    +        # Check if VM is in Running state before creating NAT and firewall rules
    +        vm_response = VirtualMachine.list(
    +            self.apiclient,
    +            id=self.virtual_machine.id
    +        )
    +
    +        self.assertEqual(
    +            isinstance(vm_response, list),
    +            True,
    +            "Check list VM returns a valid list"
    +        )
    +
    +        self.assertNotEqual(
    +            len(vm_response),
    +            0,
    +            "Check Port Forwarding Rule is created"
    +        )
    +        self.assertEqual(
    +            vm_response[0].state,
    +            'Running',
    +            "VM state should be Running before creating a NAT rule."
    +        )
    +
    +        # Open up firewall port for SSH
    +        FireWallRule.create(
    +            self.apiclient,
    +            ipaddressid=ip_address.ipaddress.id,
    +            protocol=self.services["natrule"]["protocol"],
    +            cidrlist=['0.0.0.0/0'],
    +            startport=self.services["natrule"]["publicport"],
    +            endport=self.services["natrule"]["publicport"]
    +        )
    +
    +        # Create PF rule
    +        nat_rule = NATRule.create(
    +            self.apiclient,
    +            self.virtual_machine,
    +            self.services["natrule"],
    +            ip_address.ipaddress.id
    +        )
    +
    +        try:
    +            logger.debug("SSHing into VM with IP address %s with NAT IP %s" %
    +                       (
    +                           self.virtual_machine.ipaddress,
    +                           ip_address.ipaddress.ipaddress
    +                       ))
    +            self.virtual_machine.get_ssh_client(ip_address.ipaddress.ipaddress)
    +        except Exception as e:
    +            self.fail(
    +                "SSH Access failed for %s: %s" %
    +                (self.virtual_machine.ipaddress, e)
    +            )
    +
    +        nat_rule.delete(self.apiclient)
    +
    +class TestStaticNat(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestStaticNat, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    +        cls.virtual_machine = VirtualMachine.create(
    +            cls.apiclient,
    +            cls.services["virtual_machine"],
    +            templateid=template.id,
    +            accountid=cls.account.name,
    +            domainid=cls.account.domainid,
    +            serviceofferingid=cls.service_offering.id
    +        )
    +        cls.defaultNetworkId = cls.virtual_machine.nic[0].networkid
    +        cls._cleanup = [
    +            cls.virtual_machine,
    +            cls.account,
    +            cls.service_offering
    +        ]
    --- End diff --
    
    Please see previous comments regarding a utility function to create VMs.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by murali-reddy <gi...@git.apache.org>.
Github user murali-reddy commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan test


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack pull request #1659: CLOUDSTACK-9339 Virtual Routers don't handle ...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on a diff in the pull request:

    https://github.com/apache/cloudstack/pull/1659#discussion_r76482524
  
    --- Diff: test/integration/smoke/test_multiple_public_ip_ranges.py ---
    @@ -0,0 +1,887 @@
    +# 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.
    +""" BVT tests for network services on public IP's from different public IP
    +  range than that of associated source NAT IP of the network. Each IP associated
    +  with network from a different public IP range results in a new public
    +  interface on VR (eth3, eth4 etc) and iptable
    +"""
    +# Import Local Modules
    +from marvin.codes import (FAILED, STATIC_NAT_RULE, LB_RULE,
    +                          NAT_RULE, PASS)
    +from marvin.cloudstackTestCase import cloudstackTestCase
    +from marvin.cloudstackException import CloudstackAPIException
    +from marvin.cloudstackAPI import rebootRouter
    +from marvin.sshClient import SshClient
    +from marvin.lib.utils import cleanup_resources, get_process_status
    +from marvin.lib.base import (Account,
    +                             VirtualMachine,
    +                             ServiceOffering,
    +                             NATRule,
    +                             PublicIPAddress,
    +                             StaticNATRule,
    +                             FireWallRule,
    +                             Network,
    +                             NetworkOffering,
    +                             LoadBalancerRule,
    +                             PublicIpRange,
    +                             Router,
    +                             VpcOffering,
    +                             VPC,
    +                             NetworkACL)
    +from marvin.lib.common import (get_domain,
    +                               get_zone,
    +                               get_template,
    +                               list_hosts,
    +                               list_publicIP,
    +                               list_nat_rules,
    +                               list_routers,
    +                               list_virtual_machines,
    +                               list_lb_rules,
    +                               list_configurations,
    +                               verifyGuestTrafficPortGroups)
    +from nose.plugins.attrib import attr
    +from ddt import ddt, data
    +# Import System modules
    +import socket
    +import time
    +import logging
    +
    +_multiprocess_shared_ = True
    +
    +logger = logging.getLogger('TestNetworkOps')
    +stream_handler = logging.StreamHandler()
    +logger.setLevel(logging.DEBUG)
    +logger.addHandler(stream_handler)
    +
    +class TestPortForwarding(cloudstackTestCase):
    +
    +    @classmethod
    +    def setUpClass(cls):
    +
    +        testClient = super(TestPortForwarding, cls).getClsTestClient()
    +        cls.apiclient = testClient.getApiClient()
    +        cls.services = testClient.getParsedTestDataConfig()
    +        cls.hypervisor = testClient.getHypervisorInfo()
    +        # Get Zone, Domain and templates
    +        cls.domain = get_domain(cls.apiclient)
    +        cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
    +        cls.services["virtual_machine"]["zoneid"] = cls.zone.id
    +        cls.services["zoneid"] = cls.zone.id
    +        template = get_template(
    +            cls.apiclient,
    +            cls.zone.id,
    +            cls.services["ostype"]
    +        )
    +        if template == FAILED:
    +            assert False, "get_template() failed to return template with description %s" % cls.services[
    +                "ostype"]
    +
    +        # Create an account, network, VM and IP addresses
    +        cls.account = Account.create(
    +            cls.apiclient,
    +            cls.services["account"],
    +            admin=True,
    +            domainid=cls.domain.id
    +        )
    +        cls.services["publiciprange"]["zoneid"] = cls.zone.id
    +        cls.service_offering = ServiceOffering.create(
    +            cls.apiclient,
    +            cls.services["service_offerings"]["tiny"]
    +        )
    --- End diff --
    
    @abhinandanprateek is there a way for use to determine the default service offering via the Marvin configuration?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by murali-reddy <gi...@git.apache.org>.
Github user murali-reddy commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan test


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Packaging result: \u2714centos6 \u2714centos7 \u2714debian. JID-87


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by blueorangutan <gi...@git.apache.org>.
Github user blueorangutan commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @rhtyd a Jenkins job has been kicked to build packages. I'll keep you posted as I make progress.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan test


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy Looking through the Marvin tests, there is a lot of boilerplate code and duplicated setup in test cases.  It feels like there is an opportunity to introduce one or more base classes that would not only reduce the duplication/boilerplate, but make building future VR test cases easier.  Do you agree?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan package


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @murali-reddy can you fix the merge conflict, and rebase against latest base branch?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by rhtyd <gi...@git.apache.org>.
Github user rhtyd commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    @blueorangutan test


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by jburwell <gi...@git.apache.org>.
Github user jburwell commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Tests look good on KVM.  However, it seems like a Good Thing(tm) to test on KVM and XenServer as well.
    
    @blueorangutan test centos7 vmware-55u3
    @blueorangutan test centos7 xenserver-65sp1


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

[GitHub] cloudstack issue #1659: CLOUDSTACK-9339 Virtual Routers don't handle Multipl...

Posted by murali-reddy <gi...@git.apache.org>.
Github user murali-reddy commented on the issue:

    https://github.com/apache/cloudstack/pull/1659
  
    Can this merged now? test failures are specific to redundent VR/VPC VR which have been failing in 4.8/4.9/master.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---