You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cloudstack.apache.org by DaanHoogland <gi...@git.apache.org> on 2016/01/17 20:07:34 UTC

[GitHub] cloudstack pull request: resolving a conflict due to reformatting

GitHub user DaanHoogland opened a pull request:

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

    resolving a conflict due to reformatting

    

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

    $ git pull https://github.com/DaanHoogland/cloudstack master

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

    https://github.com/apache/cloudstack/pull/1344.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 #1344
    
----
commit 7988f51ac07782ad9b9873c32438fd7cdb24edba
Author: Wilder Rodrigues <wr...@schubergphilis.com>
Date:   2015-12-17T13:20:59Z

    CLOUDSTACK-9154 - Returns the guest iterface that is marked as added
    
       - Force a restart of keepalived if conntrackd is not running or configuration has changed

commit 749ac2e2242d8af9f05977951dd1b4855c1f6f08
Author: Wilder Rodrigues <wr...@schubergphilis.com>
Date:   2015-12-18T09:37:13Z

    CLOUDSTACK-9154 - Adds test to cover nics state after GC

commit b1e421068280fe0acc427baf3e9f07dd2d610803
Author: Wilder Rodrigues <wr...@schubergphilis.com>
Date:   2015-12-18T17:32:29Z

    CLOUDSTACK-9187 - Adds test to cover multiple nics and nic removal

commit c99d6f18c9fccdc44698a30af1b20701a2e85df4
Author: Wilder Rodrigues <wr...@schubergphilis.com>
Date:   2015-12-18T17:36:02Z

    CLOUDSTACK-9187 - Fixes interface allocation to VRRP instances

commit 2aab4c142d47b77e7bbc584927a80b8ba180934e
Author: Wilder Rodrigues <wr...@schubergphilis.com>
Date:   2015-12-18T18:56:06Z

    CLOUDSTACK-9188 -  Reads network GC interval and wait from configDao

commit f5a6dee8dd6b89ef954d39b4ade91f8f898cc026
Author: Wilder Rodrigues <wr...@schubergphilis.com>
Date:   2015-12-18T19:18:24Z

    CLOUDSTACK-9187 - Makes code ready for more something like ethXXXX, if we ever get that far
    
       - Adds log info to NetworkOrchestrator in order to make the work of the Net-Scavenger more visible.

commit 5ef3144fdf65922a3da99357c6f90f3811b231d8
Author: Wilder Rodrigues <wr...@schubergphilis.com>
Date:   2015-12-19T10:21:18Z

    CLOUDSTACK-9154 - Sets the pub interface down when all guest nets are gone
    
       - Refactors the set_backup, set_master and set_fault methods to have better names for the variable
       - Increase the sleep on the test in order to wait for the routers to be ready. It's now 3 times the GC settings

commit ff89587fd119b1cad543d8e96f0c428e41c35840
Author: Remi Bergsma <gi...@remi.nl>
Date:   2016-01-17T18:12:42Z

    Merge pull request #1277 from ekholabs/fix/4.7-rvpc-net-gc-CLOUDSTACK-9154
    
    [4.7] Critical VPCVR issues fixed: CLOUDSTACK-9154; CLOUDSTACK-9187; and CLOUDSTACK-9188This PR applies the same fixes as in the PR #1259, but against branch 4.7.
    
    Please refer to PR #1259 for the tests results and all the comments already made there.
    
    Issues fixed are:
    
    * CLOUDSTACK-9154: rVPC doesn't recover from cleaning up of network garbage collector
    * CLOUDSTACK-9187: rVPC routers in Master/Master due to concurrency problem when writing the keepalivd.conf
    * CLOUDSTACK-9188: NetworkGarbageCollector is not using gc.interval and gc.wait from settings
    
    Those changes have been covered by 2 new tests added to ```smoke/test_vpc_redundant.py```:
    
    * test_04_rvpc_network_garbage_collector_nics
    * test_05_rvpc_multi_tiers
    
    The test ```test_04_rvpc_network_garbage_collector_nics``` depends on the global settings for the network.gc.interval and gc.wait. If one wants the test to run quicker, please change the settings (default is 600 seconds for each) and restart the Management Server before running the tests. I would suggest to set it to 60 seconds.
    
    In addition, the NetworkGarbageCollector was redefining the settings above mentioned and not reading their values through ConfigDao. Due to that, the settings were not being applied properly and the test was waiting to long to check the VPC routers.
    
    * pr/1277:
      CLOUDSTACK-9154 - Sets the pub interface down when all guest nets are gone
      CLOUDSTACK-9187 - Makes code ready for more something like ethXXXX, if we ever get that far
      CLOUDSTACK-9188 -  Reads network GC interval and wait from configDao
      CLOUDSTACK-9187 - Fixes interface allocation to VRRP instances
      CLOUDSTACK-9187 - Adds test to cover multiple nics and nic removal
      CLOUDSTACK-9154 - Adds test to cover nics state after GC
      CLOUDSTACK-9154 - Returns the guest iterface that is marked as added
    
    Signed-off-by: Remi Bergsma <gi...@remi.nl>

commit addb26455ac73f5da3d07b8764980b1e012721c3
Author: Daan Hoogland <da...@onecht.net>
Date:   2016-01-17T19:04:11Z

    Merge release branch 4.7 to master
    
    * 4.7:
      CLOUDSTACK-9154 - Sets the pub interface down when all guest nets are gone
      CLOUDSTACK-9187 - Makes code ready for more something like ethXXXX, if we ever get that far
      CLOUDSTACK-9188 -  Reads network GC interval and wait from configDao
      CLOUDSTACK-9187 - Fixes interface allocation to VRRP instances
      CLOUDSTACK-9187 - Adds test to cover multiple nics and nic removal
      CLOUDSTACK-9154 - Adds test to cover nics state after GC
      CLOUDSTACK-9154 - Returns the guest iterface that is marked as added
    
     Conflicts:
    	engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java

----


---
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: resolving a conflict due to reformatting

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

    https://github.com/apache/cloudstack/pull/1344#issuecomment-172503325
  
    After merging this PR shows much more commits and changed files than before merge.
    
    For the record, this what I saw at the moment of merging:
    
    ![screen shot 2016-01-18 at 12 14 26](https://cloud.githubusercontent.com/assets/1630096/12390311/067d0b2e-bddf-11e5-8f09-651fc92ff090.png)
    
    This is the log of my commands:
    
    ![screen shot 2016-01-18 at 12 14 36](https://cloud.githubusercontent.com/assets/1630096/12390318/0c59f282-bddf-11e5-99bc-e8f473a7c0cf.png)
    
    Everything seems OK. @DaanHoogland can you please validate it went well? Thanks.


---
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: resolving a conflict due to reformatting

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

    https://github.com/apache/cloudstack/pull/1344#issuecomment-172500103
  
    LGTM Run the tests to be sure, all fine.
    
    ```
    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 : 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 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_01_vpc_privategw_acl (integration.smoke.test_privategw_acl.TestPrivateGwACL) ... === TestName: test_01_vpc_privategw_acl | Status : SUCCESS ===
    ok
    test_02_vpc_privategw_static_routes (integration.smoke.test_privategw_acl.TestPrivateGwACL) ... === TestName: test_02_vpc_privategw_static_routes | Status : SUCCESS ===
    ok
    test_03_vpc_privategw_restart_vpc_cleanup (integration.smoke.test_privategw_acl.TestPrivateGwACL) ... === TestName: test_03_vpc_privategw_restart_vpc_cleanup | Status : SUCCESS ===
    ok
    test_04_rvpc_privategw_static_routes (integration.smoke.test_privategw_acl.TestPrivateGwACL) ... === TestName: test_04_rvpc_privategw_static_routes | Status : SUCCESS ===
    ok
    Test for port forwarding on source NAT ... === TestName: test_01_port_fwd_on_src_nat | Status : SUCCESS ===
    ok
    Test for port forwarding on non source NAT ... === TestName: test_02_port_fwd_on_non_src_nat | Status : SUCCESS ===
    ok
    Test for reboot router ... === TestName: test_reboot_router | Status : SUCCESS ===
    ok
    Test for Router rules for network rules on acquired public IP ... === TestName: test_network_rules_acquired_public_ip_1_static_nat_rule | Status : SUCCESS ===
    ok
    Test for Router rules for network rules on acquired public IP ... === TestName: test_network_rules_acquired_public_ip_2_nat_rule | Status : SUCCESS ===
    ok
    Test for Router rules for network rules on acquired public IP ... === TestName: test_network_rules_acquired_public_ip_3_Load_Balancer_Rule | Status : SUCCESS ===
    ok
    
    Ran 44 tests in 27761.483s
    
    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 8829.718s
    
    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: resolving a conflict due to reformatting

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

    https://github.com/apache/cloudstack/pull/1344#issuecomment-172519784
  
    This due to the PR being for a merge commit. You could have just pushed it upstream
    The extra merge does nothing
    the extra file (s?) is only in the conflict resolving. It should be only one and it is also in one of the commits before.


---
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: resolving a conflict due to reformatting

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

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


---
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: resolving a conflict due to reformatting

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

    https://github.com/apache/cloudstack/pull/1344#issuecomment-172368421
  
    Thanks @DaanHoogland 
    
    FYI this was the conflict after fwd-merge:
    
    ```
    rbergsma[~/git/apache/cloudstack](master)$ git diff
    diff --cc engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
    index fa6cd82,5f442b3..0000000
    --- a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
    +++ b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
    @@@ -168,8 -167,8 +168,9 @@@ import com.cloud.user.Account
      import com.cloud.user.ResourceLimitService;
      import com.cloud.user.User;
      import com.cloud.user.dao.AccountDao;
    + import com.cloud.utils.NumbersUtil;
      import com.cloud.utils.Pair;
     +import com.cloud.utils.UuidUtils;
      import com.cloud.utils.component.AdapterBase;
      import com.cloud.utils.component.ManagerBase;
      import com.cloud.utils.concurrency.NamedThreadFactory;
    @@@ -1025,12 -1021,9 +1029,12 @@@ public class NetworkOrchestrator extend
                  _networksDao.update(network.getId(), network);
                  implemented.set(guru, network);
                  return implemented;
    -         } catch (NoTransitionException e) {
    +         } catch (final NoTransitionException e) {
                  s_logger.error(e.getMessage());
                  return null;
     +        } catch (CloudRuntimeException e) {
     +            s_logger.error("Caught exception: " + e.getMessage());
     +            return null;
              } finally {
                  if (implemented.first() == null) {
                      s_logger.debug("Cleaning up because we're unable to implement the network " + network);
    @@@ -1922,35 -1915,33 +1926,65 @@@
                      throw new InvalidParameterValueException("The VLAN tag " + vlanId + " is already being used for dynamic vlan allocation for the guest network in zone "
                              + zone.getName());
                  }
    ++<<<<<<< HEAD
     +            if (! UuidUtils.validateUUID(vlanId)){
     +                String uri = BroadcastDomainType.fromString(vlanId).toString();
     +                // For Isolated networks, don't allow to create network with vlan that already exists in the zone
     +                if (ntwkOff.getGuestType() == GuestType.Isolated) {
     +                    if (_networksDao.countByZoneAndUri(zoneId, uri) > 0) {
     +                        throw new InvalidParameterValueException("Network with vlan " + vlanId + " already exists in zone " + zoneId);
     +                    } else {
     +                        List<DataCenterVnetVO> dcVnets = _datacenterVnetDao.findVnet(zoneId, vlanId.toString());
     +                        //for the network that is created as part of private gateway,
     +                        //the vnet is not coming from the data center vnet table, so the list can be empty
     +                        if (!dcVnets.isEmpty()) {
     +                            DataCenterVnetVO dcVnet = dcVnets.get(0);
     +                            // Fail network creation if specified vlan is dedicated to a different account
     +                            if (dcVnet.getAccountGuestVlanMapId() != null) {
     +                                Long accountGuestVlanMapId = dcVnet.getAccountGuestVlanMapId();
     +                                AccountGuestVlanMapVO map = _accountGuestVlanMapDao.findById(accountGuestVlanMapId);
     +                                if (map.getAccountId() != owner.getAccountId()) {
     +                                    throw new InvalidParameterValueException("Vlan " + vlanId + " is dedicated to a different account");
     +                                }
     +                                // Fail network creation if owner has a dedicated range of vlans but the specified vlan belongs to the system pool
     +                            } else {
     +                                List<AccountGuestVlanMapVO> maps = _accountGuestVlanMapDao.listAccountGuestVlanMapsByAccount(owner.getAccountId());
     +                                if (maps != null && !maps.isEmpty()) {
     +                                    int vnetsAllocatedToAccount = _datacenterVnetDao.countVnetsAllocatedToAccount(zoneId, owner.getAccountId());
     +                                    int vnetsDedicatedToAccount = _datacenterVnetDao.countVnetsDedicatedToAccount(zoneId, owner.getAccountId());
     +                                    if (vnetsAllocatedToAccount < vnetsDedicatedToAccount) {
     +                                        throw new InvalidParameterValueException("Specified vlan " + vlanId + " doesn't belong" + " to the vlan range dedicated to the owner "
     +                                                + owner.getAccountName());
     +                                    }
    ++=======
    +             final String uri = BroadcastDomainType.fromString(vlanId).toString();
    +             // For Isolated networks, don't allow to create network with vlan that already exists in the zone
    +             if (ntwkOff.getGuestType() == GuestType.Isolated) {
    +                 if (_networksDao.countByZoneAndUri(zoneId, uri) > 0) {
    +                     throw new InvalidParameterValueException("Network with vlan " + vlanId + " already exists in zone " + zoneId);
    +                 } else {
    +                     final List<DataCenterVnetVO> dcVnets = _datacenterVnetDao.findVnet(zoneId, vlanId.toString());
    +                     //for the network that is created as part of private gateway,
    +                     //the vnet is not coming from the data center vnet table, so the list can be empty
    +                     if (!dcVnets.isEmpty()) {
    +                         final DataCenterVnetVO dcVnet = dcVnets.get(0);
    +                         // Fail network creation if specified vlan is dedicated to a different account
    +                         if (dcVnet.getAccountGuestVlanMapId() != null) {
    +                             final Long accountGuestVlanMapId = dcVnet.getAccountGuestVlanMapId();
    +                             final AccountGuestVlanMapVO map = _accountGuestVlanMapDao.findById(accountGuestVlanMapId);
    +                             if (map.getAccountId() != owner.getAccountId()) {
    +                                 throw new InvalidParameterValueException("Vlan " + vlanId + " is dedicated to a different account");
    +                             }
    +                             // Fail network creation if owner has a dedicated range of vlans but the specified vlan belongs to the system pool
    +                         } else {
    +                             final List<AccountGuestVlanMapVO> maps = _accountGuestVlanMapDao.listAccountGuestVlanMapsByAccount(owner.getAccountId());
    +                             if (maps != null && !maps.isEmpty()) {
    +                                 final int vnetsAllocatedToAccount = _datacenterVnetDao.countVnetsAllocatedToAccount(zoneId, owner.getAccountId());
    +                                 final int vnetsDedicatedToAccount = _datacenterVnetDao.countVnetsDedicatedToAccount(zoneId, owner.getAccountId());
    +                                 if (vnetsAllocatedToAccount < vnetsDedicatedToAccount) {
    +                                     throw new InvalidParameterValueException("Specified vlan " + vlanId + " doesn't belong" + " to the vlan range dedicated to the owner "
    +                                             + owner.getAccountName());
    ++>>>>>>> 4.7
                                      }
                                  }
                              }
    @@@ -2051,14 -2042,7 +2085,18 @@@
      
                      if (vlanIdFinal != null) {
                          if (isolatedPvlan == null) {
    ++<<<<<<< HEAD
     +                        URI uri = null;
     +                        if (UuidUtils.validateUUID(vlanIdFinal)){
     +                            //Logical router's UUID provided as VLAN_ID
     +                            userNetwork.setVlanIdAsUUID(vlanIdFinal); //Set transient field
     +                        }
     +                        else {
     +                            uri = BroadcastDomainType.fromString(vlanIdFinal);
     +                        }
    ++=======
    +                         final URI uri = BroadcastDomainType.fromString(vlanIdFinal);
    ++>>>>>>> 4.7
                              userNetwork.setBroadcastUri(uri);
                              if (!vlanIdFinal.equalsIgnoreCase(Vlan.UNTAGGED)) {
                                  userNetwork.setBroadcastDomainType(BroadcastDomainType.Vlan);
    rbergsma[~/git/apache/cloudstack](master)$ 
    ```
    
    I'll run a test suite 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: resolving a conflict due to reformatting

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

    https://github.com/apache/cloudstack/pull/1344#issuecomment-172453755
  
    for what it's worth: 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.
---