http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/14bd345f/server/src/com/cloud/api/ApiServer.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java index 8a88cbb..6faaa4a 100755 --- a/server/src/com/cloud/api/ApiServer.java +++ b/server/src/com/cloud/api/ApiServer.java @@ -52,16 +52,29 @@ import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.cloudstack.acl.APIAccessChecker; -import org.apache.cloudstack.acl.ControlledEntity; -import org.apache.cloudstack.api.*; +import org.apache.cloudstack.api.APICommand; +import org.apache.cloudstack.api.BaseAsyncCmd; +import org.apache.cloudstack.api.BaseAsyncCreateCmd; +import org.apache.cloudstack.api.BaseCmd; +import org.apache.cloudstack.api.BaseListCmd; +import org.apache.cloudstack.api.ResponseObject; +import org.apache.cloudstack.api.ServerApiException; +import org.apache.cloudstack.api.command.admin.host.ListHostsCmd; +import org.apache.cloudstack.api.command.admin.router.ListRoutersCmd; +import org.apache.cloudstack.api.command.admin.user.ListUsersCmd; import org.apache.cloudstack.api.command.user.account.ListAccountsCmd; import org.apache.cloudstack.api.command.user.account.ListProjectAccountsCmd; import org.apache.cloudstack.api.command.user.event.ListEventsCmd; +import org.apache.cloudstack.api.command.user.project.ListProjectInvitationsCmd; +import org.apache.cloudstack.api.command.user.project.ListProjectsCmd; +import org.apache.cloudstack.api.command.user.securitygroup.ListSecurityGroupsCmd; +import org.apache.cloudstack.api.command.user.tag.ListTagsCmd; import org.apache.cloudstack.api.command.user.vm.ListVMsCmd; import org.apache.cloudstack.api.command.user.vmgroup.ListVMGroupsCmd; import org.apache.cloudstack.api.command.user.volume.ListVolumesCmd; +import org.apache.cloudstack.api.response.ExceptionResponse; +import org.apache.cloudstack.api.response.ListResponse; import org.apache.commons.codec.binary.Base64; -import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.ConnectionClosedException; import org.apache.http.HttpException; import org.apache.http.HttpRequest; @@ -69,6 +82,7 @@ import org.apache.http.HttpResponse; import org.apache.http.HttpServerConnection; import org.apache.http.HttpStatus; import org.apache.http.NameValuePair; +import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.entity.BasicHttpEntity; import org.apache.http.impl.DefaultHttpResponseFactory; import org.apache.http.impl.DefaultHttpServerConnection; @@ -89,18 +103,9 @@ import org.apache.http.protocol.ResponseContent; import org.apache.http.protocol.ResponseDate; import org.apache.http.protocol.ResponseServer; import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; +import org.reflections.Reflections; -import org.apache.cloudstack.api.command.admin.host.ListHostsCmd; -import org.apache.cloudstack.api.command.admin.router.ListRoutersCmd; -import org.apache.cloudstack.api.command.admin.user.ListUsersCmd; -import org.apache.cloudstack.api.command.user.project.ListProjectInvitationsCmd; -import org.apache.cloudstack.api.command.user.project.ListProjectsCmd; -import org.apache.cloudstack.api.command.user.securitygroup.ListSecurityGroupsCmd; -import org.apache.cloudstack.api.command.user.tag.ListTagsCmd; import com.cloud.api.response.ApiResponseSerializer; -import org.apache.cloudstack.api.response.ExceptionResponse; -import org.apache.cloudstack.api.response.ListResponse; import com.cloud.async.AsyncJob; import com.cloud.async.AsyncJobManager; import com.cloud.async.AsyncJobVO; @@ -123,18 +128,15 @@ import com.cloud.user.UserAccount; import com.cloud.user.UserContext; import com.cloud.user.UserVO; import com.cloud.utils.Pair; -import com.cloud.utils.component.Adapters; import com.cloud.utils.StringUtils; +import com.cloud.utils.component.ComponentContext; import com.cloud.utils.component.ComponentLocator; -import com.cloud.utils.component.Inject; import com.cloud.utils.concurrency.NamedThreadFactory; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.Transaction; import com.cloud.utils.exception.CSExceptionErrorCode; import com.cloud.uuididentity.dao.IdentityDao; -import org.reflections.Reflections; - public class ApiServer implements HttpRequestHandler { private static final Logger s_logger = Logger.getLogger(ApiServer.class.getName()); private static final Logger s_accessLogger = Logger.getLogger("apiserver." + ApiServer.class.getName()); @@ -143,18 +145,18 @@ public class ApiServer implements HttpRequestHandler { public static String jsonContentType = "text/javascript"; private ApiDispatcher _dispatcher; - @Inject private AccountManager _accountMgr = null; - @Inject private DomainManager _domainMgr = null; - @Inject private AsyncJobManager _asyncMgr = null; - @Inject(adapter = APIAccessChecker.class) - protected Adapters<APIAccessChecker> _apiAccessCheckers; + @Inject private final AccountManager _accountMgr = null; + @Inject private final DomainManager _domainMgr = null; + @Inject private final AsyncJobManager _asyncMgr = null; + @Inject private ConfigurationDao _configDao; + @Inject protected List<APIAccessChecker> _apiAccessCheckers; private Account _systemAccount = null; private User _systemUser = null; private static int _workerCount = 0; private static ApiServer s_instance = null; private static final DateFormat _dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - private Map<String, Class<?>> _apiNameCmdClassMap = new HashMap<String, Class<?>>(); + private final Map<String, Class<?>> _apiNameCmdClassMap = new HashMap<String, Class<?>>(); private static ExecutorService _executor = new ThreadPoolExecutor(10, 150, 60, TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>(), new NamedThreadFactory("ApiServer")); @@ -164,20 +166,13 @@ public class ApiServer implements HttpRequestHandler { public static void initApiServer(String[] apiConfig) { if (s_instance == null) { - //Injecting will create ApiServer object with all its - //vars injected as well, no need to do the following: - //s_instance = new ApiServer(); - s_instance = ComponentLocator.inject(ApiServer.class); + s_instance = new ApiServer(); + s_instance = ComponentContext.inject(s_instance); s_instance.init(apiConfig); } } public static ApiServer getInstance() { - // Assumption: CloudStartupServlet would initialize ApiServer - // initApiServer(null); - if (s_instance == null) { - s_logger.fatal("ApiServer instance failed to initialize"); - } return s_instance; } @@ -188,11 +183,9 @@ public class ApiServer implements HttpRequestHandler { _systemAccount = _accountMgr.getSystemAccount(); _systemUser = _accountMgr.getSystemUser(); _dispatcher = ApiDispatcher.getInstance(); - + Integer apiPort = null; // api port, null by default - ComponentLocator locator = ComponentLocator.getLocator(ManagementServer.Name); - ConfigurationDao configDao = locator.getDao(ConfigurationDao.class); - SearchCriteria<ConfigurationVO> sc = configDao.createSearchCriteria(); + SearchCriteria<ConfigurationVO> sc = _configDao.createSearchCriteria(); sc.addAnd("name", SearchCriteria.Op.EQ, "integration.api.port"); List<ConfigurationVO> values = _configDao.search(sc, null); if ((values != null) && (values.size() > 0)) { @@ -215,8 +208,8 @@ public class ApiServer implements HttpRequestHandler { _apiNameCmdClassMap.put(apiName, cmdClass); } - encodeApiResponse = Boolean.valueOf(configDao.getValue(Config.EncodeApiResponse.key())); - String jsonType = configDao.getValue(Config.JavaScriptDefaultContentType.key()); + encodeApiResponse = Boolean.valueOf(_configDao.getValue(Config.EncodeApiResponse.key())); + String jsonType = _configDao.getValue(Config.JavaScriptDefaultContentType.key()); if (jsonType != null) { jsonContentType = jsonType; } @@ -357,29 +350,29 @@ public class ApiServer implements HttpRequestHandler { } } catch (Exception ex) { if (ex instanceof InvalidParameterValueException) { - InvalidParameterValueException ref = (InvalidParameterValueException)ex; - ServerApiException e = new ServerApiException(BaseCmd.PARAM_ERROR, ex.getMessage()); + InvalidParameterValueException ref = (InvalidParameterValueException)ex; + ServerApiException e = new ServerApiException(BaseCmd.PARAM_ERROR, ex.getMessage()); // copy over the IdentityProxy information as well and throw the serverapiexception. ArrayList<String> idList = ref.getIdProxyList(); if (idList != null) { - // Iterate through entire arraylist and copy over each proxy id. - for (int i = 0 ; i < idList.size(); i++) { - e.addProxyObject(idList.get(i)); - } + // Iterate through entire arraylist and copy over each proxy id. + for (int i = 0 ; i < idList.size(); i++) { + e.addProxyObject(idList.get(i)); + } } // Also copy over the cserror code and the function/layer in which it was thrown. - e.setCSErrorCode(ref.getCSErrorCode()); + e.setCSErrorCode(ref.getCSErrorCode()); throw e; } else if (ex instanceof PermissionDeniedException) { - PermissionDeniedException ref = (PermissionDeniedException)ex; - ServerApiException e = new ServerApiException(BaseCmd.ACCOUNT_ERROR, ex.getMessage()); + PermissionDeniedException ref = (PermissionDeniedException)ex; + ServerApiException e = new ServerApiException(BaseCmd.ACCOUNT_ERROR, ex.getMessage()); // copy over the IdentityProxy information as well and throw the serverapiexception. - ArrayList<String> idList = ref.getIdProxyList(); + ArrayList<String> idList = ref.getIdProxyList(); if (idList != null) { - // Iterate through entire arraylist and copy over each proxy id. - for (int i = 0 ; i < idList.size(); i++) { - e.addProxyObject(idList.get(i)); - } + // Iterate through entire arraylist and copy over each proxy id. + for (int i = 0 ; i < idList.size(); i++) { + e.addProxyObject(idList.get(i)); + } } e.setCSErrorCode(ref.getCSErrorCode()); throw e; @@ -514,15 +507,15 @@ public class ApiServer implements HttpRequestHandler { } } - for (ResponseObject response : responses) { + for (ResponseObject response : responses) { if (response.getObjectId() != null && objectJobMap.containsKey(response.getObjectId())) { AsyncJob job = objectJobMap.get(response.getObjectId()); response.setJobId(job.getUuid()); - response.setJobStatus(job.getStatus()); - } + response.setJobStatus(job.getStatus()); } } } + } private void buildAuditTrail(StringBuffer auditTrailSb, String command, String result) { if (result == null) { @@ -553,7 +546,7 @@ public class ApiServer implements HttpRequestHandler { // if userId not null, that mean that user is logged in if (userId != null) { - User user = ApiDBUtils.findUserById(userId); + User user = ApiDBUtils.findUserById(userId); if (!isCommandAvailable(user, commandName)) { s_logger.warn("The given command:" + commandName + " does not exist or it is not available for user"); throw new ServerApiException(BaseCmd.UNSUPPORTED_ACTION_ERROR, "The given command does not exist or it is not available for user"); @@ -688,7 +681,7 @@ public class ApiServer implements HttpRequestHandler { } return false; } - + public Long fetchDomainId(String domainUUID){ ComponentLocator locator = ComponentLocator.getLocator(ManagementServer.Name); IdentityDao identityDao = locator.getDao(IdentityDao.class); @@ -739,19 +732,19 @@ public class ApiServer implements HttpRequestHandler { if(user.getUuid() != null){ session.setAttribute("user_UUID", user.getUuid()); } - + session.setAttribute("username", userAcct.getUsername()); session.setAttribute("firstname", userAcct.getFirstname()); session.setAttribute("lastname", userAcct.getLastname()); session.setAttribute("accountobj", account); session.setAttribute("account", account.getAccountName()); - + session.setAttribute("domainid", account.getDomainId()); DomainVO domain = (DomainVO) _domainMgr.getDomain(account.getDomainId()); if(domain.getUuid() != null){ session.setAttribute("domain_UUID", domain.getUuid()); } - + session.setAttribute("type", Short.valueOf(account.getType()).toString()); session.setAttribute("registrationtoken", userAcct.getRegistrationToken()); session.setAttribute("registered", new Boolean(userAcct.isRegistered()).toString()); @@ -855,8 +848,8 @@ public class ApiServer implements HttpRequestHandler { _params = new BasicHttpParams(); _params.setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 30000).setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE, 8 * 1024) - .setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, false).setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, true) - .setParameter(CoreProtocolPNames.ORIGIN_SERVER, "HttpComponents/1.1"); + .setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK, false).setBooleanParameter(CoreConnectionPNames.TCP_NODELAY, true) + .setParameter(CoreProtocolPNames.ORIGIN_SERVER, "HttpComponents/1.1"); // Set up the HTTP protocol processor BasicHttpProcessor httpproc = new BasicHttpProcessor(); @@ -968,41 +961,41 @@ public class ApiServer implements HttpRequestHandler { // Exception. When invoked from ApiServlet's processRequest(), this can be // a standard exception like NumberFormatException. We'll leave the standard ones alone. if (ex != null) { - if (ex instanceof ServerApiException || ex instanceof PermissionDeniedException - || ex instanceof InvalidParameterValueException) { - // Cast the exception appropriately and retrieve the IdentityProxy - if (ex instanceof ServerApiException) { - ServerApiException ref = (ServerApiException) ex; - ArrayList<String> idList = ref.getIdProxyList(); - if (idList != null) { - for (int i=0; i < idList.size(); i++) { - apiResponse.addProxyObject(idList.get(i)); - } - } - // Also copy over the cserror code and the function/layer in which it was thrown. - apiResponse.setCSErrorCode(ref.getCSErrorCode()); - } else if (ex instanceof PermissionDeniedException) { - PermissionDeniedException ref = (PermissionDeniedException) ex; - ArrayList<String> idList = ref.getIdProxyList(); - if (idList != null) { - for (int i=0; i < idList.size(); i++) { - apiResponse.addProxyObject(idList.get(i)); - } - } - // Also copy over the cserror code and the function/layer in which it was thrown. - apiResponse.setCSErrorCode(ref.getCSErrorCode()); - } else if (ex instanceof InvalidParameterValueException) { - InvalidParameterValueException ref = (InvalidParameterValueException) ex; - ArrayList<String> idList = ref.getIdProxyList(); - if (idList != null) { - for (int i=0; i < idList.size(); i++) { - apiResponse.addProxyObject(idList.get(i)); - } - } - // Also copy over the cserror code and the function/layer in which it was thrown. - apiResponse.setCSErrorCode(ref.getCSErrorCode()); - } - } + if (ex instanceof ServerApiException || ex instanceof PermissionDeniedException + || ex instanceof InvalidParameterValueException) { + // Cast the exception appropriately and retrieve the IdentityProxy + if (ex instanceof ServerApiException) { + ServerApiException ref = (ServerApiException) ex; + ArrayList<String> idList = ref.getIdProxyList(); + if (idList != null) { + for (int i=0; i < idList.size(); i++) { + apiResponse.addProxyObject(idList.get(i)); + } + } + // Also copy over the cserror code and the function/layer in which it was thrown. + apiResponse.setCSErrorCode(ref.getCSErrorCode()); + } else if (ex instanceof PermissionDeniedException) { + PermissionDeniedException ref = (PermissionDeniedException) ex; + ArrayList<String> idList = ref.getIdProxyList(); + if (idList != null) { + for (int i=0; i < idList.size(); i++) { + apiResponse.addProxyObject(idList.get(i)); + } + } + // Also copy over the cserror code and the function/layer in which it was thrown. + apiResponse.setCSErrorCode(ref.getCSErrorCode()); + } else if (ex instanceof InvalidParameterValueException) { + InvalidParameterValueException ref = (InvalidParameterValueException) ex; + ArrayList<String> idList = ref.getIdProxyList(); + if (idList != null) { + for (int i=0; i < idList.size(); i++) { + apiResponse.addProxyObject(idList.get(i)); + } + } + // Also copy over the cserror code and the function/layer in which it was thrown. + apiResponse.setCSErrorCode(ref.getCSErrorCode()); + } + } } SerializationContext.current().setUuidTranslation(true); responseText = ApiResponseSerializer.toSerializedString(apiResponse, responseType);
http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/14bd345f/server/src/com/cloud/network/StorageNetworkManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/StorageNetworkManagerImpl.java b/server/src/com/cloud/network/StorageNetworkManagerImpl.java index 6c2411c..b3dd357 100755 --- a/server/src/com/cloud/network/StorageNetworkManagerImpl.java +++ b/server/src/com/cloud/network/StorageNetworkManagerImpl.java @@ -27,15 +27,15 @@ import javax.inject.Inject; import javax.naming.ConfigurationException; import org.apache.cloudstack.api.command.admin.network.CreateStorageNetworkIpRangeCmd; +import org.apache.cloudstack.api.command.admin.network.DeleteStorageNetworkIpRangeCmd; import org.apache.cloudstack.api.command.admin.network.ListStorageNetworkIpRangeCmd; import org.apache.cloudstack.api.command.admin.network.UpdateStorageNetworkIpRangeCmd; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; -import org.apache.cloudstack.api.command.admin.network.DeleteStorageNetworkIpRangeCmd; import com.cloud.dc.HostPodVO; -import com.cloud.dc.StorageNetworkIpRange; import com.cloud.dc.StorageNetworkIpAddressVO; +import com.cloud.dc.StorageNetworkIpRange; import com.cloud.dc.StorageNetworkIpRangeVO; import com.cloud.dc.dao.HostPodDao; import com.cloud.dc.dao.StorageNetworkIpAddressDao; @@ -43,12 +43,11 @@ import com.cloud.dc.dao.StorageNetworkIpRangeDao; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.Networks.TrafficType; import com.cloud.network.dao.NetworkDao; -import com.cloud.utils.component.Inject; import com.cloud.utils.db.DB; +import com.cloud.utils.db.SearchCriteria.Op; import com.cloud.utils.db.SearchCriteria2; import com.cloud.utils.db.SearchCriteriaService; import com.cloud.utils.db.Transaction; -import com.cloud.utils.db.SearchCriteria.Op; import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.net.NetUtils; import com.cloud.vm.SecondaryStorageVmVO; @@ -56,329 +55,332 @@ import com.cloud.vm.VirtualMachine; import com.cloud.vm.dao.SecondaryStorageVmDao; @Component -@Local(value = {StorageNetworkManager.class, StorageNetworkService.class}) +@Local(value = { StorageNetworkManager.class, StorageNetworkService.class }) public class StorageNetworkManagerImpl implements StorageNetworkManager, StorageNetworkService { - private static final Logger s_logger = Logger.getLogger(StorageNetworkManagerImpl.class); - - String _name; - @Inject - StorageNetworkIpAddressDao _sNwIpDao; - @Inject - StorageNetworkIpRangeDao _sNwIpRangeDao; + private static final Logger s_logger = Logger.getLogger(StorageNetworkManagerImpl.class); + + String _name; + @Inject + StorageNetworkIpAddressDao _sNwIpDao; + @Inject + StorageNetworkIpRangeDao _sNwIpRangeDao; @Inject NetworkDao _networkDao; - @Inject - HostPodDao _podDao; - @Inject - SecondaryStorageVmDao _ssvmDao; - - @Override - public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { - _name = name; - return true; - } - - @Override - public boolean start() { - // TODO Auto-generated method stub - return true; - } - - @Override - public boolean stop() { - // TODO Auto-generated method stub - return true; - } - - @Override - public String getName() { - // TODO Auto-generated method stub - return null; - } - - private void checkOverlapPrivateIpRange(long podId, String startIp, String endIp) { - HostPodVO pod = _podDao.findById(podId); - if (pod == null) { - throw new CloudRuntimeException("Cannot find pod " + podId); - } - String[] IpRange = pod.getDescription().split("-"); - if ((IpRange[0] == null || IpRange[1] == null) || (!NetUtils.isValidIp(IpRange[0]) || !NetUtils.isValidIp(IpRange[1]))) { - return; - } + @Inject + HostPodDao _podDao; + @Inject + SecondaryStorageVmDao _ssvmDao; + + @Override + public boolean configure(String name, Map<String, Object> params) throws ConfigurationException { + _name = name; + return true; + } + + @Override + public boolean start() { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean stop() { + // TODO Auto-generated method stub + return true; + } + + @Override + public String getName() { + // TODO Auto-generated method stub + return null; + } + + private void checkOverlapPrivateIpRange(long podId, String startIp, String endIp) { + HostPodVO pod = _podDao.findById(podId); + if (pod == null) { + throw new CloudRuntimeException("Cannot find pod " + podId); + } + String[] IpRange = pod.getDescription().split("-"); + if ((IpRange[0] == null || IpRange[1] == null) || (!NetUtils.isValidIp(IpRange[0]) || !NetUtils.isValidIp(IpRange[1]))) { + return; + } if (NetUtils.ipRangesOverlap(startIp, endIp, IpRange[0], IpRange[1])) { throw new InvalidParameterValueException("The Storage network Start IP and endIP address range overlap with private IP :" + IpRange[0] + ":" + IpRange[1]); } - } - - private void checkOverlapStorageIpRange(long podId, String startIp, String endIp) { - List<StorageNetworkIpRangeVO> curRanges = _sNwIpRangeDao.listByPodId(podId); - for (StorageNetworkIpRangeVO range : curRanges) { - if (NetUtils.ipRangesOverlap(startIp, endIp, range.getStartIp(), range.getEndIp())) { - throw new InvalidParameterValueException("The Storage network Start IP and endIP address range overlap with private IP :" + range.getStartIp() + " - " + range.getEndIp()); - } - } - } - - private void createStorageIpEntires(Transaction txn, long rangeId, String startIp, String endIp, long zoneId) throws SQLException { + } + + private void checkOverlapStorageIpRange(long podId, String startIp, String endIp) { + List<StorageNetworkIpRangeVO> curRanges = _sNwIpRangeDao.listByPodId(podId); + for (StorageNetworkIpRangeVO range : curRanges) { + if (NetUtils.ipRangesOverlap(startIp, endIp, range.getStartIp(), range.getEndIp())) { + throw new InvalidParameterValueException("The Storage network Start IP and endIP address range overlap with private IP :" + range.getStartIp() + " - " + range.getEndIp()); + } + } + } + + private void createStorageIpEntires(Transaction txn, long rangeId, String startIp, String endIp, long zoneId) throws SQLException { long startIPLong = NetUtils.ip2Long(startIp); long endIPLong = NetUtils.ip2Long(endIp); - String insertSql = "INSERT INTO `cloud`.`op_dc_storage_network_ip_address` (range_id, ip_address, mac_address, taken) VALUES (?, ?, (select mac_address from `cloud`.`data_center` where id=?), ?)"; - String updateSql = "UPDATE `cloud`.`data_center` set mac_address = mac_address+1 where id=?"; - PreparedStatement stmt = null; - Connection conn = txn.getConnection(); - - while (startIPLong <= endIPLong) { - stmt = conn.prepareStatement(insertSql); - stmt.setLong(1, rangeId); - stmt.setString(2, NetUtils.long2Ip(startIPLong++)); - stmt.setLong(3, zoneId); - stmt.setNull(4, java.sql.Types.DATE); + String insertSql = "INSERT INTO `cloud`.`op_dc_storage_network_ip_address` (range_id, ip_address, mac_address, taken) VALUES (?, ?, (select mac_address from `cloud`.`data_center` where id=?), ?)"; + String updateSql = "UPDATE `cloud`.`data_center` set mac_address = mac_address+1 where id=?"; + PreparedStatement stmt = null; + Connection conn = txn.getConnection(); + + while (startIPLong <= endIPLong) { + stmt = conn.prepareStatement(insertSql); + stmt.setLong(1, rangeId); + stmt.setString(2, NetUtils.long2Ip(startIPLong++)); + stmt.setLong(3, zoneId); + stmt.setNull(4, java.sql.Types.DATE); stmt.executeUpdate(); stmt.close(); - + stmt = txn.prepareStatement(updateSql); stmt.setLong(1, zoneId); stmt.executeUpdate(); stmt.close(); } - } - - @Override - @DB + } + + @Override + @DB public StorageNetworkIpRange updateIpRange(UpdateStorageNetworkIpRangeCmd cmd) { - Integer vlan = cmd.getVlan(); - Long rangeId = cmd.getId(); - String startIp = cmd.getStartIp(); - String endIp = cmd.getEndIp(); - String netmask = cmd.getNetmask(); - - if (netmask != null && !NetUtils.isValidNetmask(netmask)) { - throw new CloudRuntimeException("Invalid netmask:" + netmask); - } - - if (_sNwIpDao.countInUseIpByRangeId(rangeId) > 0) { - throw new CloudRuntimeException("Cannot update the range," + getInUseIpAddress(rangeId)); - } - - StorageNetworkIpRangeVO range = _sNwIpRangeDao.findById(rangeId); - if (range == null) { - throw new CloudRuntimeException("Cannot find storage ip range " + rangeId); - } - - if (startIp != null || endIp != null) { - long podId = range.getPodId(); - startIp = startIp == null ? range.getStartIp() : startIp; - endIp = endIp == null ? range.getEndIp() : endIp; - checkOverlapPrivateIpRange(podId, startIp, endIp); - checkOverlapStorageIpRange(podId, startIp, endIp); - } - - Transaction txn = Transaction.currentTxn(); - txn.start(); - try { - range = _sNwIpRangeDao.acquireInLockTable(range.getId()); - if (range == null) { - throw new CloudRuntimeException("Cannot acquire lock on storage ip range " + rangeId); - } - StorageNetworkIpRangeVO vo = _sNwIpRangeDao.createForUpdate(); - if (vlan != null) { - vo.setVlan(vlan); - } - if (startIp != null) { - vo.setStartIp(startIp); - } - if (endIp != null) { - vo.setEndIp(endIp); - } - if (netmask != null) { - vo.setNetmask(netmask); - } - _sNwIpRangeDao.update(rangeId, vo); - } finally { - if (range != null) { - _sNwIpRangeDao.releaseFromLockTable(range.getId()); - } - } - txn.commit(); - - return _sNwIpRangeDao.findById(rangeId); + Integer vlan = cmd.getVlan(); + Long rangeId = cmd.getId(); + String startIp = cmd.getStartIp(); + String endIp = cmd.getEndIp(); + String netmask = cmd.getNetmask(); + + if (netmask != null && !NetUtils.isValidNetmask(netmask)) { + throw new CloudRuntimeException("Invalid netmask:" + netmask); + } + + if (_sNwIpDao.countInUseIpByRangeId(rangeId) > 0) { + throw new CloudRuntimeException("Cannot update the range," + getInUseIpAddress(rangeId)); + } + + StorageNetworkIpRangeVO range = _sNwIpRangeDao.findById(rangeId); + if (range == null) { + throw new CloudRuntimeException("Cannot find storage ip range " + rangeId); + } + + if (startIp != null || endIp != null) { + long podId = range.getPodId(); + startIp = startIp == null ? range.getStartIp() : startIp; + endIp = endIp == null ? range.getEndIp() : endIp; + checkOverlapPrivateIpRange(podId, startIp, endIp); + checkOverlapStorageIpRange(podId, startIp, endIp); + } + + Transaction txn = Transaction.currentTxn(); + txn.start(); + try { + range = _sNwIpRangeDao.acquireInLockTable(range.getId()); + if (range == null) { + throw new CloudRuntimeException("Cannot acquire lock on storage ip range " + rangeId); + } + StorageNetworkIpRangeVO vo = _sNwIpRangeDao.createForUpdate(); + if (vlan != null) { + vo.setVlan(vlan); + } + if (startIp != null) { + vo.setStartIp(startIp); + } + if (endIp != null) { + vo.setEndIp(endIp); + } + if (netmask != null) { + vo.setNetmask(netmask); + } + _sNwIpRangeDao.update(rangeId, vo); + } finally { + if (range != null) { + _sNwIpRangeDao.releaseFromLockTable(range.getId()); + } + } + txn.commit(); + + return _sNwIpRangeDao.findById(rangeId); + } + + @Override + @DB + public StorageNetworkIpRange createIpRange(CreateStorageNetworkIpRangeCmd cmd) throws SQLException { + Long podId = cmd.getPodId(); + String startIp = cmd.getStartIp(); + String endIp = cmd.getEndIp(); + Integer vlan = cmd.getVlan(); + String netmask = cmd.getNetmask(); + + if (endIp == null) { + endIp = startIp; + } + + if (!NetUtils.isValidNetmask(netmask)) { + throw new CloudRuntimeException("Invalid netmask:" + netmask); + } + + HostPodVO pod = _podDao.findById(podId); + if (pod == null) { + throw new CloudRuntimeException("Cannot find pod " + podId); + } + Long zoneId = pod.getDataCenterId(); + + List<NetworkVO> nws = _networkDao.listByZoneAndTrafficType(zoneId, TrafficType.Storage); + if (nws.size() == 0) { + throw new CloudRuntimeException("Cannot find storage network in zone " + zoneId); + } + if (nws.size() > 1) { + throw new CloudRuntimeException("Find more than one storage network in zone " + zoneId + "," + nws.size() + " found"); + } + NetworkVO nw = nws.get(0); + + checkOverlapPrivateIpRange(podId, startIp, endIp); + checkOverlapStorageIpRange(podId, startIp, endIp); + + Transaction txn = Transaction.currentTxn(); + StorageNetworkIpRangeVO range = null; + + txn.start(); + range = new StorageNetworkIpRangeVO(zoneId, podId, nw.getId(), startIp, endIp, vlan, netmask, cmd.getGateWay()); + _sNwIpRangeDao.persist(range); + try { + createStorageIpEntires(txn, range.getId(), startIp, endIp, zoneId); + } catch (SQLException e) { + txn.rollback(); + StringBuilder err = new StringBuilder(); + err.append("Create storage network range failed."); + err.append("startIp=" + startIp); + err.append("endIp=" + endIp); + err.append("netmask=" + netmask); + err.append("zoneId=" + zoneId); + s_logger.debug(err.toString(), e); + throw e; + } + + txn.commit(); + + return range; + } + + private String getInUseIpAddress(long rangeId) { + List<String> ips = _sNwIpDao.listInUseIpByRangeId(rangeId); + StringBuilder res = new StringBuilder(); + res.append("Below IP of range " + rangeId + " is still in use:"); + for (String ip : ips) { + res.append(ip).append(","); + } + return res.toString(); } - - @Override - @DB - public StorageNetworkIpRange createIpRange(CreateStorageNetworkIpRangeCmd cmd) throws SQLException { - Long podId = cmd.getPodId(); - String startIp = cmd.getStartIp(); - String endIp = cmd.getEndIp(); - Integer vlan = cmd.getVlan(); - String netmask = cmd.getNetmask(); - - if (endIp == null) { - endIp = startIp; - } - - if (!NetUtils.isValidNetmask(netmask)) { - throw new CloudRuntimeException("Invalid netmask:" + netmask); - } - - HostPodVO pod = _podDao.findById(podId); - if (pod == null) { - throw new CloudRuntimeException("Cannot find pod " + podId); - } - Long zoneId = pod.getDataCenterId(); - - List<NetworkVO> nws = _networkDao.listByZoneAndTrafficType(zoneId, TrafficType.Storage); - if (nws.size() == 0) { - throw new CloudRuntimeException("Cannot find storage network in zone " + zoneId); - } - if (nws.size() > 1) { - throw new CloudRuntimeException("Find more than one storage network in zone " + zoneId + "," + nws.size() + " found"); - } - NetworkVO nw = nws.get(0); - - checkOverlapPrivateIpRange(podId, startIp, endIp); - checkOverlapStorageIpRange(podId, startIp, endIp); - - Transaction txn = Transaction.currentTxn(); - StorageNetworkIpRangeVO range = null; - - txn.start(); - range = new StorageNetworkIpRangeVO(zoneId, podId, nw.getId(), startIp, endIp, vlan, netmask, cmd.getGateWay()); - _sNwIpRangeDao.persist(range); - try { - createStorageIpEntires(txn, range.getId(), startIp, endIp, zoneId); - } catch (SQLException e) { - txn.rollback(); - StringBuilder err = new StringBuilder(); - err.append("Create storage network range failed."); - err.append("startIp=" + startIp); - err.append("endIp=" + endIp); - err.append("netmask=" + netmask); - err.append("zoneId=" + zoneId); - s_logger.debug(err.toString(), e); - throw e; - } - - txn.commit(); - - return range; - } - - private String getInUseIpAddress(long rangeId) { - List<String> ips = _sNwIpDao.listInUseIpByRangeId(rangeId); - StringBuilder res = new StringBuilder(); - res.append("Below IP of range " + rangeId + " is still in use:"); - for (String ip : ips) { - res.append(ip).append(","); - } - return res.toString(); - } - - @Override - @DB + + @Override + @DB public void deleteIpRange(DeleteStorageNetworkIpRangeCmd cmd) { - long rangeId = cmd.getId(); - StorageNetworkIpRangeVO range = _sNwIpRangeDao.findById(rangeId); - if (range == null) { - throw new CloudRuntimeException("Can not find storage network ip range " + rangeId); - } - - if (_sNwIpDao.countInUseIpByRangeId(rangeId) > 0) { - throw new CloudRuntimeException(getInUseIpAddress(rangeId)); - } - - final Transaction txn = Transaction.currentTxn(); - txn.start(); - try { - range = _sNwIpRangeDao.acquireInLockTable(rangeId); - if (range == null) { - String msg = "Unable to acquire lock on storage network ip range id=" + rangeId + ", delete failed"; - s_logger.warn(msg); - throw new CloudRuntimeException(msg); - } - /* entries in op_dc_storage_network_ip_address will be deleted automatically due to fk_storage_ip_address__range_id constraint key */ - _sNwIpRangeDao.remove(rangeId); - } finally { - if (range != null) { - _sNwIpRangeDao.releaseFromLockTable(rangeId); - } - } - txn.commit(); - } - - @Override + long rangeId = cmd.getId(); + StorageNetworkIpRangeVO range = _sNwIpRangeDao.findById(rangeId); + if (range == null) { + throw new CloudRuntimeException("Can not find storage network ip range " + rangeId); + } + + if (_sNwIpDao.countInUseIpByRangeId(rangeId) > 0) { + throw new CloudRuntimeException(getInUseIpAddress(rangeId)); + } + + final Transaction txn = Transaction.currentTxn(); + txn.start(); + try { + range = _sNwIpRangeDao.acquireInLockTable(rangeId); + if (range == null) { + String msg = "Unable to acquire lock on storage network ip range id=" + rangeId + ", delete failed"; + s_logger.warn(msg); + throw new CloudRuntimeException(msg); + } + /* + * entries in op_dc_storage_network_ip_address will be deleted automatically due to + * fk_storage_ip_address__range_id constraint key + */ + _sNwIpRangeDao.remove(rangeId); + } finally { + if (range != null) { + _sNwIpRangeDao.releaseFromLockTable(rangeId); + } + } + txn.commit(); + } + + @Override public List<StorageNetworkIpRange> listIpRange(ListStorageNetworkIpRangeCmd cmd) { - Long rangeId = cmd.getRangeId(); - Long podId = cmd.getPodId(); - Long zoneId = cmd.getZoneId(); - - List result = null; - if (rangeId != null) { - result = _sNwIpRangeDao.listByRangeId(rangeId); - } else if (podId != null) { - result = _sNwIpRangeDao.listByPodId(podId); - } else if (zoneId != null) { - result = _sNwIpRangeDao.listByDataCenterId(zoneId); - } else { - result = _sNwIpRangeDao.listAll(); - } - - return (List<StorageNetworkIpRange>)result; - } - - @Override - public void releaseIpAddress(String ip) { - _sNwIpDao.releaseIpAddress(ip); - } - - @Override + Long rangeId = cmd.getRangeId(); + Long podId = cmd.getPodId(); + Long zoneId = cmd.getZoneId(); + + List result = null; + if (rangeId != null) { + result = _sNwIpRangeDao.listByRangeId(rangeId); + } else if (podId != null) { + result = _sNwIpRangeDao.listByPodId(podId); + } else if (zoneId != null) { + result = _sNwIpRangeDao.listByDataCenterId(zoneId); + } else { + result = _sNwIpRangeDao.listAll(); + } + + return result; + } + + @Override + public void releaseIpAddress(String ip) { + _sNwIpDao.releaseIpAddress(ip); + } + + @Override public StorageNetworkIpAddressVO acquireIpAddress(long podId) { - List<StorageNetworkIpRangeVO> ranges = _sNwIpRangeDao.listByPodId(podId); - for (StorageNetworkIpRangeVO r : ranges) { - try { - r = _sNwIpRangeDao.acquireInLockTable(r.getId()); - if (r == null) { - String msg = "Unable to acquire lock on storage network ip range id=" + r.getId() + ", delete failed"; - s_logger.warn(msg); - throw new CloudRuntimeException(msg); - } - - StorageNetworkIpAddressVO ip = _sNwIpDao.takeIpAddress(r.getId()); - if (ip != null) { - return ip; - } - } finally { - if (r != null) { - _sNwIpRangeDao.releaseFromLockTable(r.getId()); - } - } - } - - return null; + List<StorageNetworkIpRangeVO> ranges = _sNwIpRangeDao.listByPodId(podId); + for (StorageNetworkIpRangeVO r : ranges) { + try { + r = _sNwIpRangeDao.acquireInLockTable(r.getId()); + if (r == null) { + String msg = "Unable to acquire lock on storage network ip range id=" + r.getId() + ", delete failed"; + s_logger.warn(msg); + throw new CloudRuntimeException(msg); + } + + StorageNetworkIpAddressVO ip = _sNwIpDao.takeIpAddress(r.getId()); + if (ip != null) { + return ip; + } + } finally { + if (r != null) { + _sNwIpRangeDao.releaseFromLockTable(r.getId()); + } + } + } + + return null; } - @Override + @Override public boolean isStorageIpRangeAvailable(long zoneId) { - SearchCriteriaService<StorageNetworkIpRangeVO, StorageNetworkIpRangeVO> sc = SearchCriteria2.create(StorageNetworkIpRangeVO.class); - sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, zoneId); - List<StorageNetworkIpRangeVO> entries = sc.list(); - return entries.size() > 0; + SearchCriteriaService<StorageNetworkIpRangeVO, StorageNetworkIpRangeVO> sc = SearchCriteria2.create(StorageNetworkIpRangeVO.class); + sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, zoneId); + List<StorageNetworkIpRangeVO> entries = sc.list(); + return entries.size() > 0; } - @Override + @Override public List<SecondaryStorageVmVO> getSSVMWithNoStorageNetwork(long zoneId) { - List<SecondaryStorageVmVO> ssvms = _ssvmDao.getSecStorageVmListInStates(null, zoneId, VirtualMachine.State.Starting, VirtualMachine.State.Running, VirtualMachine.State.Stopping); - return ssvms; + List<SecondaryStorageVmVO> ssvms = _ssvmDao.getSecStorageVmListInStates(null, zoneId, VirtualMachine.State.Starting, VirtualMachine.State.Running, VirtualMachine.State.Stopping); + return ssvms; } - @Override + @Override public boolean isAnyStorageIpInUseInZone(long zoneId) { - List<StorageNetworkIpRangeVO> ranges = _sNwIpRangeDao.listByDataCenterId(zoneId); - for (StorageNetworkIpRangeVO r : ranges) { - if (_sNwIpDao.countInUseIpByRangeId(r.getId()) > 0) { - return true; - } - } - return false; + List<StorageNetworkIpRangeVO> ranges = _sNwIpRangeDao.listByDataCenterId(zoneId); + for (StorageNetworkIpRangeVO r : ranges) { + if (_sNwIpDao.countInUseIpByRangeId(r.getId()) > 0) { + return true; + } + } + return false; } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/14bd345f/server/src/com/cloud/network/dao/NetworkDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/dao/NetworkDaoImpl.java b/server/src/com/cloud/network/dao/NetworkDaoImpl.java index c6440c3..c3559b6 100644 --- a/server/src/com/cloud/network/dao/NetworkDaoImpl.java +++ b/server/src/com/cloud/network/dao/NetworkDaoImpl.java @@ -22,10 +22,11 @@ import java.util.Random; import javax.annotation.PostConstruct; import javax.ejb.Local; -import javax.inject.Inject; import javax.persistence.TableGenerator; import org.apache.cloudstack.acl.ControlledEntity.ACLType; +import org.springframework.stereotype.Component; + import com.cloud.network.Network; import com.cloud.network.Network.GuestType; import com.cloud.network.Network.Provider; @@ -61,21 +62,21 @@ import com.cloud.utils.net.NetUtils; @Local(value = NetworkDao.class) @DB(txn = false) public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements NetworkDao { - final SearchBuilder<NetworkVO> AllFieldsSearch; - final SearchBuilder<NetworkVO> AccountSearch; - final SearchBuilder<NetworkVO> RelatedConfigSearch; - final SearchBuilder<NetworkVO> AccountNetworkSearch; - final SearchBuilder<NetworkVO> ZoneBroadcastUriSearch; - final SearchBuilder<NetworkVO> ZoneSecurityGroupSearch; - final GenericSearchBuilder<NetworkVO, Integer> CountBy; - final SearchBuilder<NetworkVO> PhysicalNetworkSearch; - final SearchBuilder<NetworkVO> SecurityGroupSearch; - final GenericSearchBuilder<NetworkVO, Long> NetworksRegularUserCanCreateSearch; - private final GenericSearchBuilder<NetworkVO, Integer> NetworksCount; - final SearchBuilder<NetworkVO> SourceNATSearch; - final GenericSearchBuilder<NetworkVO, Long> CountByZoneAndURI; - final GenericSearchBuilder<NetworkVO, Long> VpcNetworksCount; - final SearchBuilder<NetworkVO> OfferingAccountNetworkSearch; + SearchBuilder<NetworkVO> AllFieldsSearch; + SearchBuilder<NetworkVO> AccountSearch; + SearchBuilder<NetworkVO> RelatedConfigSearch; + SearchBuilder<NetworkVO> AccountNetworkSearch; + SearchBuilder<NetworkVO> ZoneBroadcastUriSearch; + SearchBuilder<NetworkVO> ZoneSecurityGroupSearch; + GenericSearchBuilder<NetworkVO, Integer> CountBy; + SearchBuilder<NetworkVO> PhysicalNetworkSearch; + SearchBuilder<NetworkVO> SecurityGroupSearch; + GenericSearchBuilder<NetworkVO, Long> NetworksRegularUserCanCreateSearch; + GenericSearchBuilder<NetworkVO, Integer> NetworksCount; + SearchBuilder<NetworkVO> SourceNATSearch; + GenericSearchBuilder<NetworkVO, Long> CountByZoneAndURI; + GenericSearchBuilder<NetworkVO, Long> VpcNetworksCount; + SearchBuilder<NetworkVO> OfferingAccountNetworkSearch; ResourceTagsDaoImpl _tagsDao = ComponentLocator.inject(ResourceTagsDaoImpl.class); NetworkAccountDaoImpl _accountsDao = ComponentLocator.inject(NetworkAccountDaoImpl.class); @@ -85,13 +86,13 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N NetworkOfferingDaoImpl _ntwkOffDao = ComponentLocator.inject(NetworkOfferingDaoImpl.class); - final TableGenerator _tgMacAddress; + TableGenerator _tgMacAddress; Random _rand = new Random(System.currentTimeMillis()); long _prefix = 0x2; public NetworkDaoImpl() { } - + @PostConstruct protected void init() { AllFieldsSearch = createSearchBuilder(); @@ -150,7 +151,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N CountByZoneAndURI.and("guestType", CountByZoneAndURI.entity().getGuestType(), Op.EQ); CountByZoneAndURI.done(); - + ZoneSecurityGroupSearch = createSearchBuilder(); ZoneSecurityGroupSearch.and("dataCenterId", ZoneSecurityGroupSearch.entity().getDataCenterId(), Op.EQ); SearchBuilder<NetworkServiceMapVO> offJoin = _ntwkSvcMap.createSearchBuilder(); @@ -174,12 +175,12 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N join3.and("service", join3.entity().getService(), Op.EQ); SecurityGroupSearch.join("services", join3, SecurityGroupSearch.entity().getId(), join3.entity().getNetworkId(), JoinBuilder.JoinType.INNER); SecurityGroupSearch.done(); - + NetworksCount = createSearchBuilder(Integer.class); NetworksCount.select(null, Func.COUNT, NetworksCount.entity().getId()); NetworksCount.and("networkOfferingId", NetworksCount.entity().getNetworkOfferingId(), SearchCriteria.Op.EQ); NetworksCount.done(); - + NetworksRegularUserCanCreateSearch = createSearchBuilder(Long.class); NetworksRegularUserCanCreateSearch.and("aclType", NetworksRegularUserCanCreateSearch.entity().getAclType(), Op.EQ); NetworksRegularUserCanCreateSearch.select(null, Func.COUNT, NetworksRegularUserCanCreateSearch.entity().getId()); @@ -193,7 +194,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N NetworksRegularUserCanCreateSearch.done(); _tgMacAddress = _tgs.get("macAddress"); - + SourceNATSearch = createSearchBuilder(); SourceNATSearch.and("account", SourceNATSearch.entity().getAccountId(), Op.EQ); SourceNATSearch.and("datacenter", SourceNATSearch.entity().getDataCenterId(), Op.EQ); @@ -202,7 +203,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N join6.and("service", join6.entity().getService(), Op.EQ); SourceNATSearch.join("services", join6, SourceNATSearch.entity().getId(), join6.entity().getNetworkId(), JoinBuilder.JoinType.INNER); SourceNATSearch.done(); - + VpcNetworksCount = createSearchBuilder(Long.class); VpcNetworksCount.and("vpcId", VpcNetworksCount.entity().getVpcId(), Op.EQ); VpcNetworksCount.select(null, Func.COUNT, VpcNetworksCount.entity().getId()); @@ -229,11 +230,11 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N if (type != null) { sc.setParameters("guestType", type); } - + if (isSystem != null) { sc.setJoinParameters("offerings", "isSystem", isSystem); } - + return listBy(sc, null); } @@ -360,7 +361,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N SearchCriteria<Long> sc = CountByZoneAndURI.create(); sc.setParameters("dataCenterId", zoneId); sc.setParameters("broadcastUri", broadcastUri); - + return customSearch(sc, null).get(0); } @@ -409,7 +410,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N public void clearCheckForGc(long networkId) { _opDao.clearCheckForGc(networkId); } - + @Override public void setCheckForGc(long networkId) { _opDao.setCheckForGc(networkId); @@ -431,8 +432,8 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N NetworkDomainVO domain = new NetworkDomainVO(networkId, domainId, subdomainAccess); _domainsDao.persist(domain); } - - + + @Override public int getNetworkCountByVpcId(long vpcId) { SearchCriteria<Integer> sc = CountBy.create(); @@ -440,7 +441,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N List<Integer> results = customSearch(sc, null); return results.get(0); } - + @Override public List<NetworkVO> listSecurityGroupEnabledNetworks() { @@ -500,7 +501,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N return listBy(sc, null); } - + @Override public int getNetworkCountByNetworkOffId(long networkOfferingId) { SearchCriteria<Integer> sc = NetworksCount.create(); @@ -508,7 +509,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N List<Integer> count = customSearch(sc, null); return count.get(0); } - + @Override public long countNetworksUserCanCreate(long ownerId) { SearchCriteria<Long> sc = NetworksRegularUserCanCreateSearch.create(); @@ -517,8 +518,8 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N sc.setJoinParameters("ntwkOff", "specifyVlan", false); return customSearch(sc, null).get(0); } - - + + @Override public List<NetworkVO> listSourceNATEnabledNetworks(long accountId, long dataCenterId, Network.GuestType type) { SearchCriteria<NetworkVO> sc = SourceNATSearch.create(); @@ -528,7 +529,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N sc.setJoinParameters("services", "service", Service.SourceNat.getName()); return listBy(sc); } - + @Override public List<NetworkVO> listByVpc(long vpcId) { SearchCriteria<NetworkVO> sc = AllFieldsSearch.create(); @@ -549,6 +550,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N return findOneBy(sc); } + @Override @DB public boolean remove(Long id) { Transaction txn = Transaction.currentTxn(); @@ -585,7 +587,7 @@ public class NetworkDaoImpl extends GenericDaoBase<NetworkVO, Long> implements N public List<NetworkVO> listRedundantNetworks() { SearchCriteria<NetworkVO> sc = AllFieldsSearch.create(); sc.setJoinParameters("offerings", "isRedundant", true); - + return listBy(sc, null); } } http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/14bd345f/server/src/com/cloud/network/rules/FirewallRuleVO.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/rules/FirewallRuleVO.java b/server/src/com/cloud/network/rules/FirewallRuleVO.java index 99140c3..8ef5067 100644 --- a/server/src/com/cloud/network/rules/FirewallRuleVO.java +++ b/server/src/com/cloud/network/rules/FirewallRuleVO.java @@ -35,18 +35,16 @@ import javax.persistence.InheritanceType; import javax.persistence.Table; import javax.persistence.Transient; -import org.apache.cloudstack.api.Identity; -import com.cloud.network.dao.FirewallRulesCidrsDaoImpl; +import com.cloud.network.dao.FirewallRulesCidrsDao; import com.cloud.utils.db.GenericDao; import com.cloud.utils.net.NetUtils; -import org.apache.cloudstack.api.InternalIdentity; @Entity @Table(name="firewall_rules") @Inheritance(strategy=InheritanceType.JOINED) @DiscriminatorColumn(name="purpose", discriminatorType=DiscriminatorType.STRING, length=32) public class FirewallRuleVO implements FirewallRule { - protected final FirewallRulesCidrsDaoImpl _firewallRulesCidrsDao = ComponentLocator.inject(FirewallRulesCidrsDaoImpl.class); + @Inject protected FirewallRulesCidrsDao _firewallRulesCidrsDao; @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
