You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cloudstack.apache.org by borisroman <gi...@git.apache.org> on 2016/01/18 10:02:14 UTC

[GitHub] cloudstack pull request: Enhance VR performance

GitHub user borisroman opened a pull request:

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

    Enhance VR performance

    Will post integration test results soon!
    
    Ping @wilderrodrigues @remibergsma 
    


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

    $ git pull https://github.com/borisroman/cloudstack 4.7-vr-performance

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

    https://github.com/apache/cloudstack/pull/1346.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 #1346
    
----
commit bd96a8e79f9aae3267c8870a34f8460147bcda92
Author: Boris Schrijver <bs...@schubergphilis.com>
Date:   2016-01-16T18:47:02Z

    Enhance VR performance by selectively executing tasks instead of brute-forcing

----


---
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: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50259089
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/configure.py ---
    @@ -901,79 +901,123 @@ def processStaticNatRule(self, rule):
     
     
     def main(argv):
    +    # The file we are currently processing, if it is "cmd_line.json" everything will be processed.
    +    process_file = argv[1]
    +
    +    # process_file can be None, if so assume cmd_line.json
    +    if process_file is None:
    +        process_file = "cmd_line.json"
    +
    +    # Track if changes need to be committed to NetFilter
    +    iptables_change = False
    +
    +    # The "GLOBAL" Configuration object
         config = CsConfig()
    +
         logging.basicConfig(filename=config.get_logger(),
                             level=config.get_level(),
                             format=config.get_format())
    +
    +    # Load stored ip adresses from disk to CsConfig()
         config.set_address()
     
         logging.debug("Configuring ip addresses")
    -    # IP configuration
         config.address().compare()
         config.address().process()
     
    -    logging.debug("Configuring vmpassword")
    -    password = CsPassword("vmpassword", config)
    -    password.process()
    +    if process_file in ["cmd_line.json", "guest_network.json"]:
    +        logging.debug("Configuring Guest Network")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "vm_password.json"]:
    +        logging.debug("Configuring vmpassword")
    +        password = CsPassword("vmpassword", config)
    +        password.process()
     
    -    logging.debug("Configuring vmdata")
    -    metadata = CsVmMetadata('vmdata', config)
    -    metadata.process()
    +    if process_file in ["cmd_line.json", "vm_metadata.json"]:
    +        logging.debug("Configuring vmdata")
    +        metadata = CsVmMetadata('vmdata', config)
    +        metadata.process()
     
    -    logging.debug("Configuring networkacl")
    +    # Always run both CsAcl().process() methods
    +    # They fill the base rules in config.fw[]
         acls = CsAcl('networkacl', config)
         acls.process()
     
    -    logging.debug("Configuring firewall rules")
         acls = CsAcl('firewallrules', config)
         acls.process()
     
    -    logging.debug("Configuring PF rules")
         fwd = CsForwardingRules("forwardingrules", config)
         fwd.process()
     
    -    logging.debug("Configuring s2s vpn")
         vpns = CsSite2SiteVpn("site2sitevpn", config)
         vpns.process()
     
    -    logging.debug("Configuring remote access vpn")
    -    #remote access vpn
         rvpn = CsRemoteAccessVpn("remoteaccessvpn", config)
         rvpn.process()
     
    -    logging.debug("Configuring vpn users list")
    -    #remote access vpn users
    -    vpnuser = CsVpnUser("vpnuserlist", config)
    -    vpnuser.process()
    -
    -    logging.debug("Configuring dhcp entry")
    -    dhcp = CsDhcp("dhcpentry", config)
    -    dhcp.process()
    -
    -    logging.debug("Configuring load balancer")
         lb = CsLoadBalancer("loadbalancer", config)
         lb.process()
     
    -    logging.debug("Configuring monitor service")
    -    mon = CsMonitor("monitorservice", config)
    -    mon.process()
    +    if process_file in ["cmd_line.json", "network_acl.json"]:
    +        logging.debug("Configuring networkacl")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "firewall_rules.json"]:
    +        logging.debug("Configuring firewall rules")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "forwarding_rules.json", "staticnat_rules.json"]:
    +        logging.debug("Configuring PF rules")
    --- End diff --
    
    Hey @wilderrodrigues,
    
    I understand the checks that are being made. However, I do not think it is appropriate to log that you are configuring PFR, after they have already been processed and configured. I think it can be misleading while debugging/searching logs. 
    
    There are certain code paths that are executed regardless of the config file and they are only logged after the fact -> acls, fwd, vpns, rvpn, lb. So, if an error occurs in any of the functions, there are no logs to see what was being executed.


---
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: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50252187
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/cs/CsDhcp.py ---
    @@ -96,29 +96,8 @@ def configure_server(self):
                 self.conf.search(sline, line)
     
         def delete_leases(self):
    -        changed = []
    -        leases = []
             try:
    -            for line in open(LEASES):
    -                bits = line.strip().split(' ')
    -                to = {"device": bits[0],
    -                      "mac": bits[1],
    -                      "ip": bits[2],
    -                      "host": bits[3:],
    -                      "del": False
    -                      }
    -                changed.append(to)
    -
    -                for v in changed:
    -                    if v['mac'] == to['mac'] or v['ip'] == to['ip'] or v['host'] == to['host']:
    -                        to['del'] = True
    -                leases.append(to)
    -
    -            for o in leases:
    -                if o['del']:
    -                    cmd = "dhcp_release eth%s %s %s" % (o['device'], o['ip'], o['mac'])
    -                    logging.info(cmd)
    -                    CsHelper.execute(cmd)
    +            open(LEASES, 'w').close()
    --- End diff --
    
    Hi @pdube 
    
    From an static analysis point of view, I understand your concerns. However, when we tested this in the lab, we found out that it was always trying to execute the dhcp_lease command against eth0, only eth0. The result of given command was actually nothing!
    
    What is being done now takes care of getting rid of the leases in the file, because they have already been deleted.
    
    @borisroman, please add more if I forgot something.
    
    Cheers,
    Wilder


---
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: Enhance VR performance

Posted by wilderrodrigues <gi...@git.apache.org>.
Github user wilderrodrigues commented on the pull request:

    https://github.com/apache/cloudstack/pull/1346#issuecomment-172488515
  
    Hi @borisroman 
    
    Thanks for the fixes! It will really make the VRs behave better! :)
    
    I now sit next to Boris here at Schuberg Philis and was looking every now and then at his work. I also did a code review now.
    
    LGTM :+1: 
    
    @borisroman and running the IT and @remibergsma will do so as well. I'm starting mine now!
    
    Cheers,
    Wilder


---
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: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50259649
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/cs/CsDhcp.py ---
    @@ -96,29 +96,8 @@ def configure_server(self):
                 self.conf.search(sline, line)
     
         def delete_leases(self):
    -        changed = []
    -        leases = []
             try:
    -            for line in open(LEASES):
    -                bits = line.strip().split(' ')
    -                to = {"device": bits[0],
    -                      "mac": bits[1],
    -                      "ip": bits[2],
    -                      "host": bits[3:],
    -                      "del": False
    -                      }
    -                changed.append(to)
    -
    -                for v in changed:
    -                    if v['mac'] == to['mac'] or v['ip'] == to['ip'] or v['host'] == to['host']:
    -                        to['del'] = True
    -                leases.append(to)
    -
    -            for o in leases:
    -                if o['del']:
    -                    cmd = "dhcp_release eth%s %s %s" % (o['device'], o['ip'], o['mac'])
    -                    logging.info(cmd)
    -                    CsHelper.execute(cmd)
    +            open(LEASES, 'w').close()
    --- End diff --
    
    That clears that up then!


---
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: Enhance VR performance

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

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


---
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: Enhance VR performance

Posted by wilderrodrigues <gi...@git.apache.org>.
Github user wilderrodrigues commented on the pull request:

    https://github.com/apache/cloudstack/pull/1346#issuecomment-173169424
  
    Ping @borisroman @remibergsma 
    
    PR LGTM :+1: 
    
    * Environment
      * Hardware required: TRUE
      * Management Server + MySQL on CentOS 7.1
      * One KVM Host on CentOS 7.1
      * Agent + Common RPMs built from 4.7.0  source
    
    * Tests Suites Executed
    
    ```
    nosetests --with-marvin --marvin-config=/data/shared/marvin/mct-zone1-kvm1-ISOLATED.cfg -s -a tags=advanced,required_hardware=true smoke/test_vpc_redundant.py smoke/test_routers_iptables_default_policy.py smoke/test_routers_network_ops.py smoke/test_vpc_router_nics.py smoke/test_password_server.py smoke/test_router_dhcphosts.py smoke/test_loadbalance.py smoke/test_internal_lb.py smoke/test_ssvm.py smoke/test_vpc_vpn.py smoke/test_network.py smoke/test_privategw_acl.py
    ```
    
    * Results
    
    ```
    Create a redundant VPC with two networks with two VMs in each network ... === TestName: test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network and check default routes ... === TestName: test_02_redundant_VPC_default_routes | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network ... === TestName: test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Status : SUCCESS ===
    ok
    Create a redundant VPC with 1 Tier, 1 VM, 1 ACL, 1 PF and test Network GC Nics ... === TestName: test_04_rvpc_network_garbage_collector_nics | Status : SUCCESS ===
    ok
    Create a redundant VPC with 1 Tier, 1 VM, 1 ACL, 1 PF and test Network GC Nics ... === TestName: test_05_rvpc_multi_tiers | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policy on RouterVM ... === TestName: test_02_routervm_iptables_policies | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policies on VPC router ... === TestName: test_01_single_VPC_iptables_policies | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_01_isolate_network_FW_PF_default_routes_egress_true | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_02_isolate_network_FW_PF_default_routes_egress_false | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_01_RVR_Network_FW_PF_SSH_default_routes_egress_true | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_02_RVR_Network_FW_PF_SSH_default_routes_egress_false | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_03_RVR_Network_check_router_state | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test nics after destroy ... === TestName: test_01_VPC_nics_after_destroy | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test default routes ... === TestName: test_02_VPC_default_routes | Status : SUCCESS ===
    ok
    Check the password file in the Router VM ... === TestName: test_isolate_network_password_server | Status : SUCCESS ===
    ok
    Check that the /etc/dhcphosts.txt doesn't contain duplicate IPs ... === TestName: test_router_dhcphosts | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with source NAT ... === TestName: test_01_create_lb_rule_src_nat | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with non source NAT ... === TestName: test_02_create_lb_rule_non_nat | Status : SUCCESS ===
    ok
    Test for assign & removing load balancing rule ... === TestName: test_assign_and_removal_lb | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Single VPC ... === TestName: test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Redundant VPC ... === TestName: test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
    ok
    Test SSVM Internals ... === TestName: test_03_ssvm_internals | Status : SUCCESS ===
    ok
    Test CPVM Internals ... === TestName: test_04_cpvm_internals | Status : SUCCESS ===
    ok
    Test stop SSVM ... === TestName: test_05_stop_ssvm | Status : SUCCESS ===
    ok
    Test stop CPVM ... === TestName: test_06_stop_cpvm | Status : SUCCESS ===
    ok
    Test reboot SSVM ... === TestName: test_07_reboot_ssvm | Status : SUCCESS ===
    ok
    Test reboot CPVM ... === TestName: test_08_reboot_cpvm | Status : SUCCESS ===
    ok
    Test destroy SSVM ... === TestName: test_09_destroy_ssvm | Status : SUCCESS ===
    ok
    Test destroy CPVM ... === TestName: test_10_destroy_cpvm | Status : SUCCESS ===
    ok
    Test Site 2 Site VPN Across redundant VPCs ... === TestName: test_01_redundant_vpc_site2site_vpn | Status : SUCCESS ===
    ok
    Test Remote Access VPN in VPC ... === TestName: test_01_vpc_remote_access_vpn | Status : SUCCESS ===
    ok
    Test Site 2 Site VPN Across VPCs ... === TestName: test_01_vpc_site2site_vpn | Status : SUCCESS ===
    ok
    Test for port forwarding on source NAT ... === TestName: test_01_port_fwd_on_src_nat | Status : SUCCESS ===
    ok
    Test for port forwarding on non source NAT ... === TestName: test_02_port_fwd_on_non_src_nat | Status : SUCCESS ===
    ok
    Test for reboot router ... === TestName: test_reboot_router | Status : SUCCESS ===
    ok
    Test for Router rules for network rules on acquired public IP ... === TestName: test_network_rules_acquired_public_ip_1_static_nat_rule | Status : SUCCESS ===
    ok
    Test for Router rules for network rules on acquired public IP ... === TestName: test_network_rules_acquired_public_ip_2_nat_rule | Status : SUCCESS ===
    ok
    Test for Router rules for network rules on acquired public IP ... === TestName: test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Status : SUCCESS ===
    ok
    
    ----------------------------------------------------------------------
    Ran 40 tests in 19980.619s
    
    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 pull request: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50251745
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/configure.py ---
    @@ -901,79 +901,123 @@ def processStaticNatRule(self, rule):
     
     
     def main(argv):
    +    # The file we are currently processing, if it is "cmd_line.json" everything will be processed.
    +    process_file = argv[1]
    +
    +    # process_file can be None, if so assume cmd_line.json
    +    if process_file is None:
    +        process_file = "cmd_line.json"
    +
    +    # Track if changes need to be committed to NetFilter
    +    iptables_change = False
    +
    +    # The "GLOBAL" Configuration object
         config = CsConfig()
    +
         logging.basicConfig(filename=config.get_logger(),
                             level=config.get_level(),
                             format=config.get_format())
    +
    +    # Load stored ip adresses from disk to CsConfig()
         config.set_address()
     
         logging.debug("Configuring ip addresses")
    -    # IP configuration
         config.address().compare()
         config.address().process()
     
    -    logging.debug("Configuring vmpassword")
    -    password = CsPassword("vmpassword", config)
    -    password.process()
    +    if process_file in ["cmd_line.json", "guest_network.json"]:
    +        logging.debug("Configuring Guest Network")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "vm_password.json"]:
    +        logging.debug("Configuring vmpassword")
    +        password = CsPassword("vmpassword", config)
    +        password.process()
     
    -    logging.debug("Configuring vmdata")
    -    metadata = CsVmMetadata('vmdata', config)
    -    metadata.process()
    +    if process_file in ["cmd_line.json", "vm_metadata.json"]:
    +        logging.debug("Configuring vmdata")
    +        metadata = CsVmMetadata('vmdata', config)
    +        metadata.process()
     
    -    logging.debug("Configuring networkacl")
    +    # Always run both CsAcl().process() methods
    +    # They fill the base rules in config.fw[]
         acls = CsAcl('networkacl', config)
         acls.process()
     
    -    logging.debug("Configuring firewall rules")
         acls = CsAcl('firewallrules', config)
         acls.process()
     
    -    logging.debug("Configuring PF rules")
    --- End diff --
    
    We discussed that but there were some issues we need to investigate. This already improves it, once we figure out how to make it conditional we'll add a new PR.


---
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: Enhance VR performance

Posted by remibergsma <gi...@git.apache.org>.
Github user remibergsma commented on the pull request:

    https://github.com/apache/cloudstack/pull/1346#issuecomment-173187438
  
    LGTM based on these tests:
    
    ```
    nosetests --with-marvin --marvin-config=${marvinCfg} -s -a tags=advanced,required_hardware=true \
    component/test_vpc_redundant.py \
    component/test_routers_iptables_default_policy.py \
    component/test_routers_network_ops.py \
    component/test_vpc_router_nics.py \
    smoke/test_loadbalance.py \
    smoke/test_internal_lb.py \
    smoke/test_ssvm.py \
    smoke/test_network.py
    
    ```
    
    Result:
    
    ```
    Check the password file in the Router VM ... === TestName: test_isolate_network_password_server | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network ... === TestName: test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network and check default routes ... === TestName: test_02_redundant_VPC_default_routes | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network ... === TestName: test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Status : SUCCESS ===
    ok
    Create a redundant VPC with 1 Tier, 1 VM, 1 ACL, 1 PF and test Network GC Nics ... === TestName: test_04_rvpc_network_garbage_collector_nics | Status : FAILED ===
    FAIL
    Create a redundant VPC with 1 Tier, 1 VM, 1 ACL, 1 PF and test Network GC Nics ... === TestName: test_05_rvpc_multi_tiers | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policy on RouterVM ... === TestName: test_02_routervm_iptables_policies | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policies on VPC router ... === TestName: test_01_single_VPC_iptables_policies | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_01_isolate_network_FW_PF_default_routes_egress_true | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_02_isolate_network_FW_PF_default_routes_egress_false | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_01_RVR_Network_FW_PF_SSH_default_routes_egress_true | Status : FAILED ===
    FAIL
    Test redundant router internals ... === TestName: test_02_RVR_Network_FW_PF_SSH_default_routes_egress_false | Status : FAILED ===
    FAIL
    Test redundant router internals ... === TestName: test_03_RVR_Network_check_router_state | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test nics after destroy ... === TestName: test_01_VPC_nics_after_destroy | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test default routes ... === TestName: test_02_VPC_default_routes | Status : SUCCESS ===
    ok
    Check that the /etc/dhcphosts.txt doesn't contain duplicate IPs ... === TestName: test_router_dhcphosts | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with source NAT ... === TestName: test_01_create_lb_rule_src_nat | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with non source NAT ... === TestName: test_02_create_lb_rule_non_nat | Status : SUCCESS ===
    ok
    Test for assign & removing load balancing rule ... === TestName: test_assign_and_removal_lb | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Single VPC ... === TestName: test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Redundant VPC ... === TestName: test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
    ok
    Test SSVM Internals ... === TestName: test_03_ssvm_internals | Status : SUCCESS ===
    ok
    Test CPVM Internals ... === TestName: test_04_cpvm_internals | Status : SUCCESS ===
    ok
    Test stop SSVM ... === TestName: test_05_stop_ssvm | Status : SUCCESS ===
    ok
    Test stop CPVM ... === TestName: test_06_stop_cpvm | Status : SUCCESS ===
    ok
    Test reboot SSVM ... === TestName: test_07_reboot_ssvm | Status : SUCCESS ===
    ok
    Test reboot CPVM ... === TestName: test_08_reboot_cpvm | Status : SUCCESS ===
    ok
    Test destroy SSVM ... === TestName: test_09_destroy_ssvm | Status : SUCCESS ===
    ok
    ...skipping...
    Check the password file in the Router VM ... === TestName: test_isolate_network_password_server | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network ... === TestName: test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network and check default routes ... === TestName: test_02_redundant_VPC_default_routes | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network ... === TestName: test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Status : SUCCESS ===
    ok
    Create a redundant VPC with 1 Tier, 1 VM, 1 ACL, 1 PF and test Network GC Nics ... === TestName: test_04_rvpc_network_garbage_collector_nics | Status : FAILED ===
    FAIL
    Create a redundant VPC with 1 Tier, 1 VM, 1 ACL, 1 PF and test Network GC Nics ... === TestName: test_05_rvpc_multi_tiers | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policy on RouterVM ... === TestName: test_02_routervm_iptables_policies | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policies on VPC router ... === TestName: test_01_single_VPC_iptables_policies | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_01_isolate_network_FW_PF_default_routes_egress_true | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_02_isolate_network_FW_PF_default_routes_egress_false | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_01_RVR_Network_FW_PF_SSH_default_routes_egress_true | Status : FAILED ===
    FAIL
    Test redundant router internals ... === TestName: test_02_RVR_Network_FW_PF_SSH_default_routes_egress_false | Status : FAILED ===
    FAIL
    Test redundant router internals ... === TestName: test_03_RVR_Network_check_router_state | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test nics after destroy ... === TestName: test_01_VPC_nics_after_destroy | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test default routes ... === TestName: test_02_VPC_default_routes | Status : SUCCESS ===
    ok
    Check that the /etc/dhcphosts.txt doesn't contain duplicate IPs ... === TestName: test_router_dhcphosts | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with source NAT ... === TestName: test_01_create_lb_rule_src_nat | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with non source NAT ... === TestName: test_02_create_lb_rule_non_nat | Status : SUCCESS ===
    ok
    Test for assign & removing load balancing rule ... === TestName: test_assign_and_removal_lb | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Single VPC ... === TestName: test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Redundant VPC ... === TestName: test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
    ok
    Test SSVM Internals ... === TestName: test_03_ssvm_internals | Status : SUCCESS ===
    ok
    Test CPVM Internals ... === TestName: test_04_cpvm_internals | Status : SUCCESS ===
    ok
    Test stop SSVM ... === TestName: test_05_stop_ssvm | Status : SUCCESS ===
    ok
    Test stop CPVM ... === TestName: test_06_stop_cpvm | Status : SUCCESS ===
    ok
    Test reboot SSVM ... === TestName: test_07_reboot_ssvm | Status : SUCCESS ===
    ok
    Test reboot CPVM ... === TestName: test_08_reboot_cpvm | Status : SUCCESS ===
    ok
    Test destroy SSVM ... === TestName: test_09_destroy_ssvm | Status : SUCCESS ===
    ok
    [root@cs1 MarvinLogs]# less test_network_W1IF1A/results.txt 
    Check the password file in the Router VM ... === TestName: test_isolate_network_password_server | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network ... === TestName: test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network and check default routes ... === TestName: test_02_redundant_VPC_default_routes | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network ... === TestName: test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Status : SUCCESS ===
    ok
    Create a redundant VPC with 1 Tier, 1 VM, 1 ACL, 1 PF and test Network GC Nics ... === TestName: test_04_rvpc_network_garbage_collector_nics | Status : FAILED ===
    FAIL
    Create a redundant VPC with 1 Tier, 1 VM, 1 ACL, 1 PF and test Network GC Nics ... === TestName: test_05_rvpc_multi_tiers | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policy on RouterVM ... === TestName: test_02_routervm_iptables_policies | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policies on VPC router ... === TestName: test_01_single_VPC_iptables_policies | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_01_isolate_network_FW_PF_default_routes_egress_true | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_02_isolate_network_FW_PF_default_routes_egress_false | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_01_RVR_Network_FW_PF_SSH_default_routes_egress_true | Status : FAILED ===
    FAIL
    Test redundant router internals ... === TestName: test_02_RVR_Network_FW_PF_SSH_default_routes_egress_false | Status : FAILED ===
    FAIL
    Test redundant router internals ... === TestName: test_03_RVR_Network_check_router_state | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test nics after destroy ... === TestName: test_01_VPC_nics_after_destroy | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test default routes ... === TestName: test_02_VPC_default_routes | Status : SUCCESS ===
    ok
    Check that the /etc/dhcphosts.txt doesn't contain duplicate IPs ... === TestName: test_router_dhcphosts | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with source NAT ... === TestName: test_01_create_lb_rule_src_nat | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with non source NAT ... === TestName: test_02_create_lb_rule_non_nat | Status : SUCCESS ===
    ok
    Test for assign & removing load balancing rule ... === TestName: test_assign_and_removal_lb | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Single VPC ... === TestName: test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Redundant VPC ... === TestName: test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
    ok
    Test SSVM Internals ... === TestName: test_03_ssvm_internals | Status : SUCCESS ===
    ok
    Test CPVM Internals ... === TestName: test_04_cpvm_internals | Status : SUCCESS ===
    ok
    Test stop SSVM ... === TestName: test_05_stop_ssvm | Status : SUCCESS ===
    ok
    Test stop CPVM ... === TestName: test_06_stop_cpvm | Status : SUCCESS ===
    ok
    Test reboot SSVM ... === TestName: test_07_reboot_ssvm | Status : SUCCESS ===
    ok
    Test reboot CPVM ... === TestName: test_08_reboot_cpvm | Status : SUCCESS ===
    ok
    Test destroy SSVM ... === TestName: test_09_destroy_ssvm | Status : SUCCESS ===
    ok
    Check the password file in the Router VM ... === TestName: test_isolate_network_password_server | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network ... === TestName: test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network and check default routes ... === TestName: test_02_redundant_VPC_default_routes | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network ... === TestName: test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Status : SUCCESS ===
    ok
    Create a redundant VPC with 1 Tier, 1 VM, 1 ACL, 1 PF and test Network GC Nics ... === TestName: test_04_rvpc_network_garbage_collector_nics | Status : FAILED ===
    FAIL
    Create a redundant VPC with 1 Tier, 1 VM, 1 ACL, 1 PF and test Network GC Nics ... === TestName: test_05_rvpc_multi_tiers | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policy on RouterVM ... === TestName: test_02_routervm_iptables_policies | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policies on VPC router ... === TestName: test_01_single_VPC_iptables_policies | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_01_isolate_network_FW_PF_default_routes_egress_true | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_02_isolate_network_FW_PF_default_routes_egress_false | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_01_RVR_Network_FW_PF_SSH_default_routes_egress_true | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_02_RVR_Network_FW_PF_SSH_default_routes_egress_false | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_03_RVR_Network_check_router_state | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test nics after destroy ... === TestName: test_01_VPC_nics_after_destroy | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test default routes ... === TestName: test_02_VPC_default_routes | Status : SUCCESS ===
    ok
    Check that the /etc/dhcphosts.txt doesn't contain duplicate IPs ... === TestName: test_router_dhcphosts | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with source NAT ... === TestName: test_01_create_lb_rule_src_nat | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with non source NAT ... === TestName: test_02_create_lb_rule_non_nat | Status : SUCCESS ===
    ok
    Test for assign & removing load balancing rule ... === TestName: test_assign_and_removal_lb | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Single VPC ... === TestName: test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Redundant VPC ... === TestName: test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
    ok
    Test SSVM Internals ... === TestName: test_03_ssvm_internals | Status : SUCCESS ===
    ok
    Test CPVM Internals ... === TestName: test_04_cpvm_internals | Status : SUCCESS ===
    ok
    Test stop SSVM ... === TestName: test_05_stop_ssvm | Status : SUCCESS ===
    ok
    Test stop CPVM ... === TestName: test_06_stop_cpvm | Status : SUCCESS ===
    ok
    Test reboot SSVM ... === TestName: test_07_reboot_ssvm | Status : SUCCESS ===
    ok
    Test reboot CPVM ... === TestName: test_08_reboot_cpvm | Status : SUCCESS ===
    ok
    Test destroy SSVM ... === TestName: test_09_destroy_ssvm | Status : SUCCESS ===
    ok
    ok
    Create a redundant VPC with two networks with two VMs in each network ... === TestName: test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network and check default routes ... === TestName: test_02_redundant_VPC_default_routes | Status : SUCCESS ===
    ok
    Create a redundant VPC with two networks with two VMs in each network ... === TestName: test_03_create_redundant_VPC_1tier_2VMs_2IPs_2PF_ACL_reboot_routers | Status : SUCCESS ===
    ok
    Create a redundant VPC with 1 Tier, 1 VM, 1 ACL, 1 PF and test Network GC Nics ... === TestName: test_04_rvpc_network_garbage_collector_nics | Status : SUCCESS ===
    ok
    Create a redundant VPC with 1 Tier, 1 VM, 1 ACL, 1 PF and test Network GC Nics ... === TestName: test_05_rvpc_multi_tiers | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policy on RouterVM ... === TestName: test_02_routervm_iptables_policies | Status : SUCCESS ===
    ok
    Test iptables default INPUT/FORWARD policies on VPC router ... === TestName: test_01_single_VPC_iptables_policies | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_01_isolate_network_FW_PF_default_routes_egress_true | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_02_isolate_network_FW_PF_default_routes_egress_false | Status : SUCCESS ===
    ok
    Test redundant router internals ... === TestName: test_01_RVR_Network_FW_PF_SSH_default_routes_egress_true | Status : FAILED ===
    FAIL
    Test redundant router internals ... === TestName: test_02_RVR_Network_FW_PF_SSH_default_routes_egress_false | Status : FAILED ===
    FAIL
    Test redundant router internals ... === TestName: test_03_RVR_Network_check_router_state | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test nics after destroy ... === TestName: test_01_VPC_nics_after_destroy | Status : SUCCESS ===
    ok
    Create a VPC with two networks with one VM in each network and test default routes ... === TestName: test_02_VPC_default_routes | Status : SUCCESS ===
    ok
    Check that the /etc/dhcphosts.txt doesn't contain duplicate IPs ... === TestName: test_router_dhcphosts | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with source NAT ... === TestName: test_01_create_lb_rule_src_nat | Status : SUCCESS ===
    ok
    Test to create Load balancing rule with non source NAT ... === TestName: test_02_create_lb_rule_non_nat | Status : SUCCESS ===
    ok
    Test for assign & removing load balancing rule ... === TestName: test_assign_and_removal_lb | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Single VPC ... === TestName: test_01_internallb_roundrobin_1VPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test create, assign, remove of an Internal LB with roundrobin http traffic to 3 vm's in a Redundant VPC ... === TestName: test_02_internallb_roundrobin_1RVPC_3VM_HTTP_port80 | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test_03_vpc_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
    ok
    Test to verify access to loadbalancer haproxy admin stats page ... === TestName: test_04_rvpc_internallb_haproxy_stats_on_all_interfaces | Status : SUCCESS ===
    ok
    Test SSVM Internals ... === TestName: test_03_ssvm_internals | Status : SUCCESS ===
    ok
    Test CPVM Internals ... === TestName: test_04_cpvm_internals | Status : SUCCESS ===
    ok
    Test stop SSVM ... === TestName: test_05_stop_ssvm | Status : SUCCESS ===
    ok
    Test stop CPVM ... === TestName: test_06_stop_cpvm | Status : SUCCESS ===
    ok
    Test reboot SSVM ... === TestName: test_07_reboot_ssvm | Status : SUCCESS ===
    ok
    Test reboot CPVM ... === TestName: test_08_reboot_cpvm | Status : SUCCESS ===
    ok
    Test destroy SSVM ... === TestName: test_09_destroy_ssvm | Status : SUCCESS ===
    ok
    Test destroy CPVM ... === TestName: test_10_destroy_cpvm | Status : SUCCESS ===
    
    ----------------------------------------------------------------------
    Ran 44 tests in 21771.288s
    
    OK
    ```
    
    
    And:
    
    ```
    nosetests --with-marvin --marvin-config=${marvinCfg} -s -a tags=advanced,required_hardware=false \
    smoke/test_routers.py \
    smoke/test_network_acl.py \
    smoke/test_privategw_acl.py \
    smoke/test_reset_vm_on_reboot.py \
    smoke/test_vm_life_cycle.py \
    smoke/test_vpc_vpn.py \
    smoke/test_service_offerings.py \
    component/test_vpc_offerings.py \
    component/test_vpc_routers.py
    ```
    
    Result:
    
    ```
    Test router internal advanced zone ... === TestName: test_02_router_internal_adv | Status : SUCCESS ===
    ok
    Test restart network ... === TestName: test_03_restart_network_cleanup | Status : SUCCESS ===
    ok
    Test router basic setup ... === TestName: test_05_router_basic | Status : SUCCESS ===
    ok
    Test router advanced setup ... === TestName: test_06_router_advanced | Status : SUCCESS ===
    ok
    Test stop router ... === TestName: test_07_stop_router | Status : SUCCESS ===
    ok
    Test start router ... === TestName: test_08_start_router | Status : SUCCESS ===
    ok
    Test reboot router ... === TestName: test_09_reboot_router | Status : SUCCESS ===
    ok
    Test reset virtual machine on reboot ... === TestName: test_01_reset_vm_on_reboot | Status : SUCCESS ===
    ok
    Test advanced zone virtual router ... === TestName: test_advZoneVirtualRouter | Status : SUCCESS ===
    ok
    Test Deploy Virtual Machine ... === TestName: test_deploy_vm | Status : SUCCESS ===
    ok
    Test Multiple Deploy Virtual Machine ... === TestName: test_deploy_vm_multiple | Status : SUCCESS ===
    ok
    Test Stop Virtual Machine ... === TestName: test_01_stop_vm | Status : SUCCESS ===
    ok
    Test Start Virtual Machine ... === TestName: test_02_start_vm | Status : SUCCESS ===
    ok
    Test Reboot Virtual Machine ... === TestName: test_03_reboot_vm | Status : SUCCESS ===
    ok
    Test destroy Virtual Machine ... === TestName: test_06_destroy_vm | Status : SUCCESS ===
    ok
    Test recover Virtual Machine ... === TestName: test_07_restore_vm | Status : SUCCESS ===
    ok
    Test migrate VM ... === TestName: test_08_migrate_vm | Status : SUCCESS ===
    ok
    Test destroy(expunge) Virtual Machine ... === TestName: test_09_expunge_vm | Status : SUCCESS ===
    ok
    Test to create service offering ... === TestName: test_01_create_service_offering | Status : SUCCESS ===
    ok
    Test to update existing service offering ... === TestName: test_02_edit_service_offering | Status : SUCCESS ===
    ok
    Test to delete service offering ... === TestName: test_03_delete_service_offering | Status : SUCCESS ===
    ok
    Test for delete account ... === TestName: test_delete_account | Status : SUCCESS ===
    ok
    Test for Associate/Disassociate public IP address for admin account ... === TestName: test_public_ip_admin_account | Status : SUCCESS ===
    ok
    Test for Associate/Disassociate public IP address for user account ... === TestName: test_public_ip_user_account | Status : SUCCESS ===
    ok
    Test for release public IP address ... === TestName: test_releaseIP | Status : SUCCESS ===
    ok
    Test create VPC offering ... === TestName: test_01_create_vpc_offering | Status : SUCCESS ===
    ok
    Test VPC offering without load balancing service ... === TestName: test_03_vpc_off_without_lb | Status : SUCCESS ===
    ok
    Test VPC offering without static NAT service ... === TestName: test_04_vpc_off_without_static_nat | Status : SUCCESS ===
    ok
    Test VPC offering without port forwarding service ... === TestName: test_05_vpc_off_without_pf | Status : SUCCESS ===
    ok
    Test VPC offering with invalid services ... === TestName: test_06_vpc_off_invalid_services | Status : SUCCESS ===
    ok
    Test update VPC offering ... === TestName: test_07_update_vpc_off | Status : SUCCESS ===
    ok
    Test list VPC offering ... === TestName: test_08_list_vpc_off | Status : SUCCESS ===
    ok
    test_09_create_redundant_vpc_offering (integration.component.test_vpc_offerings.TestVPCOffering) ... === TestName: test_09_create_redundant_vpc_offering | Status : SUCCESS ===
    ok
    Test start/stop of router after addition of one guest network ... === TestName: test_01_start_stop_router_after_addition_of_one_guest_network | Status : SUCCESS ===
    ok
    Test reboot of router after addition of one guest network ... === TestName: test_02_reboot_router_after_addition_of_one_guest_network | Status : SUCCESS ===
    ok
    Test to change service offering of router after addition of one guest network ... === TestName: test_04_chg_srv_off_router_after_addition_of_one_guest_network | Status : SUCCESS ===
    ok
    Test destroy of router after addition of one guest network ... === TestName: test_05_destroy_router_after_addition_of_one_guest_network | Status : SUCCESS ===
    ok
    Test to stop and start router after creation of VPC ... === TestName: test_01_stop_start_router_after_creating_vpc | Status : SUCCESS ===
    ok
    Test to reboot the router after creating a VPC ... === TestName: test_02_reboot_router_after_creating_vpc | Status : SUCCESS ===
    ok
    Tests to change service offering of the Router after ... === TestName: test_04_change_service_offerring_vpc | Status : SUCCESS ===
    ok
    Test to destroy the router after creating a VPC ... === TestName: test_05_destroy_router_after_creating_vpc | Status : SUCCESS ===
    ok
    
    ----------------------------------------------------------------------
    Ran 41 tests in 7156.981s
    
    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 pull request: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50058474
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/cs/CsDhcp.py ---
    @@ -96,29 +96,8 @@ def configure_server(self):
                 self.conf.search(sline, line)
     
         def delete_leases(self):
    -        changed = []
    -        leases = []
             try:
    -            for line in open(LEASES):
    -                bits = line.strip().split(' ')
    -                to = {"device": bits[0],
    -                      "mac": bits[1],
    -                      "ip": bits[2],
    -                      "host": bits[3:],
    -                      "del": False
    -                      }
    -                changed.append(to)
    -
    -                for v in changed:
    -                    if v['mac'] == to['mac'] or v['ip'] == to['ip'] or v['host'] == to['host']:
    -                        to['del'] = True
    -                leases.append(to)
    -
    -            for o in leases:
    -                if o['del']:
    -                    cmd = "dhcp_release eth%s %s %s" % (o['device'], o['ip'], o['mac'])
    -                    logging.info(cmd)
    -                    CsHelper.execute(cmd)
    +            open(LEASES, 'w').close()
    --- End diff --
    
    This truncates the file, but what about the cmd that was executed before? Is that handled elsewhere? 


---
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: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50259249
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/configure.py ---
    @@ -901,79 +901,123 @@ def processStaticNatRule(self, rule):
     
     
     def main(argv):
    +    # The file we are currently processing, if it is "cmd_line.json" everything will be processed.
    +    process_file = argv[1]
    +
    +    # process_file can be None, if so assume cmd_line.json
    +    if process_file is None:
    +        process_file = "cmd_line.json"
    +
    +    # Track if changes need to be committed to NetFilter
    +    iptables_change = False
    +
    +    # The "GLOBAL" Configuration object
         config = CsConfig()
    +
         logging.basicConfig(filename=config.get_logger(),
                             level=config.get_level(),
                             format=config.get_format())
    +
    +    # Load stored ip adresses from disk to CsConfig()
         config.set_address()
     
         logging.debug("Configuring ip addresses")
    -    # IP configuration
         config.address().compare()
         config.address().process()
     
    -    logging.debug("Configuring vmpassword")
    -    password = CsPassword("vmpassword", config)
    -    password.process()
    +    if process_file in ["cmd_line.json", "guest_network.json"]:
    +        logging.debug("Configuring Guest Network")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "vm_password.json"]:
    +        logging.debug("Configuring vmpassword")
    +        password = CsPassword("vmpassword", config)
    +        password.process()
     
    -    logging.debug("Configuring vmdata")
    -    metadata = CsVmMetadata('vmdata', config)
    -    metadata.process()
    +    if process_file in ["cmd_line.json", "vm_metadata.json"]:
    +        logging.debug("Configuring vmdata")
    +        metadata = CsVmMetadata('vmdata', config)
    +        metadata.process()
     
    -    logging.debug("Configuring networkacl")
    +    # Always run both CsAcl().process() methods
    +    # They fill the base rules in config.fw[]
         acls = CsAcl('networkacl', config)
         acls.process()
     
    -    logging.debug("Configuring firewall rules")
         acls = CsAcl('firewallrules', config)
         acls.process()
     
    -    logging.debug("Configuring PF rules")
         fwd = CsForwardingRules("forwardingrules", config)
         fwd.process()
     
    -    logging.debug("Configuring s2s vpn")
         vpns = CsSite2SiteVpn("site2sitevpn", config)
         vpns.process()
     
    -    logging.debug("Configuring remote access vpn")
    -    #remote access vpn
         rvpn = CsRemoteAccessVpn("remoteaccessvpn", config)
         rvpn.process()
     
    -    logging.debug("Configuring vpn users list")
    -    #remote access vpn users
    -    vpnuser = CsVpnUser("vpnuserlist", config)
    -    vpnuser.process()
    -
    -    logging.debug("Configuring dhcp entry")
    -    dhcp = CsDhcp("dhcpentry", config)
    -    dhcp.process()
    -
    -    logging.debug("Configuring load balancer")
         lb = CsLoadBalancer("loadbalancer", config)
         lb.process()
     
    -    logging.debug("Configuring monitor service")
    -    mon = CsMonitor("monitorservice", config)
    -    mon.process()
    +    if process_file in ["cmd_line.json", "network_acl.json"]:
    +        logging.debug("Configuring networkacl")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "firewall_rules.json"]:
    +        logging.debug("Configuring firewall rules")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "forwarding_rules.json", "staticnat_rules.json"]:
    +        logging.debug("Configuring PF rules")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "site_2_site_vpn.json"]:
    +        logging.debug("Configuring s2s vpn")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "remote_access_vpn.json"]:
    +        logging.debug("Configuring remote access vpn")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "vpn_user_list.json"]:
    +        logging.debug("Configuring vpn users list")
    +        vpnuser = CsVpnUser("vpnuserlist", config)
    +        vpnuser.process()
    --- End diff --
    
    Here, it is done as expected. The config file is checked, then it is logged, then the vpnuser.process gets executed.


---
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: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50251651
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/cs/CsDhcp.py ---
    @@ -96,29 +96,8 @@ def configure_server(self):
                 self.conf.search(sline, line)
     
         def delete_leases(self):
    -        changed = []
    -        leases = []
             try:
    -            for line in open(LEASES):
    -                bits = line.strip().split(' ')
    -                to = {"device": bits[0],
    -                      "mac": bits[1],
    -                      "ip": bits[2],
    -                      "host": bits[3:],
    -                      "del": False
    -                      }
    -                changed.append(to)
    -
    -                for v in changed:
    -                    if v['mac'] == to['mac'] or v['ip'] == to['ip'] or v['host'] == to['host']:
    -                        to['del'] = True
    -                leases.append(to)
    -
    -            for o in leases:
    -                if o['del']:
    -                    cmd = "dhcp_release eth%s %s %s" % (o['device'], o['ip'], o['mac'])
    -                    logging.info(cmd)
    -                    CsHelper.execute(cmd)
    +            open(LEASES, 'w').close()
    --- End diff --
    
    Instead of removing one entry, everything gets deleted and then the ones needed are added again later on.


---
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: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50241366
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/configure.py ---
    @@ -901,79 +901,123 @@ def processStaticNatRule(self, rule):
     
     
     def main(argv):
    +    # The file we are currently processing, if it is "cmd_line.json" everything will be processed.
    +    process_file = argv[1]
    +
    +    # process_file can be None, if so assume cmd_line.json
    +    if process_file is None:
    +        process_file = "cmd_line.json"
    +
    +    # Track if changes need to be committed to NetFilter
    +    iptables_change = False
    +
    +    # The "GLOBAL" Configuration object
         config = CsConfig()
    +
         logging.basicConfig(filename=config.get_logger(),
                             level=config.get_level(),
                             format=config.get_format())
    +
    +    # Load stored ip adresses from disk to CsConfig()
         config.set_address()
     
         logging.debug("Configuring ip addresses")
    -    # IP configuration
         config.address().compare()
         config.address().process()
     
    -    logging.debug("Configuring vmpassword")
    -    password = CsPassword("vmpassword", config)
    -    password.process()
    +    if process_file == "cmd_line.json" or process_file == "guest_network.json":
    --- End diff --
    
    Done!


---
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: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r49976226
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/configure.py ---
    @@ -901,79 +901,123 @@ def processStaticNatRule(self, rule):
     
     
     def main(argv):
    +    # The file we are currently processing, if it is "cmd_line.json" everything will be processed.
    +    process_file = argv[1]
    +
    +    # process_file can be None, if so assume cmd_line.json
    +    if process_file is None:
    +        process_file = "cmd_line.json"
    +
    +    # Track if changes need to be committed to NetFilter
    +    iptables_change = False
    +
    +    # The "GLOBAL" Configuration object
         config = CsConfig()
    +
         logging.basicConfig(filename=config.get_logger(),
                             level=config.get_level(),
                             format=config.get_format())
    +
    +    # Load stored ip adresses from disk to CsConfig()
         config.set_address()
     
         logging.debug("Configuring ip addresses")
    -    # IP configuration
         config.address().compare()
         config.address().process()
     
    -    logging.debug("Configuring vmpassword")
    -    password = CsPassword("vmpassword", config)
    -    password.process()
    +    if process_file == "cmd_line.json" or process_file == "guest_network.json":
    --- End diff --
    
    small hint: for better readability I suggest this syntax instead: 
    ~~~python
    if process_file in ['cmd_line.json', 'guest_network.json']: 
    ~~~


---
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: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50057844
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/configure.py ---
    @@ -901,79 +901,123 @@ def processStaticNatRule(self, rule):
     
     
     def main(argv):
    +    # The file we are currently processing, if it is "cmd_line.json" everything will be processed.
    +    process_file = argv[1]
    +
    +    # process_file can be None, if so assume cmd_line.json
    +    if process_file is None:
    +        process_file = "cmd_line.json"
    +
    +    # Track if changes need to be committed to NetFilter
    +    iptables_change = False
    +
    +    # The "GLOBAL" Configuration object
         config = CsConfig()
    +
         logging.basicConfig(filename=config.get_logger(),
                             level=config.get_level(),
                             format=config.get_format())
    +
    +    # Load stored ip adresses from disk to CsConfig()
         config.set_address()
     
         logging.debug("Configuring ip addresses")
    -    # IP configuration
         config.address().compare()
         config.address().process()
     
    -    logging.debug("Configuring vmpassword")
    -    password = CsPassword("vmpassword", config)
    -    password.process()
    +    if process_file in ["cmd_line.json", "guest_network.json"]:
    +        logging.debug("Configuring Guest Network")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "vm_password.json"]:
    +        logging.debug("Configuring vmpassword")
    +        password = CsPassword("vmpassword", config)
    +        password.process()
     
    -    logging.debug("Configuring vmdata")
    -    metadata = CsVmMetadata('vmdata', config)
    -    metadata.process()
    +    if process_file in ["cmd_line.json", "vm_metadata.json"]:
    +        logging.debug("Configuring vmdata")
    +        metadata = CsVmMetadata('vmdata', config)
    +        metadata.process()
     
    -    logging.debug("Configuring networkacl")
    +    # Always run both CsAcl().process() methods
    +    # They fill the base rules in config.fw[]
         acls = CsAcl('networkacl', config)
         acls.process()
     
    -    logging.debug("Configuring firewall rules")
         acls = CsAcl('firewallrules', config)
         acls.process()
     
    -    logging.debug("Configuring PF rules")
    --- End diff --
    
    Why remove the logging here? Or, why not bring the lower code block here to condtionally process the fwd rules?


---
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: Enhance VR performance

Posted by wilderrodrigues <gi...@git.apache.org>.
Github user wilderrodrigues commented on the pull request:

    https://github.com/apache/cloudstack/pull/1346#issuecomment-172512058
  
    Started the tests:
    
    ```
    [root@cs1 integration]# nosetests --with-marvin --marvin-config=/data/shared/marvin/mct-zone1-kvm1-ISOLATED.cfg -s -a tags=advanced,required_hardware=true smoke/test_vpc_redundant.py smoke/test_routers_iptables_default_policy.py smoke/test_routers_network_ops.py smoke/test_vpc_router_nics.py smoke/test_password_server.py smoke/test_router_dhcphosts.py smoke/test_loadbalance.py smoke/test_internal_lb.py smoke/test_ssvm.py smoke/test_vpc_vpn.py smoke/test_network.py
    
    ==== Marvin Init Started ====
    
    === Marvin Parse Config Successful ===
    
    === Marvin Setting TestData Successful===
    
    ==== Log Folder Path: /tmp//MarvinLogs//Jan_18_2016_12_10_42_E041DB. All logs will be available here ====
    
    === Marvin Init Logging Successful===
    
    ==== Marvin Init Successful ====
    Creating a VPC offering..
    Enabling the VPC offering created
    Creating a VPC network in the account: test-TestRouterRules-test_01_create_redundant_VPC_2tiers_4VMs_4IPs_4PF_ACL-BNYWSG
    ```


---
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: Enhance VR performance

Posted by remibergsma <gi...@git.apache.org>.
Github user remibergsma commented on the pull request:

    https://github.com/apache/cloudstack/pull/1346#issuecomment-172505604
  
    Have started tests on this PR.


---
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: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50259430
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/configure.py ---
    @@ -901,79 +901,123 @@ def processStaticNatRule(self, rule):
     
     
     def main(argv):
    +    # The file we are currently processing, if it is "cmd_line.json" everything will be processed.
    +    process_file = argv[1]
    +
    +    # process_file can be None, if so assume cmd_line.json
    +    if process_file is None:
    +        process_file = "cmd_line.json"
    +
    +    # Track if changes need to be committed to NetFilter
    +    iptables_change = False
    +
    +    # The "GLOBAL" Configuration object
         config = CsConfig()
    +
         logging.basicConfig(filename=config.get_logger(),
                             level=config.get_level(),
                             format=config.get_format())
    +
    +    # Load stored ip adresses from disk to CsConfig()
         config.set_address()
     
         logging.debug("Configuring ip addresses")
    -    # IP configuration
         config.address().compare()
         config.address().process()
     
    -    logging.debug("Configuring vmpassword")
    -    password = CsPassword("vmpassword", config)
    -    password.process()
    +    if process_file in ["cmd_line.json", "guest_network.json"]:
    +        logging.debug("Configuring Guest Network")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "vm_password.json"]:
    +        logging.debug("Configuring vmpassword")
    +        password = CsPassword("vmpassword", config)
    +        password.process()
     
    -    logging.debug("Configuring vmdata")
    -    metadata = CsVmMetadata('vmdata', config)
    -    metadata.process()
    +    if process_file in ["cmd_line.json", "vm_metadata.json"]:
    +        logging.debug("Configuring vmdata")
    +        metadata = CsVmMetadata('vmdata', config)
    +        metadata.process()
     
    -    logging.debug("Configuring networkacl")
    +    # Always run both CsAcl().process() methods
    +    # They fill the base rules in config.fw[]
         acls = CsAcl('networkacl', config)
         acls.process()
     
    -    logging.debug("Configuring firewall rules")
         acls = CsAcl('firewallrules', config)
         acls.process()
     
    -    logging.debug("Configuring PF rules")
         fwd = CsForwardingRules("forwardingrules", config)
         fwd.process()
     
    -    logging.debug("Configuring s2s vpn")
         vpns = CsSite2SiteVpn("site2sitevpn", config)
         vpns.process()
     
    -    logging.debug("Configuring remote access vpn")
    -    #remote access vpn
         rvpn = CsRemoteAccessVpn("remoteaccessvpn", config)
         rvpn.process()
     
    -    logging.debug("Configuring vpn users list")
    -    #remote access vpn users
    -    vpnuser = CsVpnUser("vpnuserlist", config)
    -    vpnuser.process()
    -
    -    logging.debug("Configuring dhcp entry")
    -    dhcp = CsDhcp("dhcpentry", config)
    -    dhcp.process()
    -
    -    logging.debug("Configuring load balancer")
         lb = CsLoadBalancer("loadbalancer", config)
         lb.process()
     
    -    logging.debug("Configuring monitor service")
    -    mon = CsMonitor("monitorservice", config)
    -    mon.process()
    +    if process_file in ["cmd_line.json", "network_acl.json"]:
    +        logging.debug("Configuring networkacl")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "firewall_rules.json"]:
    +        logging.debug("Configuring firewall rules")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "forwarding_rules.json", "staticnat_rules.json"]:
    +        logging.debug("Configuring PF rules")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "site_2_site_vpn.json"]:
    +        logging.debug("Configuring s2s vpn")
    +        iptables_change = True
    --- End diff --
    
    Here, it is misleading. The vpns.process has already been executed, then a log appears (configur*ing*)


---
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: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50251563
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/configure.py ---
    @@ -901,79 +901,123 @@ def processStaticNatRule(self, rule):
     
     
     def main(argv):
    +    # The file we are currently processing, if it is "cmd_line.json" everything will be processed.
    +    process_file = argv[1]
    +
    +    # process_file can be None, if so assume cmd_line.json
    +    if process_file is None:
    +        process_file = "cmd_line.json"
    +
    +    # Track if changes need to be committed to NetFilter
    +    iptables_change = False
    +
    +    # The "GLOBAL" Configuration object
         config = CsConfig()
    +
         logging.basicConfig(filename=config.get_logger(),
                             level=config.get_level(),
                             format=config.get_format())
    +
    +    # Load stored ip adresses from disk to CsConfig()
         config.set_address()
     
         logging.debug("Configuring ip addresses")
    -    # IP configuration
         config.address().compare()
         config.address().process()
     
    -    logging.debug("Configuring vmpassword")
    -    password = CsPassword("vmpassword", config)
    -    password.process()
    +    if process_file in ["cmd_line.json", "guest_network.json"]:
    +        logging.debug("Configuring Guest Network")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "vm_password.json"]:
    +        logging.debug("Configuring vmpassword")
    +        password = CsPassword("vmpassword", config)
    +        password.process()
     
    -    logging.debug("Configuring vmdata")
    -    metadata = CsVmMetadata('vmdata', config)
    -    metadata.process()
    +    if process_file in ["cmd_line.json", "vm_metadata.json"]:
    +        logging.debug("Configuring vmdata")
    +        metadata = CsVmMetadata('vmdata', config)
    +        metadata.process()
     
    -    logging.debug("Configuring networkacl")
    +    # Always run both CsAcl().process() methods
    +    # They fill the base rules in config.fw[]
         acls = CsAcl('networkacl', config)
         acls.process()
     
    -    logging.debug("Configuring firewall rules")
         acls = CsAcl('firewallrules', config)
         acls.process()
     
    -    logging.debug("Configuring PF rules")
    --- End diff --
    
    @pdube 
    
    The logging was not removed, it was just added underneath the IF blocks. All the logging is still there, but will only be executed by the given commands.
    
    Cheers,
    Wilder


---
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: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50251936
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/configure.py ---
    @@ -901,79 +901,123 @@ def processStaticNatRule(self, rule):
     
     
     def main(argv):
    +    # The file we are currently processing, if it is "cmd_line.json" everything will be processed.
    +    process_file = argv[1]
    +
    +    # process_file can be None, if so assume cmd_line.json
    +    if process_file is None:
    +        process_file = "cmd_line.json"
    +
    +    # Track if changes need to be committed to NetFilter
    +    iptables_change = False
    +
    +    # The "GLOBAL" Configuration object
         config = CsConfig()
    +
         logging.basicConfig(filename=config.get_logger(),
                             level=config.get_level(),
                             format=config.get_format())
    +
    +    # Load stored ip adresses from disk to CsConfig()
         config.set_address()
     
         logging.debug("Configuring ip addresses")
    -    # IP configuration
         config.address().compare()
         config.address().process()
     
    -    logging.debug("Configuring vmpassword")
    -    password = CsPassword("vmpassword", config)
    -    password.process()
    +    if process_file in ["cmd_line.json", "guest_network.json"]:
    +        logging.debug("Configuring Guest Network")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "vm_password.json"]:
    +        logging.debug("Configuring vmpassword")
    +        password = CsPassword("vmpassword", config)
    +        password.process()
     
    -    logging.debug("Configuring vmdata")
    -    metadata = CsVmMetadata('vmdata', config)
    -    metadata.process()
    +    if process_file in ["cmd_line.json", "vm_metadata.json"]:
    +        logging.debug("Configuring vmdata")
    +        metadata = CsVmMetadata('vmdata', config)
    +        metadata.process()
     
    -    logging.debug("Configuring networkacl")
    +    # Always run both CsAcl().process() methods
    +    # They fill the base rules in config.fw[]
         acls = CsAcl('networkacl', config)
         acls.process()
     
    -    logging.debug("Configuring firewall rules")
         acls = CsAcl('firewallrules', config)
         acls.process()
     
    -    logging.debug("Configuring PF rules")
         fwd = CsForwardingRules("forwardingrules", config)
         fwd.process()
     
    -    logging.debug("Configuring s2s vpn")
         vpns = CsSite2SiteVpn("site2sitevpn", config)
         vpns.process()
     
    -    logging.debug("Configuring remote access vpn")
    -    #remote access vpn
         rvpn = CsRemoteAccessVpn("remoteaccessvpn", config)
         rvpn.process()
     
    -    logging.debug("Configuring vpn users list")
    -    #remote access vpn users
    -    vpnuser = CsVpnUser("vpnuserlist", config)
    -    vpnuser.process()
    -
    -    logging.debug("Configuring dhcp entry")
    -    dhcp = CsDhcp("dhcpentry", config)
    -    dhcp.process()
    -
    -    logging.debug("Configuring load balancer")
         lb = CsLoadBalancer("loadbalancer", config)
         lb.process()
     
    -    logging.debug("Configuring monitor service")
    -    mon = CsMonitor("monitorservice", config)
    -    mon.process()
    +    if process_file in ["cmd_line.json", "network_acl.json"]:
    +        logging.debug("Configuring networkacl")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "firewall_rules.json"]:
    +        logging.debug("Configuring firewall rules")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "forwarding_rules.json", "staticnat_rules.json"]:
    +        logging.debug("Configuring PF rules")
    --- End diff --
    
    @pdube 
    
    The point behind those changes was to avoid all the commands in the routers being called all the time. For example, add a FW rule to a router, all the other methods, not even related, were being executed. That was causing issues when one wanted to send several commands to the routers. Sometimes ACS was even timing out.
    
    The difference in the code added by @borisroman is that now all the configuration files are checked before executing the methods.
    
    Cheers,
    Wilder


---
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: Enhance VR performance

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

    https://github.com/apache/cloudstack/pull/1346#discussion_r50057840
  
    --- Diff: systemvm/patches/debian/config/opt/cloud/bin/configure.py ---
    @@ -901,79 +901,123 @@ def processStaticNatRule(self, rule):
     
     
     def main(argv):
    +    # The file we are currently processing, if it is "cmd_line.json" everything will be processed.
    +    process_file = argv[1]
    +
    +    # process_file can be None, if so assume cmd_line.json
    +    if process_file is None:
    +        process_file = "cmd_line.json"
    +
    +    # Track if changes need to be committed to NetFilter
    +    iptables_change = False
    +
    +    # The "GLOBAL" Configuration object
         config = CsConfig()
    +
         logging.basicConfig(filename=config.get_logger(),
                             level=config.get_level(),
                             format=config.get_format())
    +
    +    # Load stored ip adresses from disk to CsConfig()
         config.set_address()
     
         logging.debug("Configuring ip addresses")
    -    # IP configuration
         config.address().compare()
         config.address().process()
     
    -    logging.debug("Configuring vmpassword")
    -    password = CsPassword("vmpassword", config)
    -    password.process()
    +    if process_file in ["cmd_line.json", "guest_network.json"]:
    +        logging.debug("Configuring Guest Network")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "vm_password.json"]:
    +        logging.debug("Configuring vmpassword")
    +        password = CsPassword("vmpassword", config)
    +        password.process()
     
    -    logging.debug("Configuring vmdata")
    -    metadata = CsVmMetadata('vmdata', config)
    -    metadata.process()
    +    if process_file in ["cmd_line.json", "vm_metadata.json"]:
    +        logging.debug("Configuring vmdata")
    +        metadata = CsVmMetadata('vmdata', config)
    +        metadata.process()
     
    -    logging.debug("Configuring networkacl")
    +    # Always run both CsAcl().process() methods
    +    # They fill the base rules in config.fw[]
         acls = CsAcl('networkacl', config)
         acls.process()
     
    -    logging.debug("Configuring firewall rules")
         acls = CsAcl('firewallrules', config)
         acls.process()
     
    -    logging.debug("Configuring PF rules")
         fwd = CsForwardingRules("forwardingrules", config)
         fwd.process()
     
    -    logging.debug("Configuring s2s vpn")
         vpns = CsSite2SiteVpn("site2sitevpn", config)
         vpns.process()
     
    -    logging.debug("Configuring remote access vpn")
    -    #remote access vpn
         rvpn = CsRemoteAccessVpn("remoteaccessvpn", config)
         rvpn.process()
     
    -    logging.debug("Configuring vpn users list")
    -    #remote access vpn users
    -    vpnuser = CsVpnUser("vpnuserlist", config)
    -    vpnuser.process()
    -
    -    logging.debug("Configuring dhcp entry")
    -    dhcp = CsDhcp("dhcpentry", config)
    -    dhcp.process()
    -
    -    logging.debug("Configuring load balancer")
         lb = CsLoadBalancer("loadbalancer", config)
         lb.process()
     
    -    logging.debug("Configuring monitor service")
    -    mon = CsMonitor("monitorservice", config)
    -    mon.process()
    +    if process_file in ["cmd_line.json", "network_acl.json"]:
    +        logging.debug("Configuring networkacl")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "firewall_rules.json"]:
    +        logging.debug("Configuring firewall rules")
    +        iptables_change = True
    +
    +    if process_file in ["cmd_line.json", "forwarding_rules.json", "staticnat_rules.json"]:
    +        logging.debug("Configuring PF rules")
    --- End diff --
    
    These were configured above right?


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