http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
 
b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
index a7edfe3..abb4849 100644
--- 
a/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
+++ 
b/server/src/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java
@@ -16,7 +16,6 @@
 // under the License.
 package com.cloud.network.router;
 
-
 import java.net.URI;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -39,17 +38,8 @@ import com.cloud.agent.api.PlugNicCommand;
 import com.cloud.agent.api.SetupGuestNetworkCommand;
 import com.cloud.agent.api.routing.AggregationControlCommand;
 import com.cloud.agent.api.routing.AggregationControlCommand.Action;
-import com.cloud.agent.api.routing.IpAssocVpcCommand;
-import com.cloud.agent.api.routing.NetworkElementCommand;
-import com.cloud.agent.api.routing.SetNetworkACLCommand;
-import com.cloud.agent.api.routing.SetSourceNatCommand;
-import com.cloud.agent.api.routing.SetStaticRouteCommand;
-import com.cloud.agent.api.routing.Site2SiteVpnCfgCommand;
-import com.cloud.agent.api.to.IpAddressTO;
-import com.cloud.agent.api.to.NetworkACLTO;
 import com.cloud.agent.manager.Commands;
 import com.cloud.dc.DataCenter;
-import com.cloud.dc.DataCenterVO;
 import com.cloud.deploy.DeployDestination;
 import com.cloud.exception.AgentUnavailableException;
 import com.cloud.exception.ConcurrentOperationException;
@@ -67,13 +57,9 @@ import com.cloud.network.RemoteAccessVpn;
 import com.cloud.network.Site2SiteVpnConnection;
 import com.cloud.network.VirtualRouterProvider;
 import com.cloud.network.VpcVirtualNetworkApplianceService;
-import com.cloud.network.VpnUser;
 import com.cloud.network.addr.PublicIp;
 import com.cloud.network.dao.IPAddressVO;
 import com.cloud.network.dao.RemoteAccessVpnVO;
-import com.cloud.network.dao.Site2SiteCustomerGatewayVO;
-import com.cloud.network.dao.Site2SiteVpnGatewayVO;
-import com.cloud.network.vpc.NetworkACLItem;
 import com.cloud.network.vpc.NetworkACLItemDao;
 import com.cloud.network.vpc.NetworkACLItemVO;
 import com.cloud.network.vpc.NetworkACLManager;
@@ -91,7 +77,6 @@ import com.cloud.network.vpc.dao.StaticRouteDao;
 import com.cloud.network.vpc.dao.VpcDao;
 import com.cloud.network.vpc.dao.VpcGatewayDao;
 import com.cloud.network.vpn.Site2SiteVpnManager;
-import com.cloud.user.Account;
 import com.cloud.user.UserStatisticsVO;
 import com.cloud.utils.Pair;
 import com.cloud.utils.db.EntityManager;
@@ -109,7 +94,7 @@ import com.cloud.vm.VirtualMachineProfile.Param;
 import com.cloud.vm.dao.VMInstanceDao;
 
 @Component
-@Local(value = {VpcVirtualNetworkApplianceManager.class, 
VpcVirtualNetworkApplianceService.class})
+@Local(value = { VpcVirtualNetworkApplianceManager.class, 
VpcVirtualNetworkApplianceService.class })
 public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplianceManagerImpl implements VpcVirtualNetworkApplianceManager 
{
     private static final Logger s_logger = 
Logger.getLogger(VpcVirtualNetworkApplianceManagerImpl.class);
 
@@ -134,9 +119,6 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
     @Inject
     private EntityManager _entityMgr;
 
-    @Inject
-    private NicProfileHelper nicProfileHelper;
-
     @Override
     public boolean configure(final String name, final Map<String, Object> 
params) throws ConfigurationException {
         _itMgr.registerGuru(VirtualMachine.Type.DomainRouter, this);
@@ -151,7 +133,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
             return false;
         }
 
-        //Add router to the Guest network
+        // Add router to the Guest network
         boolean result = true;
         try {
 
@@ -159,16 +141,15 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
             _routerDao.addRouterToGuestNetwork(router, network);
 
             NicProfile guestNic = _itMgr.addVmToNetwork(router, network, null);
-            //2) setup guest network
+            // 2) setup guest network
             if (guestNic != null) {
                 result = setupVpcGuestNetwork(network, router, true, guestNic);
             } else {
                 s_logger.warn("Failed to add router " + router + " to guest 
network " + network);
                 result = false;
             }
-            //3) apply networking rules
-            if (result && params.get(Param.ReProgramGuestNetworks) != null
-                    && (Boolean) params.get(Param.ReProgramGuestNetworks) == 
true) {
+            // 3) apply networking rules
+            if (result && params.get(Param.ReProgramGuestNetworks) != null && 
(Boolean) params.get(Param.ReProgramGuestNetworks) == true) {
                 sendNetworkRulesToRouter(router.getId(), network.getId());
             }
         } catch (Exception ex) {
@@ -192,7 +173,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
 
     @Override
     public boolean removeVpcRouterFromGuestNetwork(final VirtualRouter router, 
final Network network, final boolean isRedundant) throws 
ConcurrentOperationException,
-    ResourceUnavailableException {
+            ResourceUnavailableException {
         if (network.getTrafficType() != TrafficType.Guest) {
             s_logger.warn("Network " + network + " is not of type " + 
TrafficType.Guest);
             return false;
@@ -200,7 +181,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
 
         boolean result = true;
         try {
-            //Check if router is a part of the Guest network
+            // Check if router is a part of the Guest network
             if (!_networkModel.isVmPartOfNetwork(router.getId(), 
network.getId())) {
                 s_logger.debug("Router " + router + " is not a part of the 
Guest network " + network);
                 return result;
@@ -223,11 +204,11 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
     }
 
     protected boolean setupVpcGuestNetwork(final Network network, final 
VirtualRouter router, final boolean add, final NicProfile guestNic) throws 
ConcurrentOperationException,
-    ResourceUnavailableException {
+            ResourceUnavailableException {
 
         boolean result = true;
         if (router.getState() == State.Running) {
-            SetupGuestNetworkCommand setupCmd = 
createSetupGuestNetworkCommand(router, add, guestNic);
+            SetupGuestNetworkCommand setupCmd = 
_commandSetupHelper.createSetupGuestNetworkCommand(router, add, guestNic);
 
             Commands cmds = new Commands(Command.OnError.Stop);
             cmds.addCommand("setupguestnetwork", setupCmd);
@@ -245,119 +226,8 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
             return true;
         } else {
             s_logger.warn("Unable to setup guest network on virtual router " + 
router + " is not in the right state " + router.getState());
-            throw new ResourceUnavailableException("Unable to setup guest 
network on the backend," + " virtual router " + router + " is not in the right 
state",
-                    DataCenter.class, router.getDataCenterId());
-        }
-    }
-
-    protected SetupGuestNetworkCommand createSetupGuestNetworkCommand(final 
VirtualRouter router, final boolean add, final NicProfile guestNic) {
-        Network network = _networkModel.getNetwork(guestNic.getNetworkId());
-
-        String defaultDns1 = null;
-        String defaultDns2 = null;
-
-        boolean dnsProvided = 
_networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.Dns, 
Provider.VPCVirtualRouter);
-        boolean dhcpProvided = 
_networkModel.isProviderSupportServiceInNetwork(network.getId(), Service.Dhcp, 
Provider.VPCVirtualRouter);
-
-        boolean setupDns = dnsProvided || dhcpProvided;
-
-        if (setupDns) {
-            defaultDns1 = guestNic.getDns1();
-            defaultDns2 = guestNic.getDns2();
-        }
-
-        Nic nic = _nicDao.findByNtwkIdAndInstanceId(network.getId(), 
router.getId());
-        String networkDomain = network.getNetworkDomain();
-        String dhcpRange = getGuestDhcpRange(guestNic, network, 
_entityMgr.findById(DataCenter.class, network.getDataCenterId()));
-
-        NicProfile nicProfile = _networkModel.getNicProfile(router, 
nic.getNetworkId(), null);
-
-        SetupGuestNetworkCommand setupCmd =
-                new SetupGuestNetworkCommand(dhcpRange, networkDomain, false, 
null, defaultDns1, defaultDns2, add, _itMgr.toNicTO(nicProfile, 
router.getHypervisorType()));
-
-        String brd = 
NetUtils.long2Ip(NetUtils.ip2Long(guestNic.getIp4Address()) | 
~NetUtils.ip2Long(guestNic.getNetmask()));
-        setupCmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
getRouterControlIp(router.getId()));
-        setupCmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
getRouterIpInNetwork(network.getId(), router.getId()));
-
-        setupCmd.setAccessDetail(NetworkElementCommand.GUEST_NETWORK_GATEWAY, 
network.getGateway());
-        setupCmd.setAccessDetail(NetworkElementCommand.GUEST_BRIDGE, brd);
-        setupCmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-
-        if (network.getBroadcastDomainType() == BroadcastDomainType.Vlan) {
-            long guestVlanTag = 
Long.parseLong(BroadcastDomainType.Vlan.getValueFrom(network.getBroadcastUri()));
-            setupCmd.setAccessDetail(NetworkElementCommand.GUEST_VLAN_TAG, 
String.valueOf(guestVlanTag));
-        }
-
-        return setupCmd;
-    }
-
-    private void createVpcAssociatePublicIPCommands(final VirtualRouter 
router, final List<? extends PublicIpAddress> ips, final Commands cmds,
-            final Map<String, String> vlanMacAddress) {
-
-        Pair<IpAddressTO, Long> sourceNatIpAdd = null;
-        Boolean addSourceNat = null;
-        // Ensure that in multiple vlans case we first send all ip addresses 
of vlan1, then all ip addresses of vlan2, etc..
-        Map<String, ArrayList<PublicIpAddress>> vlanIpMap = new 
HashMap<String, ArrayList<PublicIpAddress>>();
-        for (final PublicIpAddress ipAddress : ips) {
-            String vlanTag = ipAddress.getVlanTag();
-            ArrayList<PublicIpAddress> ipList = vlanIpMap.get(vlanTag);
-            if (ipList == null) {
-                ipList = new ArrayList<PublicIpAddress>();
-            }
-            //VR doesn't support release for sourceNat IP address; so reset 
the state
-            if (ipAddress.isSourceNat() && ipAddress.getState() == 
IpAddress.State.Releasing) {
-                ipAddress.setState(IpAddress.State.Allocated);
-            }
-            ipList.add(ipAddress);
-            vlanIpMap.put(vlanTag, ipList);
-        }
-
-        for (Map.Entry<String, ArrayList<PublicIpAddress>> vlanAndIp : 
vlanIpMap.entrySet()) {
-            List<PublicIpAddress> ipAddrList = vlanAndIp.getValue();
-
-            // Get network rate - required for IpAssoc
-            Integer networkRate = 
_networkModel.getNetworkRate(ipAddrList.get(0).getNetworkId(), router.getId());
-            Network network = 
_networkModel.getNetwork(ipAddrList.get(0).getNetworkId());
-
-            IpAddressTO[] ipsToSend = new IpAddressTO[ipAddrList.size()];
-            int i = 0;
-
-            for (final PublicIpAddress ipAddr : ipAddrList) {
-                boolean add = ipAddr.getState() == IpAddress.State.Releasing ? 
false : true;
-
-                String macAddress = 
vlanMacAddress.get(BroadcastDomainType.getValue(BroadcastDomainType.fromString(ipAddr.getVlanTag())));
-
-                IpAddressTO ip =
-                        new IpAddressTO(ipAddr.getAccountId(), 
ipAddr.getAddress().addr(), add, false, ipAddr.isSourceNat(), 
ipAddr.getVlanTag(), ipAddr.getGateway(),
-                                ipAddr.getNetmask(), macAddress, networkRate, 
ipAddr.isOneToOneNat());
-
-                ip.setTrafficType(network.getTrafficType());
-                
ip.setNetworkName(_networkModel.getNetworkTag(router.getHypervisorType(), 
network));
-                ipsToSend[i++] = ip;
-                if (ipAddr.isSourceNat()) {
-                    sourceNatIpAdd = new Pair<IpAddressTO, Long>(ip, 
ipAddr.getNetworkId());
-                    addSourceNat = add;
-                }
-            }
-            IpAssocVpcCommand cmd = new IpAssocVpcCommand(ipsToSend);
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
getRouterControlIp(router.getId()));
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
getRouterIpInNetwork(ipAddrList.get(0).getNetworkId(), router.getId()));
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-            DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-            cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-
-            cmds.addCommand("IPAssocVpcCommand", cmd);
-        }
-
-        //set source nat ip
-        if (sourceNatIpAdd != null) {
-            IpAddressTO sourceNatIp = sourceNatIpAdd.first();
-            SetSourceNatCommand cmd = new SetSourceNatCommand(sourceNatIp, 
addSourceNat);
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
getRouterControlIp(router.getId()));
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-            DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-            cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-            cmds.addCommand("SetSourceNatCommand", cmd);
+            throw new ResourceUnavailableException("Unable to setup guest 
network on the backend," + " virtual router " + router + " is not in the right 
state", DataCenter.class,
+                    router.getDataCenterId());
         }
     }
 
@@ -368,12 +238,12 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
         if (vr.getVpcId() != null) {
             String defaultDns1 = null;
             String defaultDns2 = null;
-            //remove public and guest nics as we will plug them later
+            // remove public and guest nics as we will plug them later
             Iterator<NicProfile> it = profile.getNics().iterator();
             while (it.hasNext()) {
                 NicProfile nic = it.next();
                 if (nic.getTrafficType() == TrafficType.Public || 
nic.getTrafficType() == TrafficType.Guest) {
-                    //save dns information
+                    // save dns information
                     if (nic.getTrafficType() == TrafficType.Public) {
                         defaultDns1 = nic.getDns1();
                         defaultDns2 = nic.getDns2();
@@ -383,7 +253,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
                 }
             }
 
-            //add vpc cidr/dns/networkdomain to the boot load args
+            // add vpc cidr/dns/networkdomain to the boot load args
             StringBuilder buf = profile.getBootArgsBuilder();
             Vpc vpc = _entityMgr.findById(Vpc.class, vr.getVpcId());
             buf.append(" vpccidr=" + vpc.getCidr() + " domain=" + 
vpc.getNetworkDomain());
@@ -397,36 +267,6 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
         return super.finalizeVirtualMachineProfile(profile, dest, context);
     }
 
-    private void createNetworkACLsCommands(final List<? extends 
NetworkACLItem> rules, final VirtualRouter router, final Commands cmds, final 
long guestNetworkId, final boolean privateGateway) {
-        List<NetworkACLTO> rulesTO = new ArrayList<NetworkACLTO>();
-        String guestVlan = null;
-        Network guestNtwk = _networkDao.findById(guestNetworkId);
-        URI uri = guestNtwk.getBroadcastUri();
-        if (uri != null) {
-            guestVlan = BroadcastDomainType.getValue(uri);
-        }
-
-        if (rules != null) {
-            for (NetworkACLItem rule : rules) {
-                NetworkACLTO ruleTO = new NetworkACLTO(rule, guestVlan, 
rule.getTrafficType());
-                rulesTO.add(ruleTO);
-            }
-        }
-
-        SetNetworkACLCommand cmd = new SetNetworkACLCommand(rulesTO, 
_nwHelper.getNicTO(router, guestNetworkId, null));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
getRouterControlIp(router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
getRouterIpInNetwork(guestNetworkId, router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.GUEST_VLAN_TAG, guestVlan);
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-        DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-        cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-        if (privateGateway) {
-            cmd.setAccessDetail(NetworkElementCommand.VPC_PRIVATE_GATEWAY, 
String.valueOf(VpcGateway.Type.Private));
-        }
-
-        cmds.addCommand(cmd);
-    }
-
     @Override
     public boolean finalizeCommandsOnStart(final Commands cmds, final 
VirtualMachineProfile profile) {
         DomainRouterVO router = _routerDao.findById(profile.getId());
@@ -436,7 +276,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
             return super.finalizeCommandsOnStart(cmds, profile);
         }
 
-        //1) FORM SSH CHECK COMMAND
+        // 1) FORM SSH CHECK COMMAND
         NicProfile controlNic = getControlNic(profile);
         if (controlNic == null) {
             s_logger.error("Control network doesn't exist for the router " + 
router);
@@ -445,7 +285,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
 
         finalizeSshAndVersionAndNetworkUsageOnStart(cmds, profile, router, 
controlNic);
 
-        //2) FORM PLUG NIC COMMANDS
+        // 2) FORM PLUG NIC COMMANDS
         List<Pair<Nic, Network>> guestNics = new ArrayList<Pair<Nic, 
Network>>();
         List<Pair<Nic, Network>> publicNics = new ArrayList<Pair<Nic, 
Network>>();
         Map<String, String> vlanMacAddress = new HashMap<String, String>();
@@ -466,9 +306,9 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
 
         List<Command> usageCmds = new ArrayList<Command>();
 
-        //3) PREPARE PLUG NIC COMMANDS
+        // 3) PREPARE PLUG NIC COMMANDS
         try {
-            //add VPC router to public networks
+            // add VPC router to public networks
             List<PublicIp> sourceNat = new ArrayList<PublicIp>(1);
             for (Pair<Nic, Network> nicNtwk : publicNics) {
                 Nic publicNic = nicNtwk.first();
@@ -487,44 +327,41 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
                         _routerDao.update(routerVO.getId(), routerVO);
                     }
                 }
-                PlugNicCommand plugNicCmd =
-                        new PlugNicCommand(_nwHelper.getNicTO(router, 
publicNic.getNetworkId(), publicNic.getBroadcastUri().toString()), 
router.getInstanceName(), router.getType());
+                PlugNicCommand plugNicCmd = new 
PlugNicCommand(_nwHelper.getNicTO(router, publicNic.getNetworkId(), 
publicNic.getBroadcastUri().toString()),
+                        router.getInstanceName(), router.getType());
                 cmds.addCommand(plugNicCmd);
                 VpcVO vpc = _vpcDao.findById(router.getVpcId());
-                NetworkUsageCommand netUsageCmd =
-                        new NetworkUsageCommand(router.getPrivateIpAddress(), 
router.getInstanceName(), true, publicNic.getIp4Address(), vpc.getCidr());
+                NetworkUsageCommand netUsageCmd = new 
NetworkUsageCommand(router.getPrivateIpAddress(), router.getInstanceName(), 
true, publicNic.getIp4Address(), vpc.getCidr());
                 usageCmds.add(netUsageCmd);
-                UserStatisticsVO stats =
-                        _userStatsDao.findBy(router.getAccountId(), 
router.getDataCenterId(), publicNtwk.getId(), publicNic.getIp4Address(), 
router.getId(), router.getType()
-                                .toString());
+                UserStatisticsVO stats = 
_userStatsDao.findBy(router.getAccountId(), router.getDataCenterId(), 
publicNtwk.getId(), publicNic.getIp4Address(), router.getId(),
+                        router.getType().toString());
                 if (stats == null) {
-                    stats =
-                            new UserStatisticsVO(router.getAccountId(), 
router.getDataCenterId(), publicNic.getIp4Address(), router.getId(), 
router.getType().toString(),
-                                    publicNtwk.getId());
+                    stats = new UserStatisticsVO(router.getAccountId(), 
router.getDataCenterId(), publicNic.getIp4Address(), router.getId(), 
router.getType().toString(),
+                            publicNtwk.getId());
                     _userStatsDao.persist(stats);
                 }
             }
 
             // create ip assoc for source nat
             if (!sourceNat.isEmpty()) {
-                createVpcAssociatePublicIPCommands(router, sourceNat, cmds, 
vlanMacAddress);
+                _commandSetupHelper.createVpcAssociatePublicIPCommands(router, 
sourceNat, cmds, vlanMacAddress);
             }
 
-            //add VPC router to guest networks
+            // add VPC router to guest networks
             for (Pair<Nic, Network> nicNtwk : guestNics) {
                 Nic guestNic = nicNtwk.first();
-                //plug guest nic
+                // plug guest nic
                 PlugNicCommand plugNicCmd = new 
PlugNicCommand(_nwHelper.getNicTO(router, guestNic.getNetworkId(), null), 
router.getInstanceName(), router.getType());
                 cmds.addCommand(plugNicCmd);
                 if (!_networkModel.isPrivateGateway(guestNic.getNetworkId())) {
-                    //set guest network
+                    // set guest network
                     VirtualMachine vm = _vmDao.findById(router.getId());
                     NicProfile nicProfile = _networkModel.getNicProfile(vm, 
guestNic.getNetworkId(), null);
-                    SetupGuestNetworkCommand setupCmd = 
createSetupGuestNetworkCommand(router, true, nicProfile);
+                    SetupGuestNetworkCommand setupCmd = 
_commandSetupHelper.createSetupGuestNetworkCommand(router, true, nicProfile);
                     cmds.addCommand(setupCmd);
                 } else {
 
-                    //set private network
+                    // set private network
                     PrivateIpVO ipVO = 
_privateIpDao.findByIpAndSourceNetworkId(guestNic.getNetworkId(), 
guestNic.getIp4Address());
                     Network network = 
_networkDao.findById(guestNic.getNetworkId());
                     BroadcastDomainType.getValue(network.getBroadcastUri());
@@ -533,17 +370,17 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
 
                     List<PrivateIpAddress> privateIps = new 
ArrayList<PrivateIpAddress>(1);
                     privateIps.add(ip);
-                    createVpcAssociatePrivateIPCommands(router, privateIps, 
cmds, true);
+                    
_commandSetupHelper.createVpcAssociatePrivateIPCommands(router, privateIps, 
cmds, true);
 
                     Long privateGwAclId = 
_vpcGatewayDao.getNetworkAclIdForPrivateIp(ipVO.getVpcId(), 
ipVO.getNetworkId(), ipVO.getIpAddress());
 
                     if (privateGwAclId != null) {
-                        //set network acl on private gateway
+                        // set network acl on private gateway
                         List<NetworkACLItemVO> networkACLs = 
_networkACLItemDao.listByACL(privateGwAclId);
-                        s_logger.debug("Found " + networkACLs.size() + " 
network ACLs to apply as a part of VPC VR " + router + " start for private 
gateway ip = " +
-                                ipVO.getIpAddress());
+                        s_logger.debug("Found " + networkACLs.size() + " 
network ACLs to apply as a part of VPC VR " + router + " start for private 
gateway ip = "
+                                + ipVO.getIpAddress());
 
-                        createNetworkACLsCommands(networkACLs, router, cmds, 
ipVO.getNetworkId(), true);
+                        
_commandSetupHelper.createNetworkACLsCommands(networkACLs, router, cmds, 
ipVO.getNetworkId(), true);
                     }
                 }
             }
@@ -552,7 +389,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
             return false;
         }
 
-        //4) RE-APPLY ALL STATIC ROUTE RULES
+        // 4) RE-APPLY ALL STATIC ROUTE RULES
         List<? extends StaticRoute> routes = 
_staticRouteDao.listByVpcId(router.getVpcId());
         List<StaticRouteProfile> staticRouteProfiles = new 
ArrayList<StaticRouteProfile>(routes.size());
         Map<Long, VpcGateway> gatewayMap = new HashMap<Long, VpcGateway>();
@@ -567,18 +404,18 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
 
         s_logger.debug("Found " + staticRouteProfiles.size() + " static routes 
to apply as a part of vpc route " + router + " start");
         if (!staticRouteProfiles.isEmpty()) {
-            createStaticRouteCommands(staticRouteProfiles, router, cmds);
+            _commandSetupHelper.createStaticRouteCommands(staticRouteProfiles, 
router, cmds);
         }
 
-        //5) RE-APPLY ALL REMOTE ACCESS VPNs
+        // 5) RE-APPLY ALL REMOTE ACCESS VPNs
         RemoteAccessVpnVO vpn = 
_vpnDao.findByAccountAndVpc(router.getAccountId(), router.getVpcId());
         if (vpn != null) {
-            createApplyVpnCommands(true, vpn, router, cmds);
+            _commandSetupHelper.createApplyVpnCommands(true, vpn, router, 
cmds);
         }
 
-        //6) REPROGRAM GUEST NETWORK
+        // 6) REPROGRAM GUEST NETWORK
         boolean reprogramGuestNtwks = true;
-        if (profile.getParameter(Param.ReProgramGuestNetworks) != null && 
(Boolean)profile.getParameter(Param.ReProgramGuestNetworks) == false) {
+        if (profile.getParameter(Param.ReProgramGuestNetworks) != null && 
(Boolean) profile.getParameter(Param.ReProgramGuestNetworks) == false) {
             reprogramGuestNtwks = false;
         }
 
@@ -593,8 +430,8 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
 
         for (Pair<Nic, Network> nicNtwk : guestNics) {
             Nic guestNic = nicNtwk.first();
-            AggregationControlCommand startCmd = new 
AggregationControlCommand(Action.Start, router.getInstanceName(), 
controlNic.getIp4Address(),
-                    getRouterIpInNetwork(guestNic.getNetworkId(), 
router.getId()));
+            AggregationControlCommand startCmd = new 
AggregationControlCommand(Action.Start, router.getInstanceName(), 
controlNic.getIp4Address(), getRouterIpInNetwork(
+                    guestNic.getNetworkId(), router.getId()));
             cmds.addCommand(startCmd);
             if (reprogramGuestNtwks) {
                 finalizeIpAssocForNetwork(cmds, router, provider, 
guestNic.getNetworkId(), vlanMacAddress);
@@ -602,12 +439,12 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
             }
 
             finalizeUserDataAndDhcpOnStart(cmds, router, provider, 
guestNic.getNetworkId());
-            AggregationControlCommand finishCmd = new 
AggregationControlCommand(Action.Finish, router.getInstanceName(), 
controlNic.getIp4Address(),
-                    getRouterIpInNetwork(guestNic.getNetworkId(), 
router.getId()));
+            AggregationControlCommand finishCmd = new 
AggregationControlCommand(Action.Finish, router.getInstanceName(), 
controlNic.getIp4Address(), getRouterIpInNetwork(
+                    guestNic.getNetworkId(), router.getId()));
             cmds.addCommand(finishCmd);
         }
 
-        //Add network usage commands
+        // Add network usage commands
         cmds.addCommands(usageCmds);
 
         return true;
@@ -622,17 +459,14 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
             if 
(_networkModel.isProviderSupportServiceInNetwork(guestNetworkId, 
Service.NetworkACL, Provider.VPCVirtualRouter)) {
                 List<NetworkACLItemVO> networkACLs = 
_networkACLMgr.listNetworkACLItems(guestNetworkId);
                 if (networkACLs != null && !networkACLs.isEmpty()) {
-                    s_logger.debug("Found " + networkACLs.size() + " network 
ACLs to apply as a part of VPC VR " + router + " start for guest network id=" +
-                            guestNetworkId);
-                    createNetworkACLsCommands(networkACLs, router, cmds, 
guestNetworkId, false);
+                    s_logger.debug("Found " + networkACLs.size() + " network 
ACLs to apply as a part of VPC VR " + router + " start for guest network id=" + 
guestNetworkId);
+                    _commandSetupHelper.createNetworkACLsCommands(networkACLs, 
router, cmds, guestNetworkId, false);
                 }
             }
         }
     }
 
-
-    protected boolean sendNetworkRulesToRouter(final long routerId, final long 
networkId)
-            throws ResourceUnavailableException {
+    protected boolean sendNetworkRulesToRouter(final long routerId, final long 
networkId) throws ResourceUnavailableException {
         DomainRouterVO router = _routerDao.findById(routerId);
         Commands cmds = new Commands(OnError.Continue);
 
@@ -667,9 +501,9 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
             List<PrivateIpAddress> privateIps = new 
ArrayList<PrivateIpAddress>(1);
             privateIps.add(ip);
             Commands cmds = new Commands(Command.OnError.Stop);
-            createVpcAssociatePrivateIPCommands(router, privateIps, cmds, add);
+            _commandSetupHelper.createVpcAssociatePrivateIPCommands(router, 
privateIps, cmds, add);
 
-            try{
+            try {
                 if (_nwHelper.sendCommandsToRouter(router, cmds)) {
                     s_logger.debug("Successfully applied ip association for ip 
" + ip + " in vpc network " + network);
                     return true;
@@ -677,8 +511,8 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
                     s_logger.warn("Failed to associate ip address " + ip + " 
in vpc network " + network);
                     return false;
                 }
-            }catch (Exception ex) {
-                s_logger.warn("Failed to send  " + (add ?"add ":"delete ") + " 
private network " + network + " commands to rotuer ");
+            } catch (Exception ex) {
+                s_logger.warn("Failed to send  " + (add ? "add " : "delete ") 
+ " private network " + network + " commands to rotuer ");
                 return false;
             }
         } else if (router.getState() == State.Stopped || router.getState() == 
State.Stopping) {
@@ -709,7 +543,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
             return false;
         }
 
-        //revoke network acl on the private gateway.
+        // revoke network acl on the private gateway.
         if (!_networkACLMgr.revokeACLItemsForPrivateGw(gateway)) {
             s_logger.debug("Failed to delete network acl items on " + gateway 
+ " from router " + router);
             return false;
@@ -722,7 +556,8 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
     }
 
     @Override
-    protected void finalizeIpAssocForNetwork(final Commands cmds, final 
VirtualRouter router, final Provider provider, final Long guestNetworkId, final 
Map<String, String> vlanMacAddress) {
+    protected void finalizeIpAssocForNetwork(final Commands cmds, final 
VirtualRouter router, final Provider provider, final Long guestNetworkId,
+            final Map<String, String> vlanMacAddress) {
 
         if (router.getVpcId() == null) {
             super.finalizeIpAssocForNetwork(cmds, router, provider, 
guestNetworkId, vlanMacAddress);
@@ -734,24 +569,10 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
         if (publicIps != null && !publicIps.isEmpty()) {
             s_logger.debug("Found " + publicIps.size() + " ip(s) to apply as a 
part of domR " + router + " start.");
             // Re-apply public ip addresses - should come before PF/LB/VPN
-            createVpcAssociatePublicIPCommands(router, publicIps, cmds, 
vlanMacAddress);
+            _commandSetupHelper.createVpcAssociatePublicIPCommands(router, 
publicIps, cmds, vlanMacAddress);
         }
     }
 
-    /**
-     * @param staticRoutes
-     * @param router
-     * @param cmds
-     */
-    private void createStaticRouteCommands(final List<StaticRouteProfile> 
staticRoutes, final DomainRouterVO router, final Commands cmds) {
-        SetStaticRouteCommand cmd = new SetStaticRouteCommand(staticRoutes);
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
getRouterControlIp(router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-        DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-        cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-        cmds.addCommand(cmd);
-    }
-
     @Override
     public boolean startSite2SiteVpn(final Site2SiteVpnConnection conn, final 
VirtualRouter router) throws ResourceUnavailableException {
         if (router.getState() != State.Running) {
@@ -776,92 +597,22 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
 
     protected boolean applySite2SiteVpn(final boolean isCreate, final 
VirtualRouter router, final Site2SiteVpnConnection conn) throws 
ResourceUnavailableException {
         Commands cmds = new Commands(Command.OnError.Continue);
-        createSite2SiteVpnCfgCommands(conn, isCreate, router, cmds);
+        _commandSetupHelper.createSite2SiteVpnCfgCommands(conn, isCreate, 
router, cmds);
         return _nwHelper.sendCommandsToRouter(router, cmds);
     }
 
-    private void createSite2SiteVpnCfgCommands(final Site2SiteVpnConnection 
conn, final boolean isCreate, final VirtualRouter router, final Commands cmds) {
-        Site2SiteCustomerGatewayVO gw = 
_s2sCustomerGatewayDao.findById(conn.getCustomerGatewayId());
-        Site2SiteVpnGatewayVO vpnGw = 
_s2sVpnGatewayDao.findById(conn.getVpnGatewayId());
-        IpAddress ip = _ipAddressDao.findById(vpnGw.getAddrId());
-        Vpc vpc = _vpcDao.findById(ip.getVpcId());
-        String localPublicIp = ip.getAddress().toString();
-        String localGuestCidr = vpc.getCidr();
-        String localPublicGateway = 
_vlanDao.findById(ip.getVlanId()).getVlanGateway();
-        String peerGatewayIp = gw.getGatewayIp();
-        String peerGuestCidrList = gw.getGuestCidrList();
-        String ipsecPsk = gw.getIpsecPsk();
-        String ikePolicy = gw.getIkePolicy();
-        String espPolicy = gw.getEspPolicy();
-        Long ikeLifetime = gw.getIkeLifetime();
-        Long espLifetime = gw.getEspLifetime();
-        Boolean dpd = gw.getDpd();
-
-        Site2SiteVpnCfgCommand cmd =
-                new Site2SiteVpnCfgCommand(isCreate, localPublicIp, 
localPublicGateway, localGuestCidr, peerGatewayIp, peerGuestCidrList, 
ikePolicy, espPolicy, ipsecPsk,
-                        ikeLifetime, espLifetime, dpd, conn.isPassive());
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
getRouterControlIp(router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
getRouterControlIp(router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-        DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-        cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-        cmds.addCommand("applyS2SVpn", cmd);
-    }
-
-    private void createVpcAssociatePrivateIPCommands(final VirtualRouter 
router, final List<PrivateIpAddress> ips, final Commands cmds, final boolean 
add) {
-
-        // Ensure that in multiple vlans case we first send all ip addresses 
of vlan1, then all ip addresses of vlan2, etc..
-        Map<String, ArrayList<PrivateIpAddress>> vlanIpMap = new 
HashMap<String, ArrayList<PrivateIpAddress>>();
-        for (final PrivateIpAddress ipAddress : ips) {
-            String vlanTag = ipAddress.getBroadcastUri();
-            ArrayList<PrivateIpAddress> ipList = vlanIpMap.get(vlanTag);
-            if (ipList == null) {
-                ipList = new ArrayList<PrivateIpAddress>();
-            }
-
-            ipList.add(ipAddress);
-            vlanIpMap.put(vlanTag, ipList);
-        }
-
-        for (Map.Entry<String, ArrayList<PrivateIpAddress>> vlanAndIp : 
vlanIpMap.entrySet()) {
-            List<PrivateIpAddress> ipAddrList = vlanAndIp.getValue();
-            IpAddressTO[] ipsToSend = new IpAddressTO[ipAddrList.size()];
-            int i = 0;
-
-            for (final PrivateIpAddress ipAddr : ipAddrList) {
-                Network network = 
_networkModel.getNetwork(ipAddr.getNetworkId());
-                IpAddressTO ip =
-                        new IpAddressTO(Account.ACCOUNT_ID_SYSTEM, 
ipAddr.getIpAddress(), add, false, ipAddr.getSourceNat(), 
ipAddr.getBroadcastUri(), ipAddr.getGateway(),
-                                ipAddr.getNetmask(), ipAddr.getMacAddress(), 
null, false);
-
-                ip.setTrafficType(network.getTrafficType());
-                
ip.setNetworkName(_networkModel.getNetworkTag(router.getHypervisorType(), 
network));
-                ipsToSend[i++] = ip;
-
-            }
-            IpAssocVpcCommand cmd = new IpAssocVpcCommand(ipsToSend);
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
getRouterControlIp(router.getId()));
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
getRouterIpInNetwork(ipAddrList.get(0).getNetworkId(), router.getId()));
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-            DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-            cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-
-            cmds.addCommand("IPAssocVpcCommand", cmd);
-        }
-    }
-
-    protected Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> 
getNicsToChangeOnRouter(final List<? extends PublicIpAddress> publicIps,
-            final VirtualRouter router) {
-        //1) check which nics need to be plugged/unplugged and plug/unplug them
+    protected Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> 
getNicsToChangeOnRouter(final List<? extends PublicIpAddress> publicIps, final 
VirtualRouter router) {
+        // 1) check which nics need to be plugged/unplugged and plug/unplug 
them
 
         Map<String, PublicIpAddress> nicsToPlug = new HashMap<String, 
PublicIpAddress>();
         Map<String, PublicIpAddress> nicsToUnplug = new HashMap<String, 
PublicIpAddress>();
 
-        //find out nics to unplug
+        // find out nics to unplug
         for (PublicIpAddress ip : publicIps) {
             long publicNtwkId = ip.getNetworkId();
 
-            //if ip is not associated to any network, and there are no 
firewall rules, release it on the backend
+            // if ip is not associated to any network, and there are no 
firewall
+            // rules, release it on the backend
             if (!_vpcMgr.isIpAllocatedToVpc(ip)) {
                 ip.setState(IpAddress.State.Releasing);
             }
@@ -875,18 +626,20 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
             }
         }
 
-        //find out nics to plug
+        // find out nics to plug
         for (PublicIpAddress ip : publicIps) {
             URI broadcastUri = BroadcastDomainType.Vlan.toUri(ip.getVlanTag());
             long publicNtwkId = ip.getNetworkId();
 
-            //if ip is not associated to any network, and there are no 
firewall rules, release it on the backend
+            // if ip is not associated to any network, and there are no 
firewall
+            // rules, release it on the backend
             if (!_vpcMgr.isIpAllocatedToVpc(ip)) {
                 ip.setState(IpAddress.State.Releasing);
             }
 
             if (ip.getState() == IpAddress.State.Allocated || ip.getState() == 
IpAddress.State.Allocating) {
-                //nic has to be plugged only when there are no nics for this 
vlan tag exist on VR
+                // nic has to be plugged only when there are no nics for this
+                // vlan tag exist on VR
                 Nic nic = 
_nicDao.findByNetworkIdInstanceIdAndBroadcastUri(publicNtwkId, router.getId(), 
broadcastUri.toString());
 
                 if (nic == null && nicsToPlug.get(ip.getVlanTag()) == null) {
@@ -905,15 +658,15 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
             }
         }
 
-        Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> 
nicsToChange =
-                new Pair<Map<String, PublicIpAddress>, Map<String, 
PublicIpAddress>>(nicsToPlug, nicsToUnplug);
+        Pair<Map<String, PublicIpAddress>, Map<String, PublicIpAddress>> 
nicsToChange = new Pair<Map<String, PublicIpAddress>, Map<String, 
PublicIpAddress>>(nicsToPlug,
+                nicsToUnplug);
         return nicsToChange;
     }
 
     @Override
     public void finalizeStop(final VirtualMachineProfile profile, final Answer 
answer) {
         super.finalizeStop(profile, answer);
-        //Mark VPN connections as Disconnected
+        // Mark VPN connections as Disconnected
         DomainRouterVO router = _routerDao.findById(profile.getId());
         Long vpcId = router.getVpcId();
         if (vpcId != null) {
@@ -937,45 +690,6 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
     }
 
     @Override
-    public String[] applyVpnUsers(final RemoteAccessVpn vpn, final List<? 
extends VpnUser> users, final VirtualRouter router) throws 
ResourceUnavailableException {
-        Vpc vpc = _vpcDao.findById(vpn.getVpcId());
-
-        if (router.getState() != State.Running) {
-            s_logger.warn("Failed to add/remove Remote Access VPN users: 
router not in running state");
-            throw new ResourceUnavailableException("Failed to add/remove 
Remote Access VPN users: router not in running state: " + router.getState(), 
DataCenter.class,
-                    vpc.getZoneId());
-        }
-
-        Commands cmds = new Commands(Command.OnError.Continue);
-
-        createApplyVpnUsersCommand(users, router, cmds);
-
-        // Currently we receive just one answer from the agent. In the future 
we have to parse individual answers and set
-        // results accordingly
-        boolean agentResult = _nwHelper.sendCommandsToRouter(router, cmds);
-
-        String[] result = new String[users.size()];
-        for (int i = 0; i < result.length; i++) {
-            if (agentResult) {
-                result[i] = null;
-            } else {
-                result[i] = String.valueOf(agentResult);
-            }
-        }
-
-        return result;
-    }
-
-    @Override
-    protected String getVpnCidr(final RemoteAccessVpn vpn) {
-        if (vpn.getVpcId() == null) {
-            return super.getVpnCidr(vpn);
-        }
-        Vpc vpc = _vpcDao.findById(vpn.getVpcId());
-        return vpc.getCidr();
-    }
-
-    @Override
     public boolean startRemoteAccessVpn(final RemoteAccessVpn vpn, final 
VirtualRouter router) throws ResourceUnavailableException {
         if (router.getState() != State.Running) {
             s_logger.warn("Unable to apply remote access VPN configuration, 
virtual router is not in the right state " + router.getState());
@@ -984,7 +698,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
         }
 
         Commands cmds = new Commands(Command.OnError.Stop);
-        createApplyVpnCommands(true, vpn, router, cmds);
+        _commandSetupHelper.createApplyVpnCommands(true, vpn, router, cmds);
 
         try {
             _agentMgr.send(router.getHostId(), cmds);
@@ -994,17 +708,17 @@ public class VpcVirtualNetworkApplianceManagerImpl 
extends VirtualNetworkApplian
         }
         Answer answer = cmds.getAnswer("users");
         if (!answer.getResult()) {
-            s_logger.error("Unable to start vpn: unable add users to vpn in 
zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on 
domR: " +
-                    router.getInstanceName() + " due to " + 
answer.getDetails());
-            throw new ResourceUnavailableException("Unable to start vpn: 
Unable to add users to vpn in zone " + router.getDataCenterId() + " for account 
" +
-                    vpn.getAccountId() + " on domR: " + 
router.getInstanceName() + " due to " + answer.getDetails(), DataCenter.class, 
router.getDataCenterId());
+            s_logger.error("Unable to start vpn: unable add users to vpn in 
zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on 
domR: "
+                    + router.getInstanceName() + " due to " + 
answer.getDetails());
+            throw new ResourceUnavailableException("Unable to start vpn: 
Unable to add users to vpn in zone " + router.getDataCenterId() + " for account 
" + vpn.getAccountId()
+                    + " on domR: " + router.getInstanceName() + " due to " + 
answer.getDetails(), DataCenter.class, router.getDataCenterId());
         }
         answer = cmds.getAnswer("startVpn");
         if (!answer.getResult()) {
-            s_logger.error("Unable to start vpn in zone " + 
router.getDataCenterId() + " for account " + vpn.getAccountId() + " on domR: " 
+ router.getInstanceName() +
-                    " due to " + answer.getDetails());
-            throw new ResourceUnavailableException("Unable to start vpn in 
zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on 
domR: " +
-                    router.getInstanceName() + " due to " + 
answer.getDetails(), DataCenter.class, router.getDataCenterId());
+            s_logger.error("Unable to start vpn in zone " + 
router.getDataCenterId() + " for account " + vpn.getAccountId() + " on domR: " 
+ router.getInstanceName() + " due to "
+                    + answer.getDetails());
+            throw new ResourceUnavailableException("Unable to start vpn in 
zone " + router.getDataCenterId() + " for account " + vpn.getAccountId() + " on 
domR: "
+                    + router.getInstanceName() + " due to " + 
answer.getDetails(), DataCenter.class, router.getDataCenterId());
         }
 
         return true;
@@ -1016,7 +730,7 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
 
         if (router.getState() == State.Running) {
             Commands cmds = new Commands(Command.OnError.Continue);
-            createApplyVpnCommands(false, vpn, router, cmds);
+            _commandSetupHelper.createApplyVpnCommands(false, vpn, router, 
cmds);
             result = result && _nwHelper.sendCommandsToRouter(router, cmds);
         } else if (router.getState() == State.Stopped) {
             s_logger.debug("Router " + router + " is in Stopped state, not 
sending deleteRemoteAccessVpn command to it");
@@ -1025,7 +739,6 @@ public class VpcVirtualNetworkApplianceManagerImpl extends 
VirtualNetworkApplian
             throw new ResourceUnavailableException("Failed to delete remote 
access VPN: domR is not in right state " + router.getState(), DataCenter.class,
                     router.getDataCenterId());
         }
-
         return true;
     }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/DhcpEntryRules.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/DhcpEntryRules.java 
b/server/src/com/cloud/network/rules/DhcpEntryRules.java
index 2bfa4e6..b7a7bd3 100644
--- a/server/src/com/cloud/network/rules/DhcpEntryRules.java
+++ b/server/src/com/cloud/network/rules/DhcpEntryRules.java
@@ -19,20 +19,10 @@ package com.cloud.network.rules;
 
 import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
 
-import com.cloud.agent.api.routing.DhcpEntryCommand;
-import com.cloud.agent.api.routing.NetworkElementCommand;
-import com.cloud.agent.manager.Commands;
-import com.cloud.dc.DataCenterVO;
 import com.cloud.deploy.DeployDestination;
 import com.cloud.exception.ResourceUnavailableException;
 import com.cloud.network.Network;
-import com.cloud.network.Network.Provider;
-import com.cloud.network.Network.Service;
 import com.cloud.network.router.VirtualRouter;
-import com.cloud.offering.NetworkOffering;
-import com.cloud.uservm.UserVm;
-import com.cloud.utils.net.NetUtils;
-import com.cloud.vm.Nic;
 import com.cloud.vm.NicProfile;
 import com.cloud.vm.NicVO;
 import com.cloud.vm.UserVmVO;
@@ -77,58 +67,4 @@ public class DhcpEntryRules extends RuleApplier {
     public UserVmVO getUserVM() {
         return _userVM;
     }
-
-    public DeployDestination getDestination() {
-        return _destination;
-    }
-
-    public void createDhcpEntryCommand(final VirtualRouter router, final 
UserVm vm, final NicVO nic, final Commands cmds) {
-        final DhcpEntryCommand dhcpCommand = new 
DhcpEntryCommand(nic.getMacAddress(), nic.getIp4Address(), vm.getHostName(), 
nic.getIp6Address(),
-                _networkModel.getExecuteInSeqNtwkElmtCmd());
-        final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-        final Nic defaultNic = findGatewayIp(vm.getId());
-        String gatewayIp = defaultNic.getGateway();
-        if (gatewayIp != null && !gatewayIp.equals(nic.getGateway())) {
-            gatewayIp = "0.0.0.0";
-        }
-        dhcpCommand.setDefaultRouter(gatewayIp);
-        dhcpCommand.setIp6Gateway(nic.getIp6Gateway());
-        String ipaddress = null;
-        final NicVO domrDefaultNic = findDefaultDnsIp(vm.getId());
-        if (domrDefaultNic != null) {
-            ipaddress = domrDefaultNic.getIp4Address();
-        }
-        dhcpCommand.setDefaultDns(ipaddress);
-        dhcpCommand.setDuid(NetUtils.getDuidLL(nic.getMacAddress()));
-        dhcpCommand.setDefault(nic.isDefaultNic());
-
-        dhcpCommand.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
_routerControlHelper.getRouterControlIp(router.getId()));
-        dhcpCommand.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-        dhcpCommand.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
_routerControlHelper.getRouterIpInNetwork(nic.getNetworkId(), router.getId()));
-        dhcpCommand.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-
-        cmds.addCommand("dhcp", dhcpCommand);
-    }
-
-    private NicVO findGatewayIp(final long userVmId) {
-        final NicVO defaultNic = _nicDao.findDefaultNicForVM(userVmId);
-        return defaultNic;
-    }
-
-    private NicVO findDefaultDnsIp(final long userVmId) {
-        final NicVO defaultNic = _nicDao.findDefaultNicForVM(userVmId);
-
-        // check if DNS provider is the domR
-        if 
(!_networkModel.isProviderSupportServiceInNetwork(defaultNic.getNetworkId(), 
Service.Dns, Provider.VirtualRouter)) {
-            return null;
-        }
-
-        final NetworkOffering offering = 
_networkOfferingDao.findById(_networkDao.findById(defaultNic.getNetworkId()).getNetworkOfferingId());
-        if (offering.getRedundantRouter()) {
-            return findGatewayIp(userVmId);
-        }
-
-        return null;
-    }
-
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/DhcpSubNetRules.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/DhcpSubNetRules.java 
b/server/src/com/cloud/network/rules/DhcpSubNetRules.java
index e10a92a..37b3857 100644
--- a/server/src/com/cloud/network/rules/DhcpSubNetRules.java
+++ b/server/src/com/cloud/network/rules/DhcpSubNetRules.java
@@ -24,15 +24,8 @@ import org.apache.cloudstack.context.CallContext;
 import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
 import org.apache.log4j.Logger;
 
-import com.cloud.agent.api.routing.CreateIpAliasCommand;
-import com.cloud.agent.api.routing.DnsMasqConfigCommand;
-import com.cloud.agent.api.routing.IpAliasTO;
-import com.cloud.agent.api.routing.NetworkElementCommand;
-import com.cloud.agent.api.to.DhcpTO;
-import com.cloud.agent.manager.Commands;
 import com.cloud.dc.DataCenter;
 import com.cloud.dc.DataCenter.NetworkType;
-import com.cloud.dc.DataCenterVO;
 import com.cloud.dc.Vlan;
 import com.cloud.dc.VlanVO;
 import com.cloud.exception.InsufficientAddressCapacityException;
@@ -165,48 +158,4 @@ public class DhcpSubNetRules extends RuleApplier {
     public String getRouterAliasIp() {
         return _routerAliasIp;
     }
-
-    public void createIpAlias(final VirtualRouter router, final 
List<IpAliasTO> ipAliasTOs, final Long networkid, final Commands cmds) {
-
-        final String routerip = 
_routerControlHelper.getRouterIpInNetwork(networkid, router.getId());
-        final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-        final CreateIpAliasCommand ipaliasCmd = new 
CreateIpAliasCommand(routerip, ipAliasTOs);
-        ipaliasCmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
_routerControlHelper.getRouterControlIp(router.getId()));
-        ipaliasCmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-        ipaliasCmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
routerip);
-        ipaliasCmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-
-        cmds.addCommand("ipalias", ipaliasCmd);
-    }
-
-    public void configDnsMasq(final VirtualRouter router, final Network 
network, final Commands cmds) {
-        final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-        final List<NicIpAliasVO> ipAliasVOList = 
_nicIpAliasDao.listByNetworkIdAndState(network.getId(), 
NicIpAlias.state.active);
-        final List<DhcpTO> ipList = new ArrayList<DhcpTO>();
-
-        final NicVO router_guest_nic = 
_nicDao.findByNtwkIdAndInstanceId(network.getId(), router.getId());
-        final String cidr = 
NetUtils.getCidrFromGatewayAndNetmask(router_guest_nic.getGateway(), 
router_guest_nic.getNetmask());
-        final String[] cidrPair = cidr.split("\\/");
-        final String cidrAddress = cidrPair[0];
-        final long cidrSize = Long.parseLong(cidrPair[1]);
-        final String startIpOfSubnet = 
NetUtils.getIpRangeStartIpFromCidr(cidrAddress, cidrSize);
-
-        ipList.add(new DhcpTO(router_guest_nic.getIp4Address(), 
router_guest_nic.getGateway(), router_guest_nic.getNetmask(), startIpOfSubnet));
-        for (final NicIpAliasVO ipAliasVO : ipAliasVOList) {
-            final DhcpTO DhcpTO = new DhcpTO(ipAliasVO.getIp4Address(), 
ipAliasVO.getGateway(), ipAliasVO.getNetmask(), ipAliasVO.getStartIpOfSubnet());
-            if (s_logger.isTraceEnabled()) {
-                s_logger.trace("configDnsMasq : adding ip {" + 
DhcpTO.getGateway() + ", " + DhcpTO.getNetmask() + ", " + DhcpTO.getRouterIp() 
+ ", " +
-                        DhcpTO.getStartIpOfSubnet() + "}");
-            }
-            ipList.add(DhcpTO);
-            ipAliasVO.setVmId(router.getId());
-        }
-        _dcDao.findById(router.getDataCenterId());
-        final DnsMasqConfigCommand dnsMasqConfigCmd = new 
DnsMasqConfigCommand(ipList);
-        dnsMasqConfigCmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
_routerControlHelper.getRouterControlIp(router.getId()));
-        dnsMasqConfigCmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-        
dnsMasqConfigCmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
_routerControlHelper.getRouterIpInNetwork(network.getId(), router.getId()));
-        
dnsMasqConfigCmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-        cmds.addCommand("dnsMasqConfig", dnsMasqConfigCmd);
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/FirewallRules.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/FirewallRules.java 
b/server/src/com/cloud/network/rules/FirewallRules.java
index 33e3c98..668f403 100644
--- a/server/src/com/cloud/network/rules/FirewallRules.java
+++ b/server/src/com/cloud/network/rules/FirewallRules.java
@@ -22,24 +22,9 @@ import java.util.List;
 
 import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
 
-import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
-import com.cloud.agent.api.routing.NetworkElementCommand;
-import com.cloud.agent.api.routing.SetFirewallRulesCommand;
-import com.cloud.agent.api.routing.SetPortForwardingRulesCommand;
-import com.cloud.agent.api.routing.SetPortForwardingRulesVpcCommand;
-import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
-import com.cloud.agent.api.to.FirewallRuleTO;
-import com.cloud.agent.api.to.LoadBalancerTO;
-import com.cloud.agent.api.to.PortForwardingRuleTO;
-import com.cloud.agent.api.to.StaticNatRuleTO;
-import com.cloud.agent.manager.Commands;
-import com.cloud.configuration.Config;
-import com.cloud.dc.DataCenterVO;
 import com.cloud.exception.ResourceUnavailableException;
-import com.cloud.network.IpAddress;
 import com.cloud.network.Network;
 import com.cloud.network.dao.LoadBalancerVO;
-import com.cloud.network.dao.NetworkVO;
 import com.cloud.network.lb.LoadBalancingRule;
 import com.cloud.network.lb.LoadBalancingRule.LbDestination;
 import com.cloud.network.lb.LoadBalancingRule.LbHealthCheckPolicy;
@@ -48,12 +33,7 @@ import 
com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy;
 import com.cloud.network.router.VirtualRouter;
 import com.cloud.network.rules.FirewallRule.Purpose;
 import com.cloud.network.rules.LoadBalancerContainer.Scheme;
-import com.cloud.offering.NetworkOffering;
-import com.cloud.offerings.NetworkOfferingVO;
 import com.cloud.utils.net.Ip;
-import com.cloud.vm.DomainRouterVO;
-import com.cloud.vm.Nic;
-import com.cloud.vm.NicProfile;
 
 public class FirewallRules extends RuleApplier {
 
@@ -103,150 +83,4 @@ public class FirewallRules extends RuleApplier {
     public Purpose getPurpose() {
         return _purpose;
     }
-
-    public void createApplyLoadBalancingRulesCommands(final 
List<LoadBalancingRule> rules, final VirtualRouter router, final Commands cmds, 
final long guestNetworkId) {
-
-        final LoadBalancerTO[] lbs = new LoadBalancerTO[rules.size()];
-        int i = 0;
-        // We don't support VR to be inline currently
-        final boolean inline = false;
-        for (final LoadBalancingRule rule : rules) {
-            final boolean revoked = 
(rule.getState().equals(FirewallRule.State.Revoke));
-            final String protocol = rule.getProtocol();
-            final String algorithm = rule.getAlgorithm();
-            final String uuid = rule.getUuid();
-
-            final String srcIp = rule.getSourceIp().addr();
-            final int srcPort = rule.getSourcePortStart();
-            final List<LbDestination> destinations = rule.getDestinations();
-            final List<LbStickinessPolicy> stickinessPolicies = 
rule.getStickinessPolicies();
-            final LoadBalancerTO lb = new LoadBalancerTO(uuid, srcIp, srcPort, 
protocol, algorithm, revoked, false, inline, destinations, stickinessPolicies);
-            lbs[i++] = lb;
-        }
-        String routerPublicIp = null;
-
-        if (router instanceof DomainRouterVO) {
-            final DomainRouterVO domr = _routerDao.findById(router.getId());
-            routerPublicIp = domr.getPublicIpAddress();
-        }
-
-        final Network guestNetwork = _networkModel.getNetwork(guestNetworkId);
-        final Nic nic = 
_nicDao.findByNtwkIdAndInstanceId(guestNetwork.getId(), router.getId());
-        final NicProfile nicProfile =
-                new NicProfile(nic, guestNetwork, nic.getBroadcastUri(), 
nic.getIsolationUri(), _networkModel.getNetworkRate(guestNetwork.getId(), 
router.getId()),
-                        
_networkModel.isSecurityGroupSupportedInNetwork(guestNetwork), 
_networkModel.getNetworkTag(router.getHypervisorType(), guestNetwork));
-        final NetworkOffering offering = 
_networkOfferingDao.findById(guestNetwork.getNetworkOfferingId());
-        String maxconn = null;
-        if (offering.getConcurrentConnections() == null) {
-            maxconn = 
_configDao.getValue(Config.NetworkLBHaproxyMaxConn.key());
-        } else {
-            maxconn = offering.getConcurrentConnections().toString();
-        }
-
-        final LoadBalancerConfigCommand cmd =
-                new LoadBalancerConfigCommand(lbs, routerPublicIp, 
_routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()), 
router.getPrivateIpAddress(), _itMgr.toNicTO(
-                        nicProfile, router.getHypervisorType()), 
router.getVpcId(), maxconn, offering.isKeepAliveEnabled());
-
-        cmd.lbStatsVisibility = 
_configDao.getValue(Config.NetworkLBHaproxyStatsVisbility.key());
-        cmd.lbStatsUri = 
_configDao.getValue(Config.NetworkLBHaproxyStatsUri.key());
-        cmd.lbStatsAuth = 
_configDao.getValue(Config.NetworkLBHaproxyStatsAuth.key());
-        cmd.lbStatsPort = 
_configDao.getValue(Config.NetworkLBHaproxyStatsPort.key());
-
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
_routerControlHelper.getRouterControlIp(router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
_routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-        final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-        cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-        cmds.addCommand(cmd);
-
-    }
-
-    public void createApplyPortForwardingRulesCommands(final List<? extends 
PortForwardingRule> rules, final VirtualRouter router, final Commands cmds, 
final long guestNetworkId) {
-        List<PortForwardingRuleTO> rulesTO = new 
ArrayList<PortForwardingRuleTO>();
-        if (rules != null) {
-            for (final PortForwardingRule rule : rules) {
-                final IpAddress sourceIp = 
_networkModel.getIp(rule.getSourceIpAddressId());
-                final PortForwardingRuleTO ruleTO = new 
PortForwardingRuleTO(rule, null, sourceIp.getAddress().addr());
-                rulesTO.add(ruleTO);
-            }
-        }
-
-        SetPortForwardingRulesCommand cmd = null;
-
-        if (router.getVpcId() != null) {
-            cmd = new SetPortForwardingRulesVpcCommand(rulesTO);
-        } else {
-            cmd = new SetPortForwardingRulesCommand(rulesTO);
-        }
-
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
_routerControlHelper.getRouterControlIp(router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
_routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-        final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-        cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-
-        cmds.addCommand(cmd);
-    }
-
-    public void createApplyStaticNatRulesCommands(final List<? extends 
StaticNatRule> rules, final VirtualRouter router, final Commands cmds, final 
long guestNetworkId) {
-        List<StaticNatRuleTO> rulesTO = new ArrayList<StaticNatRuleTO>();
-        if (rules != null) {
-            for (final StaticNatRule rule : rules) {
-                final IpAddress sourceIp = 
_networkModel.getIp(rule.getSourceIpAddressId());
-                final StaticNatRuleTO ruleTO = new StaticNatRuleTO(rule, null, 
sourceIp.getAddress().addr(), rule.getDestIpAddress());
-                rulesTO.add(ruleTO);
-            }
-        }
-
-        final SetStaticNatRulesCommand cmd = new 
SetStaticNatRulesCommand(rulesTO, router.getVpcId());
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
_routerControlHelper.getRouterControlIp(router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
_routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-        final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-        cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-        cmds.addCommand(cmd);
-    }
-
-    public void createApplyFirewallRulesCommands(final List<? extends 
FirewallRule> rules, final VirtualRouter router, final Commands cmds, final 
long guestNetworkId) {
-        List<FirewallRuleTO> rulesTO = new ArrayList<FirewallRuleTO>();
-        String systemRule = null;
-        Boolean defaultEgressPolicy = false;
-        if (rules != null) {
-            if (rules.size() > 0) {
-                if (rules.get(0).getTrafficType() == 
FirewallRule.TrafficType.Egress && rules.get(0).getType() == 
FirewallRule.FirewallRuleType.System) {
-                    systemRule = 
String.valueOf(FirewallRule.FirewallRuleType.System);
-                }
-            }
-            for (final FirewallRule rule : rules) {
-                _rulesDao.loadSourceCidrs((FirewallRuleVO)rule);
-                final FirewallRule.TrafficType traffictype = 
rule.getTrafficType();
-                if (traffictype == FirewallRule.TrafficType.Ingress) {
-                    final IpAddress sourceIp = 
_networkModel.getIp(rule.getSourceIpAddressId());
-                    final FirewallRuleTO ruleTO = new FirewallRuleTO(rule, 
null, sourceIp.getAddress().addr(), Purpose.Firewall, traffictype);
-                    rulesTO.add(ruleTO);
-                } else if (rule.getTrafficType() == 
FirewallRule.TrafficType.Egress) {
-                    final NetworkVO network = 
_networkDao.findById(guestNetworkId);
-                    final NetworkOfferingVO offering = 
_networkOfferingDao.findById(network.getNetworkOfferingId());
-                    defaultEgressPolicy = offering.getEgressDefaultPolicy();
-                    assert (rule.getSourceIpAddressId() == null) : 
"ipAddressId should be null for egress firewall rule. ";
-                    final FirewallRuleTO ruleTO = new FirewallRuleTO(rule, 
null, "", Purpose.Firewall, traffictype, defaultEgressPolicy);
-                    rulesTO.add(ruleTO);
-                }
-            }
-        }
-
-        final SetFirewallRulesCommand cmd = new 
SetFirewallRulesCommand(rulesTO);
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
_routerControlHelper.getRouterControlIp(router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
_routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-        final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-        cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-        if (systemRule != null) {
-            cmd.setAccessDetail(NetworkElementCommand.FIREWALL_EGRESS_DEFAULT, 
systemRule);
-        } else {
-            cmd.setAccessDetail(NetworkElementCommand.FIREWALL_EGRESS_DEFAULT, 
String.valueOf(defaultEgressPolicy));
-        }
-
-        cmds.addCommand(cmd);
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/IpAssociationRules.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/IpAssociationRules.java 
b/server/src/com/cloud/network/rules/IpAssociationRules.java
index 60becd2..90209c7 100644
--- a/server/src/com/cloud/network/rules/IpAssociationRules.java
+++ b/server/src/com/cloud/network/rules/IpAssociationRules.java
@@ -17,29 +17,14 @@
 
 package com.cloud.network.rules;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
 
-import com.cloud.agent.api.routing.IpAssocCommand;
-import com.cloud.agent.api.routing.NetworkElementCommand;
-import com.cloud.agent.api.to.IpAddressTO;
-import com.cloud.agent.manager.Commands;
-import com.cloud.dc.DataCenterVO;
 import com.cloud.exception.ResourceUnavailableException;
-import com.cloud.network.IpAddress;
 import com.cloud.network.Network;
-import com.cloud.network.Networks.TrafficType;
 import com.cloud.network.PublicIpAddress;
-import com.cloud.network.dao.NetworkVO;
 import com.cloud.network.router.VirtualRouter;
-import com.cloud.utils.net.NetUtils;
-import com.cloud.vm.NicVO;
 
 public class IpAssociationRules extends RuleApplier {
 
@@ -60,95 +45,4 @@ public class IpAssociationRules extends RuleApplier {
     public List<? extends PublicIpAddress> getIpAddresses() {
         return _ipAddresses;
     }
-
-    public void createAssociateIPCommands(final VirtualRouter router, final 
List<? extends PublicIpAddress> ips, final Commands cmds, final long vmId) {
-
-        // Ensure that in multiple vlans case we first send all ip addresses 
of vlan1, then all ip addresses of vlan2, etc..
-        final Map<String, ArrayList<PublicIpAddress>> vlanIpMap = new 
HashMap<String, ArrayList<PublicIpAddress>>();
-        for (final PublicIpAddress ipAddress : ips) {
-            final String vlanTag = ipAddress.getVlanTag();
-            ArrayList<PublicIpAddress> ipList = vlanIpMap.get(vlanTag);
-            if (ipList == null) {
-                ipList = new ArrayList<PublicIpAddress>();
-            }
-            //domR doesn't support release for sourceNat IP address; so reset 
the state
-            if (ipAddress.isSourceNat() && ipAddress.getState() == 
IpAddress.State.Releasing) {
-                ipAddress.setState(IpAddress.State.Allocated);
-            }
-            ipList.add(ipAddress);
-            vlanIpMap.put(vlanTag, ipList);
-        }
-
-        final List<NicVO> nics = _nicDao.listByVmId(router.getId());
-        String baseMac = null;
-        for (final NicVO nic : nics) {
-            final NetworkVO nw = _networkDao.findById(nic.getNetworkId());
-            if (nw.getTrafficType() == TrafficType.Public) {
-                baseMac = nic.getMacAddress();
-                break;
-            }
-        }
-
-        for (final Map.Entry<String, ArrayList<PublicIpAddress>> vlanAndIp : 
vlanIpMap.entrySet()) {
-            final List<PublicIpAddress> ipAddrList = vlanAndIp.getValue();
-            // Source nat ip address should always be sent first
-            Collections.sort(ipAddrList, new Comparator<PublicIpAddress>() {
-                @Override
-                public int compare(final PublicIpAddress o1, final 
PublicIpAddress o2) {
-                    final boolean s1 = o1.isSourceNat();
-                    final boolean s2 = o2.isSourceNat();
-                    return (s1 ^ s2) ? ((s1 ^ true) ? 1 : -1) : 0;
-                }
-            });
-
-            // Get network rate - required for IpAssoc
-            final Integer networkRate = 
_networkModel.getNetworkRate(ipAddrList.get(0).getNetworkId(), router.getId());
-            final Network network = 
_networkModel.getNetwork(ipAddrList.get(0).getNetworkId());
-
-            final IpAddressTO[] ipsToSend = new IpAddressTO[ipAddrList.size()];
-            int i = 0;
-            boolean firstIP = true;
-
-            for (final PublicIpAddress ipAddr : ipAddrList) {
-
-                final boolean add = (ipAddr.getState() == 
IpAddress.State.Releasing ? false : true);
-                boolean sourceNat = ipAddr.isSourceNat();
-                /* enable sourceNAT for the first ip of the public interface */
-                if (firstIP) {
-                    sourceNat = true;
-                }
-                final String vlanId = ipAddr.getVlanTag();
-                final String vlanGateway = ipAddr.getGateway();
-                final String vlanNetmask = ipAddr.getNetmask();
-                String vifMacAddress = null;
-                // For non-source nat IP, set the mac to be something based on 
first public nic's MAC
-                // We cannot depends on first ip because we need to deal with 
first ip of other nics
-                if (!ipAddr.isSourceNat() && ipAddr.getVlanId() != 0) {
-                    vifMacAddress = NetUtils.generateMacOnIncrease(baseMac, 
ipAddr.getVlanId());
-                } else {
-                    vifMacAddress = ipAddr.getMacAddress();
-                }
-
-                final IpAddressTO ip =
-                        new IpAddressTO(ipAddr.getAccountId(), 
ipAddr.getAddress().addr(), add, firstIP, sourceNat, vlanId, vlanGateway, 
vlanNetmask, vifMacAddress,
-                                networkRate, ipAddr.isOneToOneNat());
-
-                ip.setTrafficType(network.getTrafficType());
-                
ip.setNetworkName(_networkModel.getNetworkTag(router.getHypervisorType(), 
network));
-                ipsToSend[i++] = ip;
-                /* send the firstIP = true for the first Add, this is to 
create primary on interface*/
-                if (!firstIP || add) {
-                    firstIP = false;
-                }
-            }
-            final IpAssocCommand cmd = new IpAssocCommand(ipsToSend);
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
_routerControlHelper.getRouterControlIp(router.getId()));
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
_routerControlHelper.getRouterIpInNetwork(ipAddrList.get(0).getAssociatedWithNetworkId(),
 router.getId()));
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-            final DataCenterVO dcVo = 
_dcDao.findById(router.getDataCenterId());
-            cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-
-            cmds.addCommand("IPAssocCommand", cmd);
-        }
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/LoadBalancingRules.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/LoadBalancingRules.java 
b/server/src/com/cloud/network/rules/LoadBalancingRules.java
index ff760ab..d6e762f 100644
--- a/server/src/com/cloud/network/rules/LoadBalancingRules.java
+++ b/server/src/com/cloud/network/rules/LoadBalancingRules.java
@@ -21,12 +21,6 @@ import java.util.List;
 
 import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
 
-import com.cloud.agent.api.routing.LoadBalancerConfigCommand;
-import com.cloud.agent.api.routing.NetworkElementCommand;
-import com.cloud.agent.api.to.LoadBalancerTO;
-import com.cloud.agent.manager.Commands;
-import com.cloud.configuration.Config;
-import com.cloud.dc.DataCenterVO;
 import com.cloud.exception.ResourceUnavailableException;
 import com.cloud.network.Network;
 import com.cloud.network.dao.LoadBalancerVO;
@@ -37,11 +31,7 @@ import com.cloud.network.lb.LoadBalancingRule.LbSslCert;
 import com.cloud.network.lb.LoadBalancingRule.LbStickinessPolicy;
 import com.cloud.network.router.VirtualRouter;
 import com.cloud.network.rules.LoadBalancerContainer.Scheme;
-import com.cloud.offering.NetworkOffering;
 import com.cloud.utils.net.Ip;
-import com.cloud.vm.DomainRouterVO;
-import com.cloud.vm.Nic;
-import com.cloud.vm.NicProfile;
 
 public class LoadBalancingRules extends RuleApplier {
 
@@ -79,57 +69,4 @@ public class LoadBalancingRules extends RuleApplier {
     public List<LoadBalancingRule> getRules() {
         return _rules;
     }
-
-    public void createApplyLoadBalancingRulesCommands(final 
List<LoadBalancingRule> rules, final VirtualRouter router, final Commands cmds, 
final long guestNetworkId) {
-        final LoadBalancerTO[] lbs = new LoadBalancerTO[rules.size()];
-        int i = 0;
-        // We don't support VR to be inline currently
-        final boolean inline = false;
-        for (final LoadBalancingRule rule : rules) {
-            final boolean revoked = 
rule.getState().equals(FirewallRule.State.Revoke);
-            final String protocol = rule.getProtocol();
-            final String algorithm = rule.getAlgorithm();
-            final String uuid = rule.getUuid();
-
-            final String srcIp = rule.getSourceIp().addr();
-            final int srcPort = rule.getSourcePortStart();
-            final List<LbDestination> destinations = rule.getDestinations();
-            final List<LbStickinessPolicy> stickinessPolicies = 
rule.getStickinessPolicies();
-            final LoadBalancerTO lb = new LoadBalancerTO(uuid, srcIp, srcPort, 
protocol, algorithm, revoked, false, inline, destinations, stickinessPolicies);
-            lbs[i++] = lb;
-        }
-        String routerPublicIp = null;
-
-        if (router instanceof DomainRouterVO) {
-            final DomainRouterVO domr = _routerDao.findById(router.getId());
-            routerPublicIp = domr.getPublicIpAddress();
-        }
-
-        final Network guestNetwork = _networkModel.getNetwork(guestNetworkId);
-        final Nic nic = 
_nicDao.findByNtwkIdAndInstanceId(guestNetwork.getId(), router.getId());
-        final NicProfile nicProfile = new NicProfile(nic, guestNetwork, 
nic.getBroadcastUri(), nic.getIsolationUri(), 
_networkModel.getNetworkRate(guestNetwork.getId(),
-                router.getId()), 
_networkModel.isSecurityGroupSupportedInNetwork(guestNetwork), 
_networkModel.getNetworkTag(router.getHypervisorType(), guestNetwork));
-        final NetworkOffering offering = 
_networkOfferingDao.findById(guestNetwork.getNetworkOfferingId());
-        String maxconn = null;
-        if (offering.getConcurrentConnections() == null) {
-            maxconn = 
_configDao.getValue(Config.NetworkLBHaproxyMaxConn.key());
-        } else {
-            maxconn = offering.getConcurrentConnections().toString();
-        }
-
-        final LoadBalancerConfigCommand cmd = new 
LoadBalancerConfigCommand(lbs, routerPublicIp, 
_routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()),
-                router.getPrivateIpAddress(), _itMgr.toNicTO(nicProfile, 
router.getHypervisorType()), router.getVpcId(), maxconn, 
offering.isKeepAliveEnabled());
-
-        cmd.lbStatsVisibility = 
_configDao.getValue(Config.NetworkLBHaproxyStatsVisbility.key());
-        cmd.lbStatsUri = 
_configDao.getValue(Config.NetworkLBHaproxyStatsUri.key());
-        cmd.lbStatsAuth = 
_configDao.getValue(Config.NetworkLBHaproxyStatsAuth.key());
-        cmd.lbStatsPort = 
_configDao.getValue(Config.NetworkLBHaproxyStatsPort.key());
-
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
_routerControlHelper.getRouterControlIp(router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
_routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-        final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-        cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-        cmds.addCommand(cmd);
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/NetworkAclsRules.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/NetworkAclsRules.java 
b/server/src/com/cloud/network/rules/NetworkAclsRules.java
index 4c0c71a..20acb9d 100644
--- a/server/src/com/cloud/network/rules/NetworkAclsRules.java
+++ b/server/src/com/cloud/network/rules/NetworkAclsRules.java
@@ -17,23 +17,14 @@
 
 package com.cloud.network.rules;
 
-import java.net.URI;
-import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
 
-import com.cloud.agent.api.routing.NetworkElementCommand;
-import com.cloud.agent.api.routing.SetNetworkACLCommand;
-import com.cloud.agent.api.to.NetworkACLTO;
-import com.cloud.agent.manager.Commands;
-import com.cloud.dc.DataCenterVO;
 import com.cloud.exception.ResourceUnavailableException;
 import com.cloud.network.Network;
-import com.cloud.network.Networks.BroadcastDomainType;
 import com.cloud.network.router.VirtualRouter;
 import com.cloud.network.vpc.NetworkACLItem;
-import com.cloud.network.vpc.VpcGateway;
 
 public class NetworkAclsRules extends RuleApplier {
 
@@ -60,34 +51,4 @@ public class NetworkAclsRules extends RuleApplier {
     public boolean isPrivateGateway() {
         return _isPrivateGateway;
     }
-
-    public void createNetworkACLsCommands(final List<? extends NetworkACLItem> 
rules, final VirtualRouter router, final Commands cmds, final long 
guestNetworkId, final boolean privateGateway) {
-        List<NetworkACLTO> rulesTO = new ArrayList<NetworkACLTO>();
-        String guestVlan = null;
-        Network guestNtwk = _networkDao.findById(guestNetworkId);
-        URI uri = guestNtwk.getBroadcastUri();
-        if (uri != null) {
-            guestVlan = BroadcastDomainType.getValue(uri);
-        }
-
-        if (rules != null) {
-            for (NetworkACLItem rule : rules) {
-                NetworkACLTO ruleTO = new NetworkACLTO(rule, guestVlan, 
rule.getTrafficType());
-                rulesTO.add(ruleTO);
-            }
-        }
-
-        SetNetworkACLCommand cmd = new SetNetworkACLCommand(rulesTO, 
_networkHelper.getNicTO(router, guestNetworkId, null));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
_routerControlHelper.getRouterControlIp(router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
_routerControlHelper.getRouterIpInNetwork(guestNetworkId, router.getId()));
-        cmd.setAccessDetail(NetworkElementCommand.GUEST_VLAN_TAG, guestVlan);
-        cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-        DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-        cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-        if (privateGateway) {
-            cmd.setAccessDetail(NetworkElementCommand.VPC_PRIVATE_GATEWAY, 
String.valueOf(VpcGateway.Type.Private));
-        }
-
-        cmds.addCommand(cmd);
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bc90ce08/server/src/com/cloud/network/rules/PasswordToRouterRules.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/PasswordToRouterRules.java 
b/server/src/com/cloud/network/rules/PasswordToRouterRules.java
index e6a27b7..8395c10 100644
--- a/server/src/com/cloud/network/rules/PasswordToRouterRules.java
+++ b/server/src/com/cloud/network/rules/PasswordToRouterRules.java
@@ -19,14 +19,9 @@ package com.cloud.network.rules;
 
 import org.apache.cloudstack.network.topology.NetworkTopologyVisitor;
 
-import com.cloud.agent.api.routing.NetworkElementCommand;
-import com.cloud.agent.api.routing.SavePasswordCommand;
-import com.cloud.agent.manager.Commands;
-import com.cloud.dc.DataCenterVO;
 import com.cloud.exception.ResourceUnavailableException;
 import com.cloud.network.Network;
 import com.cloud.network.router.VirtualRouter;
-import com.cloud.utils.PasswordGenerator;
 import com.cloud.vm.NicProfile;
 import com.cloud.vm.NicVO;
 import com.cloud.vm.UserVmVO;
@@ -48,7 +43,7 @@ public class PasswordToRouterRules extends RuleApplier {
 
     @Override
     public boolean accept(final NetworkTopologyVisitor visitor, final 
VirtualRouter router) throws ResourceUnavailableException {
-        this._router = router;
+        _router = router;
 
         _userVmDao.loadDetails((UserVmVO)profile.getVirtualMachine());
         // for basic zone, send vm data/password information only to the 
router in the same pod
@@ -57,25 +52,6 @@ public class PasswordToRouterRules extends RuleApplier {
         return visitor.visit(this);
     }
 
-    public void createPasswordCommand(final VirtualRouter router, final 
VirtualMachineProfile profile, final NicVO nic, final Commands cmds) {
-        final String password = 
(String)profile.getParameter(VirtualMachineProfile.Param.VmPassword);
-        final DataCenterVO dcVo = _dcDao.findById(router.getDataCenterId());
-
-        // password should be set only on default network element
-        if (password != null && nic.isDefaultNic()) {
-            final String encodedPassword = PasswordGenerator.rot13(password);
-            final SavePasswordCommand cmd =
-                    new SavePasswordCommand(encodedPassword, 
nic.getIp4Address(), profile.getVirtualMachine().getHostName(), 
_networkModel.getExecuteInSeqNtwkElmtCmd());
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_IP, 
_routerControlHelper.getRouterControlIp(router.getId()));
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_GUEST_IP, 
_routerControlHelper.getRouterIpInNetwork(nic.getNetworkId(), router.getId()));
-            cmd.setAccessDetail(NetworkElementCommand.ROUTER_NAME, 
router.getInstanceName());
-            cmd.setAccessDetail(NetworkElementCommand.ZONE_NETWORK_TYPE, 
dcVo.getNetworkType().toString());
-
-            cmds.addCommand("password", cmd);
-        }
-
-    }
-
     public VirtualMachineProfile getProfile() {
         return profile;
     }

Reply via email to