http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java index 5b7d9d4,81721ea..1a33538 --- a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java @@@ -17,18 -17,17 +17,19 @@@ package com.cloud.network.vpn; import java.util.ArrayList; -import java.util.Enumeration; ++import java.util.Iterator; import java.util.List; import java.util.Map; import javax.ejb.Local; +import javax.inject.Inject; import javax.naming.ConfigurationException; ++import org.apache.cloudstack.api.command.user.vpn.ListRemoteAccessVpnsCmd; import org.apache.cloudstack.api.command.user.vpn.ListVpnUsersCmd; import org.apache.log4j.Logger; +import org.springframework.stereotype.Component; --import org.apache.cloudstack.api.command.user.vpn.ListRemoteAccessVpnsCmd; import com.cloud.configuration.Config; import com.cloud.configuration.dao.ConfigurationDao; import com.cloud.domain.DomainVO; @@@ -70,7 -70,9 +71,6 @@@ import com.cloud.utils.NumbersUtil import com.cloud.utils.Pair; import com.cloud.utils.PasswordGenerator; import com.cloud.utils.Ternary; - -import com.cloud.utils.component.Adapters; -import com.cloud.utils.component.ComponentLocator; -import com.cloud.utils.component.Inject; import com.cloud.utils.component.Manager; import com.cloud.utils.db.DB; import com.cloud.utils.db.Filter; @@@ -86,7 -87,7 +86,7 @@@ import com.cloud.utils.net.NetUtils public class RemoteAccessVpnManagerImpl implements RemoteAccessVpnService, Manager { private final static Logger s_logger = Logger.getLogger(RemoteAccessVpnManagerImpl.class); String _name; -- ++ @Inject AccountDao _accountDao; @Inject VpnUserDao _vpnUsersDao; @Inject RemoteAccessVpnDao _remoteAccessVpnDao; @@@ -99,8 -100,10 +99,10 @@@ @Inject FirewallRulesDao _rulesDao; @Inject FirewallManager _firewallMgr; @Inject UsageEventDao _usageEventDao; - @Inject(adapter = RemoteAccessVPNServiceProvider.class) - Adapters<RemoteAccessVPNServiceProvider> _vpnServiceProviders; + @Inject ConfigurationDao _configDao; - ++ @Inject List<RemoteAccessVPNServiceProvider> _vpnServiceProviders; ++ + - int _userLimit; int _pskLength; String _clientIpRange; @@@ -117,18 -120,18 +119,18 @@@ if (ipAddr == null) { throw new InvalidParameterValueException("Unable to create remote access vpn, invalid public IP address id" + publicIpId); } -- ++ _accountMgr.checkAccess(caller, null, true, ipAddr); if (!ipAddr.readyToUse()) { throw new InvalidParameterValueException("The Ip address is not ready to be used yet: " + ipAddr.getAddress()); } -- ++ IPAddressVO ipAddress = _ipAddressDao.findById(publicIpId); _networkMgr.checkIpForService(ipAddress, Service.Vpn, null); RemoteAccessVpnVO vpnVO = _remoteAccessVpnDao.findByPublicIpAddress(publicIpId); -- ++ if (vpnVO != null) { //if vpn is in Added state, return it to the api if (vpnVO.getState() == RemoteAccessVpn.State.Added) { @@@ -146,7 -149,7 +148,7 @@@ } throw new InvalidParameterValueException("A Remote Access VPN already exists for this account"); } -- ++ //Verify that vpn service is enabled for the network Network network = _networkMgr.getNetwork(networkId); if (!_networkMgr.areServicesSupportedInNetwork(network.getId(), Service.Vpn)) { @@@ -221,19 -224,18 +223,18 @@@ s_logger.debug("vpn id=" + ipId + " does not exists "); return; } -- ++ _accountMgr.checkAccess(caller, null, true, vpn); -- ++ Network network = _networkMgr.getNetwork(vpn.getNetworkId()); -- ++ vpn.setState(RemoteAccessVpn.State.Removed); _remoteAccessVpnDao.update(vpn.getServerAddressId(), vpn); -- -- - List<? extends RemoteAccessVPNServiceProvider> elements = _networkMgr.getRemoteAccessVpnElements(); ++ ++ boolean success = false; try { - for (RemoteAccessVPNServiceProvider element : elements) { + for (RemoteAccessVPNServiceProvider element : _vpnServiceProviders) { if (element.stopVpn(network, vpn)) { success = true; break; @@@ -244,32 -246,32 +245,32 @@@ //Cleanup corresponding ports List<? extends FirewallRule> vpnFwRules = _rulesDao.listByIpAndPurpose(ipId, Purpose.Vpn); Transaction txn = Transaction.currentTxn(); -- ++ boolean applyFirewall = false; List<FirewallRuleVO> fwRules = new ArrayList<FirewallRuleVO>(); //if related firewall rule is created for the first vpn port, it would be created for the 2 other ports as well, so need to cleanup the backend if (_rulesDao.findByRelatedId(vpnFwRules.get(0).getId()) != null) { applyFirewall = true; } -- ++ if (applyFirewall) { txn.start(); -- ++ for (FirewallRule vpnFwRule : vpnFwRules) { //don't apply on the backend yet; send all 3 rules in a banch _firewallMgr.revokeRelatedFirewallRule(vpnFwRule.getId(), false); fwRules.add(_rulesDao.findByRelatedId(vpnFwRule.getId())); } -- ++ s_logger.debug("Marked " + fwRules.size() + " firewall rules as Revoked as a part of disable remote access vpn"); -- ++ txn.commit(); -- ++ //now apply vpn rules on the backend s_logger.debug("Reapplying firewall rules for ip id=" + ipId + " as a part of disable remote access vpn"); success = _firewallMgr.applyFirewallRules(ipId, caller); } -- ++ if (success) { try { txn.start(); @@@ -277,11 -279,11 +278,11 @@@ // Stop billing of VPN users when VPN is removed. VPN_User_ADD events will be generated when VPN is created again List<VpnUserVO> vpnUsers = _vpnUsersDao.listByAccount(vpn.getAccountId()); for(VpnUserVO user : vpnUsers){ -- // VPN_USER_REMOVE event is already generated for users in Revoke state -- if(user.getState() != VpnUser.State.Revoke){ -- UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VPN_USER_REMOVE, user.getAccountId(), 0, user.getId(), user.getUsername()); -- _usageEventDao.persist(usageEvent); -- } ++ // VPN_USER_REMOVE event is already generated for users in Revoke state ++ if(user.getState() != VpnUser.State.Revoke){ ++ UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VPN_USER_REMOVE, user.getAccountId(), 0, user.getId(), user.getUsername()); ++ _usageEventDao.persist(usageEvent); ++ } } if (vpnFwRules != null) { for (FirewallRule vpnFwRule : vpnFwRules) { @@@ -318,18 -320,18 +319,18 @@@ throw new InvalidParameterValueException("Unable to add vpn user: Another operation active"); } _accountMgr.checkAccess(caller, null, true, owner); -- ++ //don't allow duplicated user names for the same account VpnUserVO vpnUser = _vpnUsersDao.findByAccountAndUsername(owner.getId(), username); if (vpnUser != null) { -- throw new InvalidParameterValueException("VPN User with name " + username + " is already added for account " + owner); ++ throw new InvalidParameterValueException("VPN User with name " + username + " is already added for account " + owner); } long userCount = _vpnUsersDao.getVpnUserCount(owner.getId()); if (userCount >= _userLimit) { throw new AccountLimitException("Cannot add more than " + _userLimit + " remote access vpn users"); } -- ++ VpnUser user = _vpnUsersDao.persist(new VpnUserVO(vpnOwnerId, owner.getDomainId(), username, password)); UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VPN_USER_ADD, user.getAccountId(), 0, user.getId(), user.getUsername()); _usageEventDao.persist(usageEvent); @@@ -372,8 -374,8 +373,8 @@@ } _accountMgr.checkAccess(caller, null, true, vpn); -- -- ++ ++ Network network = _networkMgr.getNetwork(vpn.getNetworkId()); @@@ -384,16 -385,16 +384,16 @@@ if (openFirewall) { firewallOpened = _firewallMgr.applyFirewallRules(vpn.getServerAddressId(), caller); } -- ++ if (firewallOpened) { - for (RemoteAccessVPNServiceProvider element : elements) { + for (RemoteAccessVPNServiceProvider element : _vpnServiceProviders) { if (element.startVpn(network, vpn)) { started = true; break; } } } -- ++ return vpn; } finally { if (started) { @@@ -401,14 -402,14 +401,14 @@@ txn.start(); vpn.setState(RemoteAccessVpn.State.Running); _remoteAccessVpnDao.update(vpn.getServerAddressId(), vpn); -- ++ // Start billing of existing VPN users in ADD and Active state List<VpnUserVO> vpnUsers = _vpnUsersDao.listByAccount(vpn.getAccountId()); for(VpnUserVO user : vpnUsers){ -- if(user.getState() != VpnUser.State.Revoke){ -- UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VPN_USER_ADD, user.getAccountId(), 0, user.getId(), user.getUsername()); -- _usageEventDao.persist(usageEvent); -- } ++ if(user.getState() != VpnUser.State.Revoke){ ++ UsageEventVO usageEvent = new UsageEventVO(EventTypes.EVENT_VPN_USER_ADD, user.getAccountId(), 0, user.getId(), user.getUsername()); ++ _usageEventDao.persist(usageEvent); ++ } } txn.commit(); } @@@ -426,7 -427,7 +426,7 @@@ List<RemoteAccessVpnVO> vpns = _remoteAccessVpnDao.findByAccount(vpnOwnerId); List<VpnUserVO> users = _vpnUsersDao.listByAccount(vpnOwnerId); -- ++ //If user is in Active state, we still have to resend them therefore their status has to be Add for (VpnUserVO user : users) { if (user.getState() == State.Active) { @@@ -434,9 -435,7 +434,7 @@@ _vpnUsersDao.update(user.getId(), user); } } -- - List<? extends RemoteAccessVPNServiceProvider> elements = _networkMgr.getRemoteAccessVpnElements(); + boolean success = true; boolean[] finals = new boolean[users.size()]; @@@ -462,7 -461,7 +460,7 @@@ } catch (ResourceUnavailableException e) { s_logger.warn("Unable to apply vpn users ", e); success= false; -- ++ for (int i = 0; i < finals.length; i++) { finals[i] = false; } @@@ -480,7 -479,7 +478,7 @@@ _vpnUsersDao.remove(user.getId()); } } else { -- if (user.getState() == State.Add && (user.getUsername()).equals(userName)) { ++ if (user.getState() == State.Add && (user.getUsername()).equals(userName)) { Transaction txn = Transaction.currentTxn(); txn.start(); _vpnUsersDao.remove(user.getId()); @@@ -511,14 -510,14 +509,14 @@@ SearchBuilder<VpnUserVO> sb = _vpnUsersDao.createSearchBuilder(); _accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); -- ++ sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ); sb.and("username", sb.entity().getUsername(), SearchCriteria.Op.EQ); sb.and("state", sb.entity().getState(), SearchCriteria.Op.EQ); SearchCriteria<VpnUserVO> sc = sb.create(); _accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); -- ++ //list only active users sc.setParameters("state", State.Active); @@@ -540,7 -539,7 +538,7 @@@ Account caller = UserContext.current().getCaller(); Long ipAddressId = cmd.getPublicIpId(); List<Long> permittedAccounts = new ArrayList<Long>(); -- ++ if (ipAddressId != null) { PublicIpAddress publicIp = _networkMgr.getPublicIpAddress(ipAddressId); if (publicIp == null) { @@@ -554,26 -553,26 +552,26 @@@ } _accountMgr.checkAccess(caller, null, true, publicIp); } -- ++ Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null); _accountMgr.buildACLSearchParameters(caller, null, cmd.getAccountName(), cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject, cmd.listAll(), false); Long domainId = domainIdRecursiveListProject.first(); Boolean isRecursive = domainIdRecursiveListProject.second(); ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third(); -- ++ Filter filter = new Filter(RemoteAccessVpnVO.class, "serverAddressId", false, cmd.getStartIndex(), cmd.getPageSizeVal()); SearchBuilder<RemoteAccessVpnVO> sb = _remoteAccessVpnDao.createSearchBuilder(); _accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); -- ++ sb.and("serverAddressId", sb.entity().getServerAddressId(), Op.EQ); sb.and("state", sb.entity().getState(), Op.EQ); -- ++ SearchCriteria<RemoteAccessVpnVO> sc = sb.create(); _accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); sc.setParameters("state", RemoteAccessVpn.State.Running); -- ++ if (ipAddressId != null) { sc.setParameters("serverAddressId", ipAddressId); } @@@ -620,15 -621,23 +618,23 @@@ public String getName() { return _name; } -- ++ @Override public List<? extends RemoteAccessVpn> listRemoteAccessVpns(long networkId) { return _remoteAccessVpnDao.listByNetworkId(networkId); } -- ++ @Override public RemoteAccessVpn getRemoteAccessVpn(long vpnId) { return _remoteAccessVpnDao.findById(vpnId); } + public List<RemoteAccessVPNServiceProvider> getRemoteAccessVPNServiceProviders() { - List<RemoteAccessVPNServiceProvider> result = new ArrayList<RemoteAccessVPNServiceProvider>(); - for (Enumeration<RemoteAccessVPNServiceProvider> e = _vpnServiceProviders.enumeration(); e.hasMoreElements();) { - result.add(e.nextElement()); - } - - return result; ++ List<RemoteAccessVPNServiceProvider> result = new ArrayList<RemoteAccessVPNServiceProvider>(); ++ for (Iterator<RemoteAccessVPNServiceProvider> e = _vpnServiceProviders.iterator(); e.hasNext();) { ++ result.add(e.next()); ++ } ++ ++ return result; + } }
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java index e34f7d4,44baf99..88e0121 --- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java +++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java @@@ -21,12 -21,10 +21,9 @@@ import java.util.List import java.util.Map; import javax.ejb.Local; +import javax.inject.Inject; import javax.naming.ConfigurationException; --import org.apache.log4j.Logger; - import org.springframework.stereotype.Component; -- import org.apache.cloudstack.api.command.user.vpn.CreateVpnConnectionCmd; import org.apache.cloudstack.api.command.user.vpn.CreateVpnCustomerGatewayCmd; import org.apache.cloudstack.api.command.user.vpn.CreateVpnGatewayCmd; @@@ -38,6 -36,6 +35,9 @@@ import org.apache.cloudstack.api.comman import org.apache.cloudstack.api.command.user.vpn.ListVpnGatewaysCmd; import org.apache.cloudstack.api.command.user.vpn.ResetVpnConnectionCmd; import org.apache.cloudstack.api.command.user.vpn.UpdateVpnCustomerGatewayCmd; ++import org.apache.log4j.Logger; ++import org.springframework.stereotype.Component; ++ import com.cloud.configuration.Config; import com.cloud.configuration.dao.ConfigurationDao; import com.cloud.event.ActionEvent; @@@ -70,7 -67,9 +69,6 @@@ import com.cloud.user.dao.AccountDao import com.cloud.utils.NumbersUtil; import com.cloud.utils.Pair; import com.cloud.utils.Ternary; - -import com.cloud.utils.component.Adapters; -import com.cloud.utils.component.ComponentLocator; -import com.cloud.utils.component.Inject; import com.cloud.utils.component.Manager; import com.cloud.utils.db.DB; import com.cloud.utils.db.Filter; @@@ -86,28 -84,31 +84,29 @@@ import com.cloud.vm.DomainRouterVO public class Site2SiteVpnManagerImpl implements Site2SiteVpnManager, Manager { private static final Logger s_logger = Logger.getLogger(Site2SiteVpnManagerImpl.class); - @Inject (adapter = Site2SiteVpnServiceProvider.class) - Adapters<Site2SiteVpnServiceProvider> _s2sProviders; ++ @Inject List<Site2SiteVpnServiceProvider> _s2sProviders; @Inject Site2SiteCustomerGatewayDao _customerGatewayDao; @Inject Site2SiteVpnGatewayDao _vpnGatewayDao; @Inject Site2SiteVpnConnectionDao _vpnConnectionDao; @Inject VpcDao _vpcDao; @Inject IPAddressDao _ipAddressDao; @Inject AccountDao _accountDao; + @Inject ConfigurationDao _configDao; @Inject VpcManager _vpcMgr; @Inject AccountManager _accountMgr; -- ++ String _name; int _connLimit; int _subnetsLimit; -- ++ @Override public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { _name = name; -- - ComponentLocator locator = ComponentLocator.getCurrentLocator(); - ConfigurationDao configDao = locator.getDao(ConfigurationDao.class); - Map<String, String> configs = configDao.getConfiguration(params); ++ + Map<String, String> configs = _configDao.getConfiguration(params); _connLimit = NumbersUtil.parseInt(configs.get(Config.Site2SiteVpnConnectionPerVpnGatewayLimit.key()), 4); _subnetsLimit = NumbersUtil.parseInt(configs.get(Config.Site2SiteVpnSubnetsPerCustomerGatewayLimit.key()), 10); - assert (_s2sProviders.enumeration().hasMoreElements()): "Did not get injected with a list of S2S providers!"; ++ assert (_s2sProviders.iterator().hasNext()): "Did not get injected with a list of S2S providers!"; return true; } @@@ -135,7 -136,7 +134,7 @@@ //Verify that caller can perform actions in behalf of vpc owner _accountMgr.checkAccess(caller, null, false, owner); -- Long vpcId = cmd.getVpcId(); ++ Long vpcId = cmd.getVpcId(); VpcVO vpc = _vpcDao.findById(vpcId); if (vpc == null) { throw new InvalidParameterValueException("Invalid VPC " + vpcId + " for site to site vpn gateway creation!"); @@@ -149,7 -150,7 +148,7 @@@ if (ips.size() != 1) { throw new CloudRuntimeException("Cannot found source nat ip of vpc " + vpcId); } -- ++ Site2SiteVpnGatewayVO gw = new Site2SiteVpnGatewayVO(owner.getAccountId(), owner.getDomainId(), ips.get(0).getId(), vpcId); _vpnGatewayDao.persist(gw); return gw; @@@ -170,7 -171,7 +169,7 @@@ } } } -- ++ @Override @ActionEvent(eventType = EventTypes.EVENT_S2S_VPN_CUSTOMER_GATEWAY_CREATE, eventDescription = "creating s2s customer gateway", create=true) public Site2SiteCustomerGateway createCustomerGateway(CreateVpnCustomerGatewayCmd cmd) { @@@ -230,9 -231,9 +229,9 @@@ if (_customerGatewayDao.findByNameAndAccountId(name, accountId) != null) { throw new InvalidParameterValueException("The customer gateway with name " + name + " already existed!"); } -- ++ checkCustomerGatewayCidrList(guestCidrList); -- ++ Site2SiteCustomerGatewayVO gw = new Site2SiteCustomerGatewayVO(name, accountId, owner.getDomainId(), gatewayIp, guestCidrList, ipsecPsk, ikePolicy, espPolicy, ikeLifetime, espLifetime, dpd); _customerGatewayDao.persist(gw); @@@ -254,14 -255,14 +253,14 @@@ throw new InvalidParameterValueException("Unable to found specified Site to Site VPN customer gateway " + customerGatewayId + " !"); } _accountMgr.checkAccess(caller, null, false, customerGateway); -- ++ Long vpnGatewayId = cmd.getVpnGatewayId(); Site2SiteVpnGateway vpnGateway = _vpnGatewayDao.findById(vpnGatewayId); if (vpnGateway == null) { throw new InvalidParameterValueException("Unable to found specified Site to Site VPN gateway " + vpnGatewayId + " !"); } _accountMgr.checkAccess(caller, null, false, vpnGateway); -- ++ if (customerGateway.getAccountId() != vpnGateway.getAccountId() || customerGateway.getDomainId() != vpnGateway.getDomainId()) { throw new InvalidParameterValueException("VPN connection can only be esitablished between same account's VPN gateway and customer gateway!"); } @@@ -276,7 -277,7 +275,7 @@@ } String[] cidrList = customerGateway.getGuestCidrList().split(","); -- ++ // Remote sub nets cannot overlap VPC's sub net String vpcCidr = _vpcDao.findById(vpnGateway.getVpcId()).getCidr(); for (String cidr : cidrList) { @@@ -285,7 -286,7 +284,7 @@@ vpcCidr + "!"); } } -- ++ // We also need to check if the new connection's remote CIDR is overlapped with existed connections List<Site2SiteVpnConnectionVO> conns = _vpnConnectionDao.listByVpnGatewayId(vpnGatewayId); if (conns.size() >= _connLimit) { @@@ -364,7 -364,7 +362,7 @@@ throw new InvalidParameterValueException("Fail to find customer gateway with " + id + " !"); } _accountMgr.checkAccess(caller, null, false, customerGateway); -- ++ return doDeleteCustomerGateway(customerGateway); } @@@ -385,7 -385,7 +383,7 @@@ } _vpnGatewayDao.remove(gw.getId()); } -- ++ @Override @ActionEvent(eventType = EventTypes.EVENT_S2S_VPN_GATEWAY_DELETE, eventDescription = "deleting s2s vpn gateway", create=true) public boolean deleteVpnGateway(DeleteVpnGatewayCmd cmd) { @@@ -397,7 -397,7 +395,7 @@@ if (vpnGateway == null) { throw new InvalidParameterValueException("Fail to find vpn gateway with " + id + " !"); } -- ++ _accountMgr.checkAccess(caller, null, false, vpnGateway); doDeleteVpnGateway(vpnGateway); @@@ -504,7 -504,7 +502,7 @@@ if (conn == null) { throw new InvalidParameterValueException("Fail to find site to site VPN connection " + id + " to delete!"); } -- ++ _accountMgr.checkAccess(caller, null, false, conn); if (conn.getState() == State.Connected) { @@@ -527,10 -527,9 +525,9 @@@ conn.setState(State.Disconnected); _vpnConnectionDao.persist(conn); -- - List <? extends Site2SiteVpnServiceProvider> elements = _networkMgr.getSite2SiteVpnElements(); ++ boolean result = true; - for (Site2SiteVpnServiceProvider element : elements) { + for (Site2SiteVpnServiceProvider element : _s2sProviders) { result = result & element.stopSite2SiteVpn(conn); } @@@ -577,7 -576,7 +574,7 @@@ boolean listAll = cmd.listAll(); long startIndex = cmd.getStartIndex(); long pageSizeVal = cmd.getPageSizeVal(); -- ++ Account caller = UserContext.current().getCaller(); List<Long> permittedAccounts = new ArrayList<Long>(); @@@ -609,14 -608,14 +606,14 @@@ public Pair<List<? extends Site2SiteVpnGateway>, Integer> searchForVpnGateways(ListVpnGatewaysCmd cmd) { Long id = cmd.getId(); Long vpcId = cmd.getVpcId(); -- ++ Long domainId = cmd.getDomainId(); boolean isRecursive = cmd.isRecursive(); String accountName = cmd.getAccountName(); boolean listAll = cmd.listAll(); long startIndex = cmd.getStartIndex(); long pageSizeVal = cmd.getPageSizeVal(); -- ++ Account caller = UserContext.current().getCaller(); List<Long> permittedAccounts = new ArrayList<Long>(); @@@ -637,10 -636,10 +634,10 @@@ SearchCriteria<Site2SiteVpnGatewayVO> sc = sb.create(); _accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); -- if (id != null) { ++ if (id != null) { sc.addAnd("id", SearchCriteria.Op.EQ, id); } -- ++ if (vpcId != null) { sc.addAnd("vpcId", SearchCriteria.Op.EQ, vpcId); } @@@ -660,7 -659,7 +657,7 @@@ boolean listAll = cmd.listAll(); long startIndex = cmd.getStartIndex(); long pageSizeVal = cmd.getPageSizeVal(); -- ++ Account caller = UserContext.current().getCaller(); List<Long> permittedAccounts = new ArrayList<Long>(); @@@ -676,7 -675,7 +673,7 @@@ _accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria); sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ); -- ++ if (vpcId != null) { SearchBuilder<Site2SiteVpnGatewayVO> gwSearch = _vpnGatewayDao.createSearchBuilder(); gwSearch.and("vpcId", gwSearch.entity().getVpcId(), SearchCriteria.Op.EQ); @@@ -689,7 -688,7 +686,7 @@@ if (id != null) { sc.addAnd("id", SearchCriteria.Op.EQ, id); } -- ++ if (vpcId != null) { sc.setJoinParameters("gwSearch", "vpcId", vpcId); } @@@ -716,7 -715,7 +713,7 @@@ doDeleteVpnGateway(gw); return true; } -- ++ @Override @DB public void markDisconnectVpnConnByVpc(long vpcId) { http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/server/src/com/cloud/resource/DiscovererBase.java ---------------------------------------------------------------------- diff --cc server/src/com/cloud/resource/DiscovererBase.java index 3d45799,64dfa39..940608c --- a/server/src/com/cloud/resource/DiscovererBase.java +++ b/server/src/com/cloud/resource/DiscovererBase.java @@@ -33,38 -32,46 +33,37 @@@ import com.cloud.dc.ClusterVO import com.cloud.dc.dao.ClusterDao; import com.cloud.host.HostVO; import com.cloud.host.dao.HostDao; - import com.cloud.network.NetworkManager; - + import com.cloud.network.NetworkModel; -import com.cloud.utils.component.ComponentLocator; -import com.cloud.utils.component.Inject; +import com.cloud.utils.component.AdapterBase; import com.cloud.utils.net.UrlUtil; -public abstract class DiscovererBase implements Discoverer { - protected String _name; +public abstract class DiscovererBase extends AdapterBase implements Discoverer { protected Map<String, String> _params; private static final Logger s_logger = Logger.getLogger(DiscovererBase.class); @Inject protected ClusterDao _clusterDao; @Inject protected ConfigurationDao _configDao; - @Inject protected NetworkManager _networkMgr; + @Inject protected NetworkModel _networkMgr; @Inject protected HostDao _hostDao; -- ++ @Override public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { - ConfigurationDao dao = ComponentLocator.getCurrentLocator().getDao(ConfigurationDao.class); - _params = dao.getConfiguration(params); - _name = name; - + _params = _configDao.getConfiguration(params); - ++ return true; } -- ++ protected Map<String, String> resolveInputParameters(URL url) { Map<String, String> params = UrlUtil.parseQueryParameters(url); -- ++ return null; } -- - @Override - public void putParam(Map<String, String> params) { - if (_params == null) { - _params = new HashMap<String, String>(); - } - _params.putAll(params); - } + @Override - public String getName() { - return _name; + public void putParam(Map<String, String> params) { - if (_params == null) { - _params = new HashMap<String, String>(); - } - _params.putAll(params); ++ if (_params == null) { ++ _params = new HashMap<String, String>(); ++ } ++ _params.putAll(params); } @Override @@@ -76,7 -83,7 +75,7 @@@ public boolean stop() { return true; } -- ++ protected ServerResource getResource(String resourceName){ ServerResource resource = null; try { @@@ -98,10 -105,10 +97,10 @@@ } catch (InvocationTargetException e) { s_logger.warn("InvocationTargetException error on " + resourceName, e); } -- ++ return resource; } -- ++ protected HashMap<String, Object> buildConfigParams(HostVO host){ HashMap<String, Object> params = new HashMap<String, Object>(host.getDetails().size() + 5); params.putAll(host.getDetails()); @@@ -132,16 -139,16 +131,16 @@@ return params; } -- ++ @Override public ServerResource reloadResource(HostVO host) { String resourceName = host.getResource(); ServerResource resource = getResource(resourceName); -- ++ if(resource != null){ _hostDao.loadDetails(host); updateNetworkLabels(host); -- ++ HashMap<String, Object> params = buildConfigParams(host); try { resource.configure(host.getName(), params); @@@ -156,18 -163,18 +155,18 @@@ } return resource; } -- ++ private void updateNetworkLabels(HostVO host){ //check if networkLabels need to be updated in details //we send only private and storage network label to the resource. String privateNetworkLabel = _networkMgr.getDefaultManagementTrafficLabel(host.getDataCenterId(), host.getHypervisorType()); String storageNetworkLabel = _networkMgr.getDefaultStorageTrafficLabel(host.getDataCenterId(), host.getHypervisorType()); -- ++ String privateDevice = host.getDetail("private.network.device"); String storageDevice = host.getDetail("storage.network.device1"); -- ++ boolean update = false; -- ++ if(privateNetworkLabel != null && !privateNetworkLabel.equalsIgnoreCase(privateDevice)){ host.setDetail("private.network.device", privateNetworkLabel); update = true;
