mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Moved the DB layer code into framework-db and change only the necessary projects to refer to it. Cut down on the dependencies introduced with all the code in utils.
This commit is contained in:
parent
81b121bbe0
commit
f5e5b39c9b
21
api/pom.xml
21
api/pom.xml
@ -36,10 +36,27 @@
|
||||
<artifactId>gson</artifactId>
|
||||
<version>${cs.gson.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-framework-db</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<defaultGoal>install</defaultGoal>
|
||||
<sourceDirectory>src</sourceDirectory>
|
||||
<testSourceDirectory>test</testSourceDirectory>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>test-jar</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
||||
@ -18,7 +18,7 @@ package org.apache.cloudstack.api.response;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.api.BaseResponse;
|
||||
@ -26,7 +26,6 @@ import org.apache.cloudstack.api.EntityReference;
|
||||
|
||||
import com.cloud.offering.ServiceOffering;
|
||||
import com.cloud.serializer.Param;
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
|
||||
@EntityReference(value = ServiceOffering.class)
|
||||
public class ServiceOfferingResponse extends BaseResponse {
|
||||
@ -141,7 +140,7 @@ public class ServiceOfferingResponse extends BaseResponse {
|
||||
}
|
||||
|
||||
public void setSystemVmType(String vmtype) {
|
||||
this.vm_type = vmtype;
|
||||
vm_type = vmtype;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -16,19 +16,8 @@
|
||||
// under the License.
|
||||
package org.apache.cloudstack.usage;
|
||||
|
||||
import org.apache.cloudstack.api.InternalIdentity;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Table;
|
||||
import javax.persistence.Temporal;
|
||||
import javax.persistence.TemporalType;
|
||||
|
||||
public interface Usage {
|
||||
|
||||
public long getId();
|
||||
@ -39,7 +28,7 @@ public interface Usage {
|
||||
|
||||
public Long getDomainId();
|
||||
|
||||
public String getDescription();
|
||||
public String getDescription();
|
||||
|
||||
public String getUsageDisplay();
|
||||
|
||||
|
||||
@ -289,6 +289,11 @@
|
||||
<artifactId>javassist</artifactId>
|
||||
<version>3.9.0.GA</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-framework-db</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<resources>
|
||||
|
||||
@ -25,6 +25,11 @@
|
||||
<artifactId>cloud-utils</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-framework-db</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-api</artifactId>
|
||||
|
||||
@ -43,6 +43,11 @@
|
||||
<artifactId>cloud-engine-components-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-framework-db</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<defaultGoal>install</defaultGoal>
|
||||
|
||||
@ -64,7 +64,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-utils</artifactId>
|
||||
<artifactId>cloud-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>test-jar</type>
|
||||
<scope>test</scope>
|
||||
|
||||
@ -24,5 +24,10 @@
|
||||
<artifactId>cloud-utils</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-framework-db</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
@ -19,10 +19,34 @@
|
||||
<relativePath>../pom.xml</relativePath>
|
||||
</parent>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>javax.ejb</groupId>
|
||||
<artifactId>ejb-api</artifactId>
|
||||
<version>${cs.ejb.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.persistence</groupId>
|
||||
<artifactId>javax.persistence</artifactId>
|
||||
<version>${cs.jpa.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-utils</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<configuration>
|
||||
<excludes>
|
||||
<exclude>com/cloud/utils/testcase/*TestCase*</exclude>
|
||||
<exclude>com/cloud/utils/db/*Test*</exclude>
|
||||
</excludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
||||
@ -23,8 +23,6 @@ import java.util.Map;
|
||||
import javax.ejb.Local;
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import net.sf.ehcache.Cache;
|
||||
|
||||
import com.cloud.utils.component.ManagerBase;
|
||||
@ -35,7 +33,6 @@ import com.cloud.utils.db.GenericSearchBuilder;
|
||||
import com.cloud.utils.db.SearchBuilder;
|
||||
import com.cloud.utils.db.SearchCriteria;
|
||||
|
||||
@Component
|
||||
@Local(value=EntityManager.class)
|
||||
@SuppressWarnings("unchecked")
|
||||
public class EntityManagerImpl extends ManagerBase implements EntityManager {
|
||||
@ -48,7 +45,6 @@ public class EntityManagerImpl extends ManagerBase implements EntityManager {
|
||||
return dao.findById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K extends Serializable> T findByIdIncludingRemoved(Class<T> entityType, K id) {
|
||||
GenericDao<? extends T, K> dao = (GenericDao<? extends T, K>)GenericDaoBase.getDao(entityType);
|
||||
return dao.findByIdIncludingRemoved(id);
|
||||
@ -61,7 +57,6 @@ public class EntityManagerImpl extends ManagerBase implements EntityManager {
|
||||
return dao.findByUuid(uuid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T findByUuidIncludingRemoved(Class<T> entityType, String uuid) {
|
||||
// Finds and returns a unique VO using uuid, null if entity not found in db
|
||||
GenericDao<? extends T, String> dao = (GenericDao<? extends T, String>)GenericDaoBase.getDao(entityType);
|
||||
@ -79,19 +74,16 @@ public class EntityManagerImpl extends ManagerBase implements EntityManager {
|
||||
return dao.listAll();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T persist(T t) {
|
||||
GenericDao<T, ? extends Serializable> dao = (GenericDao<T, ? extends Serializable>)GenericDaoBase.getDao((Class<T>)t.getClass());
|
||||
return dao.persist(t);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> SearchBuilder<T> createSearchBuilder(Class<T> entityType) {
|
||||
GenericDao<T, ? extends Serializable> dao = (GenericDao<T, ? extends Serializable>)GenericDaoBase.getDao(entityType);
|
||||
return dao.createSearchBuilder();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K> GenericSearchBuilder<T, K> createGenericSearchBuilder(Class<T> entityType, Class<K> resultType) {
|
||||
GenericDao<T, ? extends Serializable> dao = (GenericDao<T, ? extends Serializable>)GenericDaoBase.getDao(entityType);
|
||||
return dao.createSearchBuilder((Class<K>)resultType.getClass());
|
||||
@ -100,22 +92,6 @@ public class EntityManagerImpl extends ManagerBase implements EntityManager {
|
||||
@Override
|
||||
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
|
||||
_name = name;
|
||||
/*
|
||||
String threadId = Long.toString(Thread.currentThread().getId());
|
||||
|
||||
CacheManager cm = CacheManager.create();
|
||||
|
||||
_cache = cm.getCache(threadId);
|
||||
|
||||
if (_cache == null) {
|
||||
int maxElements = NumbersUtil.parseInt((String)params.get("cache.size"), 100);
|
||||
int live = NumbersUtil.parseInt((String)params.get("cache.time.to.live"), 300);
|
||||
int idle = NumbersUtil.parseInt((String)params.get("cache.time.to.idle"), 300);
|
||||
|
||||
_cache = new Cache(threadId, maxElements, false, live == -1, live == -1 ? Integer.MAX_VALUE : live, idle);
|
||||
cm.addCache(_cache);
|
||||
|
||||
}*/
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -135,7 +111,6 @@ public class EntityManagerImpl extends ManagerBase implements EntityManager {
|
||||
return _name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T, K> List<K> search(Class<T> entityType, SearchCriteria<K> sc) {
|
||||
GenericDao<T, ? extends Serializable> dao = (GenericDao<T, ? extends Serializable>)GenericDaoBase.getDao(entityType);
|
||||
return dao.customSearch(sc, null);
|
||||
@ -215,7 +215,7 @@ public interface GenericDao<T, ID extends Serializable> {
|
||||
|
||||
/**
|
||||
* Remove based on the search criteria. This will delete if the VO object
|
||||
* does not have a REMOVED column.
|
||||
* does not have a REMOVED column.
|
||||
* @param sc search criteria to match
|
||||
* @return rows removed.
|
||||
*/
|
||||
@ -49,7 +49,7 @@ public class SearchCriteria2<T, K> implements SearchCriteriaService<T, K>, Metho
|
||||
protected SelectType _selectType;
|
||||
protected Class<T> _entityBeanType;
|
||||
|
||||
protected SearchCriteria2(T entity, Class<K> resultType, final Map<String, Attribute> attrs, GenericDao<? extends Serializable, ? extends Serializable> dao) {
|
||||
protected SearchCriteria2(T entity, Class<K> resultType, final Map<String, Attribute> attrs, GenericDao<? extends Serializable, ? extends Serializable> dao) {
|
||||
_entityBeanType = (Class<T>)entity.getClass();
|
||||
_dao = dao;
|
||||
_resultType = resultType;
|
||||
@ -125,7 +125,7 @@ public class SearchCriteria2<T, K> implements SearchCriteriaService<T, K>, Metho
|
||||
if (isSelectAll()) {
|
||||
return (List<K>)_dao.search(sc1, null);
|
||||
} else {
|
||||
return (List<K>)_dao.customSearch(sc1, null);
|
||||
return _dao.customSearch(sc1, null);
|
||||
}
|
||||
}
|
||||
|
||||
@ -135,7 +135,7 @@ public class SearchCriteria2<T, K> implements SearchCriteriaService<T, K>, Metho
|
||||
|
||||
@Override
|
||||
public T getEntity() {
|
||||
return (T) _entity;
|
||||
return _entity;
|
||||
}
|
||||
|
||||
private SearchCriteria<K> createSearchCriteria() {
|
||||
@ -22,10 +22,7 @@ import org.junit.runner.RunWith;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
import junit.framework.Assert;
|
||||
|
||||
import com.cloud.utils.Profiler;
|
||||
import com.cloud.utils.testcase.Log4jEnabledTestCase;
|
||||
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ -42,6 +39,7 @@ public class GlobalLockTest {
|
||||
timeoutSeconds = timeout;
|
||||
jobDuration = duration;
|
||||
}
|
||||
@Override
|
||||
public void run() {
|
||||
boolean locked = false;
|
||||
try {
|
||||
@ -64,15 +64,5 @@
|
||||
<artifactId>wsdl4j</artifactId>
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.10</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.mockito</groupId>
|
||||
<artifactId>mockito-all</artifactId>
|
||||
<version>1.9.5</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
||||
@ -77,7 +77,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-utils</artifactId>
|
||||
<artifactId>cloud-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>test-jar</type>
|
||||
<scope>test</scope>
|
||||
|
||||
@ -92,7 +92,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-utils</artifactId>
|
||||
<artifactId>cloud-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>test-jar</type>
|
||||
<scope>test</scope>
|
||||
|
||||
@ -352,7 +352,7 @@ public class ApiDispatcher {
|
||||
for (Class<?> entity : entities) {
|
||||
// For backward compatibility, we search within removed entities and let service layer deal
|
||||
// with removed ones, return empty response or error
|
||||
Object objVO = s_instance._entityMgr.findByUuidIncludingRemoved(entity, uuid);
|
||||
Object objVO = s_instance._entityMgr.findByUuid(entity, uuid);
|
||||
if (objVO == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -31,6 +31,9 @@ import java.util.TimeZone;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import org.apache.cloudstack.acl.ControlledEntity;
|
||||
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
|
||||
import org.apache.cloudstack.affinity.AffinityGroup;
|
||||
@ -70,6 +73,7 @@ import org.apache.cloudstack.api.response.HostForMigrationResponse;
|
||||
import org.apache.cloudstack.api.response.HostResponse;
|
||||
import org.apache.cloudstack.api.response.HypervisorCapabilitiesResponse;
|
||||
import org.apache.cloudstack.api.response.IPAddressResponse;
|
||||
import org.apache.cloudstack.api.response.ImageStoreResponse;
|
||||
import org.apache.cloudstack.api.response.InstanceGroupResponse;
|
||||
import org.apache.cloudstack.api.response.InternalLoadBalancerElementResponse;
|
||||
import org.apache.cloudstack.api.response.IpForwardingRuleResponse;
|
||||
@ -86,7 +90,6 @@ import org.apache.cloudstack.api.response.NetworkOfferingResponse;
|
||||
import org.apache.cloudstack.api.response.NetworkResponse;
|
||||
import org.apache.cloudstack.api.response.NicResponse;
|
||||
import org.apache.cloudstack.api.response.NicSecondaryIpResponse;
|
||||
import org.apache.cloudstack.api.response.ImageStoreResponse;
|
||||
import org.apache.cloudstack.api.response.PhysicalNetworkResponse;
|
||||
import org.apache.cloudstack.api.response.PodResponse;
|
||||
import org.apache.cloudstack.api.response.PortableIpRangeResponse;
|
||||
@ -144,9 +147,6 @@ import org.apache.cloudstack.usage.Usage;
|
||||
import org.apache.cloudstack.usage.UsageService;
|
||||
import org.apache.cloudstack.usage.UsageTypes;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import com.cloud.api.query.ViewResponseHelper;
|
||||
import com.cloud.api.query.vo.AccountJoinVO;
|
||||
import com.cloud.api.query.vo.AsyncJobJoinVO;
|
||||
@ -301,9 +301,9 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
public final Logger s_logger = Logger.getLogger(ApiResponseHelper.class);
|
||||
private static final DecimalFormat s_percentFormat = new DecimalFormat("##.##");
|
||||
@Inject
|
||||
private EntityManager _entityMgr = null;
|
||||
private final EntityManager _entityMgr = null;
|
||||
@Inject
|
||||
private UsageService _usageSvc = null;
|
||||
private final UsageService _usageSvc = null;
|
||||
@Inject NetworkModel _ntwkModel;
|
||||
|
||||
@Override
|
||||
@ -831,7 +831,7 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
capacityResponse.setCapacityType(capacity.getCapacityType());
|
||||
capacityResponse.setCapacityUsed(capacity.getUsedCapacity());
|
||||
if (capacity.getCapacityType() == Capacity.CAPACITY_TYPE_CPU) {
|
||||
capacityResponse.setCapacityTotal(new Long((long) (capacity.getTotalCapacity())));
|
||||
capacityResponse.setCapacityTotal(new Long((capacity.getTotalCapacity())));
|
||||
} else if (capacity.getCapacityType() == Capacity.CAPACITY_TYPE_STORAGE_ALLOCATED) {
|
||||
List<SummedCapacity> c = ApiDBUtils.findNonSharedStorageForClusterPodZone(null, pod.getId(), null);
|
||||
capacityResponse.setCapacityTotal(capacity.getTotalCapacity() - c.get(0).getTotalCapacity());
|
||||
@ -1409,7 +1409,7 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
templateResponse.setOsTypeName("");
|
||||
}
|
||||
|
||||
final Account account = ApiDBUtils.findAccountByIdIncludingRemoved(iso.getAccountId());
|
||||
final Account account = ApiDBUtils.findAccountById(iso.getAccountId());
|
||||
populateAccount(templateResponse, account.getId());
|
||||
populateDomain(templateResponse, account.getDomainId());
|
||||
|
||||
@ -1466,7 +1466,7 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
isoResponse.setOsTypeId("-1");
|
||||
isoResponse.setOsTypeName("");
|
||||
}
|
||||
Account account = ApiDBUtils.findAccountByIdIncludingRemoved(iso.getAccountId());
|
||||
Account account = ApiDBUtils.findAccountById(iso.getAccountId());
|
||||
populateAccount(isoResponse, account.getId());
|
||||
populateDomain(isoResponse, account.getDomainId());
|
||||
boolean isAdmin = false;
|
||||
@ -1521,7 +1521,7 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
isoResponse.setOsTypeName("");
|
||||
}
|
||||
|
||||
Account account = ApiDBUtils.findAccountByIdIncludingRemoved(iso.getAccountId());
|
||||
Account account = ApiDBUtils.findAccountById(iso.getAccountId());
|
||||
populateAccount(isoResponse, account.getId());
|
||||
populateDomain(isoResponse, account.getDomainId());
|
||||
|
||||
@ -1578,7 +1578,7 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
isoResponses.add(isoResponse);
|
||||
return isoResponses;
|
||||
}
|
||||
*/
|
||||
*/
|
||||
|
||||
@Override
|
||||
public SecurityGroupResponse createSecurityGroupResponse(SecurityGroup group) {
|
||||
@ -1909,7 +1909,7 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
regularAccounts.add(accountName);
|
||||
} else {
|
||||
// convert account to projectIds
|
||||
Project project = ApiDBUtils.findProjectByProjectAccountIdIncludingRemoved(account.getId());
|
||||
Project project = ApiDBUtils.findProjectByProjectAccountId(account.getId());
|
||||
|
||||
if (project.getUuid() != null && !project.getUuid().isEmpty())
|
||||
projectIds.add(project.getUuid());
|
||||
@ -2211,7 +2211,7 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
}
|
||||
|
||||
// populate network offering information
|
||||
NetworkOffering networkOffering = (NetworkOffering) ApiDBUtils.findNetworkOfferingById(network.getNetworkOfferingId());
|
||||
NetworkOffering networkOffering = ApiDBUtils.findNetworkOfferingById(network.getNetworkOfferingId());
|
||||
if (networkOffering != null) {
|
||||
response.setNetworkOfferingId(networkOffering.getUuid());
|
||||
response.setNetworkOfferingName(networkOffering.getName());
|
||||
@ -2455,11 +2455,11 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
// ControlledEntity id to uuid conversion are all done.
|
||||
// currently code is scattered in
|
||||
private void populateOwner(ControlledEntityResponse response, ControlledEntity object) {
|
||||
Account account = ApiDBUtils.findAccountByIdIncludingRemoved(object.getAccountId());
|
||||
Account account = ApiDBUtils.findAccountById(object.getAccountId());
|
||||
|
||||
if (account.getType() == Account.ACCOUNT_TYPE_PROJECT) {
|
||||
// find the project
|
||||
Project project = ApiDBUtils.findProjectByProjectAccountIdIncludingRemoved(account.getId());
|
||||
Project project = ApiDBUtils.findProjectByProjectAccountId(account.getId());
|
||||
response.setProjectId(project.getUuid());
|
||||
response.setProjectName(project.getName());
|
||||
} else {
|
||||
@ -2485,10 +2485,10 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
}
|
||||
|
||||
private void populateAccount(ControlledEntityResponse response, long accountId) {
|
||||
Account account = ApiDBUtils.findAccountByIdIncludingRemoved(accountId);
|
||||
Account account = ApiDBUtils.findAccountById(accountId);
|
||||
if (account.getType() == Account.ACCOUNT_TYPE_PROJECT) {
|
||||
// find the project
|
||||
Project project = ApiDBUtils.findProjectByProjectAccountIdIncludingRemoved(account.getId());
|
||||
Project project = ApiDBUtils.findProjectByProjectAccountId(account.getId());
|
||||
response.setProjectId(project.getUuid());
|
||||
response.setProjectName(project.getName());
|
||||
response.setAccountName(account.getAccountName());
|
||||
@ -3273,10 +3273,10 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
public UsageRecordResponse createUsageResponse(Usage usageRecord) {
|
||||
UsageRecordResponse usageRecResponse = new UsageRecordResponse();
|
||||
|
||||
Account account = ApiDBUtils.findAccountByIdIncludingRemoved(usageRecord.getAccountId());
|
||||
Account account = ApiDBUtils.findAccountById(usageRecord.getAccountId());
|
||||
if (account.getType() == Account.ACCOUNT_TYPE_PROJECT) {
|
||||
//find the project
|
||||
Project project = ApiDBUtils.findProjectByProjectAccountIdIncludingRemoved(account.getId());
|
||||
Project project = ApiDBUtils.findProjectByProjectAccountId(account.getId());
|
||||
usageRecResponse.setProjectId(project.getUuid());
|
||||
usageRecResponse.setProjectName(project.getName());
|
||||
} else {
|
||||
@ -3299,7 +3299,7 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
usageRecResponse.setUsage(usageRecord.getUsageDisplay());
|
||||
usageRecResponse.setUsageType(usageRecord.getUsageType());
|
||||
if (usageRecord.getVmInstanceId() != null) {
|
||||
VMInstanceVO vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, usageRecord.getVmInstanceId());
|
||||
VMInstanceVO vm = _entityMgr.findById(VMInstanceVO.class, usageRecord.getVmInstanceId());
|
||||
usageRecResponse.setVirtualMachineId(vm.getUuid());
|
||||
}
|
||||
usageRecResponse.setVmName(usageRecord.getVmName());
|
||||
@ -3311,11 +3311,11 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
}
|
||||
|
||||
if(usageRecord.getUsageType() == UsageTypes.RUNNING_VM || usageRecord.getUsageType() == UsageTypes.ALLOCATED_VM){
|
||||
ServiceOfferingVO svcOffering = _entityMgr.findByIdIncludingRemoved(ServiceOfferingVO.class, usageRecord.getOfferingId().toString());
|
||||
ServiceOfferingVO svcOffering = _entityMgr.findById(ServiceOfferingVO.class, usageRecord.getOfferingId().toString());
|
||||
//Service Offering Id
|
||||
usageRecResponse.setOfferingId(svcOffering.getUuid());
|
||||
//VM Instance ID
|
||||
VMInstanceVO vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, usageRecord.getUsageId().toString());
|
||||
VMInstanceVO vm = _entityMgr.findById(VMInstanceVO.class, usageRecord.getUsageId().toString());
|
||||
usageRecResponse.setUsageId(vm.getUuid());
|
||||
//Hypervisor Type
|
||||
usageRecResponse.setType(usageRecord.getType());
|
||||
@ -3326,7 +3326,7 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
//isSystem
|
||||
usageRecResponse.setSystem((usageRecord.getSize() == 1)?true:false);
|
||||
//IP Address ID
|
||||
IPAddressVO ip = _entityMgr.findByIdIncludingRemoved(IPAddressVO.class, usageRecord.getUsageId().toString());
|
||||
IPAddressVO ip = _entityMgr.findById(IPAddressVO.class, usageRecord.getUsageId().toString());
|
||||
usageRecResponse.setUsageId(ip.getUuid());
|
||||
|
||||
} else if(usageRecord.getUsageType() == UsageTypes.NETWORK_BYTES_SENT || usageRecord.getUsageType() == UsageTypes.NETWORK_BYTES_RECEIVED){
|
||||
@ -3334,15 +3334,15 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
usageRecResponse.setType(usageRecord.getType());
|
||||
if(usageRecord.getType().equals("DomainRouter")){
|
||||
//Domain Router Id
|
||||
VMInstanceVO vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, usageRecord.getUsageId().toString());
|
||||
VMInstanceVO vm = _entityMgr.findById(VMInstanceVO.class, usageRecord.getUsageId().toString());
|
||||
usageRecResponse.setUsageId(vm.getUuid());
|
||||
} else {
|
||||
//External Device Host Id
|
||||
HostVO host = _entityMgr.findByIdIncludingRemoved(HostVO.class, usageRecord.getUsageId().toString());
|
||||
HostVO host = _entityMgr.findById(HostVO.class, usageRecord.getUsageId().toString());
|
||||
usageRecResponse.setUsageId(host.getUuid());
|
||||
}
|
||||
//Network ID
|
||||
NetworkVO network = _entityMgr.findByIdIncludingRemoved(NetworkVO.class, usageRecord.getNetworkId().toString());
|
||||
NetworkVO network = _entityMgr.findById(NetworkVO.class, usageRecord.getNetworkId().toString());
|
||||
usageRecResponse.setNetworkId(network.getUuid());
|
||||
|
||||
} else if(usageRecord.getUsageType() == UsageTypes.VM_DISK_IO_READ || usageRecord.getUsageType() == UsageTypes.VM_DISK_IO_WRITE ||
|
||||
@ -3350,27 +3350,27 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
//Device Type
|
||||
usageRecResponse.setType(usageRecord.getType());
|
||||
//VM Instance Id
|
||||
VMInstanceVO vm = _entityMgr.findByIdIncludingRemoved(VMInstanceVO.class, usageRecord.getVmInstanceId().toString());
|
||||
VMInstanceVO vm = _entityMgr.findById(VMInstanceVO.class, usageRecord.getVmInstanceId().toString());
|
||||
usageRecResponse.setVirtualMachineId(vm.getUuid());
|
||||
//Volume ID
|
||||
VolumeVO volume = _entityMgr.findByIdIncludingRemoved(VolumeVO.class, usageRecord.getUsageId().toString());
|
||||
VolumeVO volume = _entityMgr.findById(VolumeVO.class, usageRecord.getUsageId().toString());
|
||||
usageRecResponse.setUsageId(volume.getUuid());
|
||||
|
||||
} else if(usageRecord.getUsageType() == UsageTypes.VOLUME){
|
||||
//Volume ID
|
||||
VolumeVO volume = _entityMgr.findByIdIncludingRemoved(VolumeVO.class, usageRecord.getUsageId().toString());
|
||||
VolumeVO volume = _entityMgr.findById(VolumeVO.class, usageRecord.getUsageId().toString());
|
||||
usageRecResponse.setUsageId(volume.getUuid());
|
||||
//Volume Size
|
||||
usageRecResponse.setSize(usageRecord.getSize());
|
||||
//Disk Offering Id
|
||||
if(usageRecord.getOfferingId() != null){
|
||||
DiskOfferingVO diskOff = _entityMgr.findByIdIncludingRemoved(DiskOfferingVO.class, usageRecord.getOfferingId().toString());
|
||||
DiskOfferingVO diskOff = _entityMgr.findById(DiskOfferingVO.class, usageRecord.getOfferingId().toString());
|
||||
usageRecResponse.setOfferingId(diskOff.getUuid());
|
||||
}
|
||||
|
||||
} else if(usageRecord.getUsageType() == UsageTypes.TEMPLATE || usageRecord.getUsageType() == UsageTypes.ISO){
|
||||
//Template/ISO ID
|
||||
VMTemplateVO tmpl = _entityMgr.findByIdIncludingRemoved(VMTemplateVO.class, usageRecord.getUsageId().toString());
|
||||
VMTemplateVO tmpl = _entityMgr.findById(VMTemplateVO.class, usageRecord.getUsageId().toString());
|
||||
usageRecResponse.setUsageId(tmpl.getUuid());
|
||||
//Template/ISO Size
|
||||
usageRecResponse.setSize(usageRecord.getSize());
|
||||
@ -3382,35 +3382,35 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
|
||||
} else if(usageRecord.getUsageType() == UsageTypes.SNAPSHOT){
|
||||
//Snapshot ID
|
||||
SnapshotVO snap = _entityMgr.findByIdIncludingRemoved(SnapshotVO.class, usageRecord.getUsageId().toString());
|
||||
SnapshotVO snap = _entityMgr.findById(SnapshotVO.class, usageRecord.getUsageId().toString());
|
||||
usageRecResponse.setUsageId(snap.getUuid());
|
||||
//Snapshot Size
|
||||
usageRecResponse.setSize(usageRecord.getSize());
|
||||
|
||||
} else if(usageRecord.getUsageType() == UsageTypes.LOAD_BALANCER_POLICY){
|
||||
//Load Balancer Policy ID
|
||||
LoadBalancerVO lb = _entityMgr.findByIdIncludingRemoved(LoadBalancerVO.class, usageRecord.getUsageId().toString());
|
||||
LoadBalancerVO lb = _entityMgr.findById(LoadBalancerVO.class, usageRecord.getUsageId().toString());
|
||||
usageRecResponse.setUsageId(lb.getUuid());
|
||||
} else if(usageRecord.getUsageType() == UsageTypes.PORT_FORWARDING_RULE){
|
||||
//Port Forwarding Rule ID
|
||||
PortForwardingRuleVO pf = _entityMgr.findByIdIncludingRemoved(PortForwardingRuleVO.class, usageRecord.getUsageId().toString());
|
||||
PortForwardingRuleVO pf = _entityMgr.findById(PortForwardingRuleVO.class, usageRecord.getUsageId().toString());
|
||||
usageRecResponse.setUsageId(pf.getUuid());
|
||||
|
||||
} else if(usageRecord.getUsageType() == UsageTypes.NETWORK_OFFERING){
|
||||
//Network Offering Id
|
||||
NetworkOfferingVO netOff = _entityMgr.findByIdIncludingRemoved(NetworkOfferingVO.class, usageRecord.getOfferingId().toString());
|
||||
NetworkOfferingVO netOff = _entityMgr.findById(NetworkOfferingVO.class, usageRecord.getOfferingId().toString());
|
||||
usageRecResponse.setOfferingId(netOff.getUuid());
|
||||
//is Default
|
||||
usageRecResponse.setDefault((usageRecord.getUsageId() == 1)? true:false);
|
||||
|
||||
} else if(usageRecord.getUsageType() == UsageTypes.VPN_USERS){
|
||||
//VPN User ID
|
||||
VpnUserVO vpnUser = _entityMgr.findByIdIncludingRemoved(VpnUserVO.class, usageRecord.getUsageId().toString());
|
||||
VpnUserVO vpnUser = _entityMgr.findById(VpnUserVO.class, usageRecord.getUsageId().toString());
|
||||
usageRecResponse.setUsageId(vpnUser.getUuid());
|
||||
|
||||
} else if(usageRecord.getUsageType() == UsageTypes.SECURITY_GROUP){
|
||||
//Security Group Id
|
||||
SecurityGroupVO sg = _entityMgr.findByIdIncludingRemoved(SecurityGroupVO.class, usageRecord.getUsageId().toString());
|
||||
SecurityGroupVO sg = _entityMgr.findById(SecurityGroupVO.class, usageRecord.getUsageId().toString());
|
||||
usageRecResponse.setUsageId(sg.getUuid());
|
||||
}
|
||||
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-utils</artifactId>
|
||||
<artifactId>cloud-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<type>test-jar</type>
|
||||
<scope>test</scope>
|
||||
|
||||
@ -82,11 +82,6 @@
|
||||
<artifactId>jsch</artifactId>
|
||||
<version>${cs.jsch.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.persistence</groupId>
|
||||
<artifactId>javax.persistence</artifactId>
|
||||
<version>${cs.jpa.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.jasypt</groupId>
|
||||
<artifactId>jasypt</artifactId>
|
||||
|
||||
@ -1,57 +0,0 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.utils;
|
||||
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
|
||||
public class AnnotationHelper extends Object {
|
||||
// This class contains routines to help query annotation elements of objects.
|
||||
|
||||
public static final Logger s_logger = Logger.getLogger(AnnotationHelper.class.getName());
|
||||
|
||||
public static String getTableName(Object proxyObj) {
|
||||
// The cglib class is generated by cglib during runtime.
|
||||
|
||||
Class<?> curClass = proxyObj.getClass();
|
||||
if (curClass == null) {
|
||||
s_logger.trace("Could not retrieve class information for proxy object");
|
||||
return null;
|
||||
}
|
||||
|
||||
while (curClass.getSuperclass() != null && curClass.getSuperclass().getName() != "java.lang.Object") {
|
||||
curClass = curClass.getSuperclass();
|
||||
}
|
||||
// At this point, curClass is the root base class of proxyObj's class, and curClass is not java.lang.Object.
|
||||
|
||||
Table tabObj = curClass.getAnnotation(Table.class);
|
||||
|
||||
if (tabObj == null) {
|
||||
s_logger.trace(curClass + "does not have a Table annotation");
|
||||
return null;
|
||||
}
|
||||
|
||||
return tabObj.name();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -34,16 +34,6 @@ public interface EntityManager {
|
||||
*/
|
||||
public <T, K extends Serializable> T findById(Class<T> entityType, K id);
|
||||
|
||||
/**
|
||||
* Finds an entity by its id including removed.
|
||||
* @param <T> class of the entity you're trying to find.
|
||||
* @param <K> class of the id that the entity uses.
|
||||
* @param entityType Type of the entity.
|
||||
* @param id id value
|
||||
* @return T if found; null if not.
|
||||
*/
|
||||
public <T, K extends Serializable> T findByIdIncludingRemoved(Class<T> entityType, K id);
|
||||
|
||||
/**
|
||||
* Finds a unique entity by uuid string
|
||||
* @param <T> entity class
|
||||
@ -53,15 +43,6 @@ public interface EntityManager {
|
||||
*/
|
||||
public <T> T findByUuid(Class<T> entityType, String uuid);
|
||||
|
||||
/**
|
||||
* Finds a unique entity by uuid string
|
||||
* @param <T> entity class
|
||||
* @param entityType type of entity you're looking for.
|
||||
* @param uuid the unique id
|
||||
* @return T if found, null if not.
|
||||
*/
|
||||
public <T> T findByUuidIncludingRemoved(Class<T> entityType, String uuid);
|
||||
|
||||
/**
|
||||
* Finds an entity by external id which is always String
|
||||
* @param <T> entity class
|
||||
@ -79,20 +60,6 @@ public interface EntityManager {
|
||||
*/
|
||||
public <T> List<? extends T> list(Class<T> entityType);
|
||||
|
||||
/**
|
||||
* Persists the entity.
|
||||
* @param <T> entity class
|
||||
* @param t entity
|
||||
* @return persisted entity. Only use this after persisting.
|
||||
*/
|
||||
public <T> T persist(T t);
|
||||
|
||||
public <T> SearchBuilder<T> createSearchBuilder(Class<T> entityType);
|
||||
|
||||
public <T, K> GenericSearchBuilder<T, K> createGenericSearchBuilder(Class<T> entityType, Class<K> resultType);
|
||||
|
||||
public <T, K> List<K> search(Class<T> entityType, SearchCriteria<K> sc);
|
||||
|
||||
public <T, K extends Serializable> void remove(Class<T> entityType, K id);
|
||||
}
|
||||
|
||||
|
||||
@ -1,104 +0,0 @@
|
||||
// Licensed to the Apache Software Foundation (ASF) under one
|
||||
// or more contributor license agreements. See the NOTICE file
|
||||
// distributed with this work for additional information
|
||||
// regarding copyright ownership. The ASF licenses this file
|
||||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// the License. You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.utils.log;
|
||||
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.log4j.*;
|
||||
|
||||
import com.cloud.utils.component.ComponentContext;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import org.apache.log4j.spi.RootLogger;
|
||||
import org.apache.log4j.spi.ThrowableRenderer;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
||||
import java.io.CharArrayWriter;
|
||||
import java.io.Writer;
|
||||
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations="classpath:/testContext.xml")
|
||||
public class CglibThrowableRendererTest extends TestCase {
|
||||
static Logger another = Logger.getLogger("TEST");
|
||||
|
||||
private final static Logger s_logger = Logger.getLogger(CglibThrowableRendererTest.class);
|
||||
public static class TestClass {
|
||||
|
||||
public TestClass() {
|
||||
}
|
||||
|
||||
@DB
|
||||
public void exception1() {
|
||||
throw new IllegalArgumentException("What a bad exception");
|
||||
}
|
||||
public void exception2() {
|
||||
try {
|
||||
exception1();
|
||||
} catch (Exception e) {
|
||||
throw new CloudRuntimeException("exception2", e);
|
||||
}
|
||||
}
|
||||
@DB
|
||||
public void exception() {
|
||||
try {
|
||||
exception2();
|
||||
} catch (Exception e) {
|
||||
throw new CloudRuntimeException("exception", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Logger getAlternateLogger(Writer writer, ThrowableRenderer renderer) {
|
||||
Hierarchy hierarchy = new Hierarchy(new RootLogger(Level.INFO));
|
||||
if (renderer != null) {
|
||||
hierarchy.setThrowableRenderer(renderer);
|
||||
}
|
||||
Logger alternateRoot = hierarchy.getRootLogger();
|
||||
alternateRoot.addAppender(new WriterAppender(new SimpleLayout(), writer));
|
||||
return alternateRoot;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testException() {
|
||||
Writer w = new CharArrayWriter();
|
||||
Logger alt = getAlternateLogger(w, null);
|
||||
|
||||
TestClass test = new TestClass();
|
||||
try {
|
||||
test.exception();
|
||||
} catch (Exception e) {
|
||||
alt.warn("exception caught", e);
|
||||
}
|
||||
// first check that we actually have some call traces containing "<generated>"
|
||||
// assertTrue(w.toString().contains("<generated>"));
|
||||
|
||||
w = new CharArrayWriter();
|
||||
alt = getAlternateLogger(w, new CglibThrowableRenderer());
|
||||
|
||||
try {
|
||||
test.exception();
|
||||
} catch (Exception e) {
|
||||
alt.warn("exception caught", e);
|
||||
}
|
||||
// then we check that CglibThrowableRenderer indeed remove those occurrences
|
||||
assertFalse(w.toString().contains("<generated>"));
|
||||
|
||||
}
|
||||
}
|
||||
@ -32,6 +32,11 @@
|
||||
<artifactId>cloud-utils</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-framework-db</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.cloudstack</groupId>
|
||||
<artifactId>cloud-api</artifactId>
|
||||
|
||||
@ -27,21 +27,6 @@ import java.util.Map;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.hypervisor.vmware.util.VmwareContext;
|
||||
import com.cloud.hypervisor.vmware.util.VmwareHelper;
|
||||
import com.cloud.network.Networks.BroadcastDomainType;
|
||||
import com.cloud.utils.ActionDelegate;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.NetconfHelper;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.PolicyMap;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.PortProfile;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.VsmCommand.BindingType;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.VsmCommand.OperationType;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.VsmCommand.PortProfileType;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.VsmCommand.SwitchPortMode;
|
||||
import com.cloud.utils.db.GlobalLock;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.net.NetUtils;
|
||||
import com.vmware.vim25.AlreadyExistsFaultMsg;
|
||||
import com.vmware.vim25.BoolPolicy;
|
||||
import com.vmware.vim25.DVPortSetting;
|
||||
@ -79,6 +64,22 @@ import com.vmware.vim25.VmwareDistributedVirtualSwitchPvlanSpec;
|
||||
import com.vmware.vim25.VmwareDistributedVirtualSwitchVlanIdSpec;
|
||||
import com.vmware.vim25.VmwareDistributedVirtualSwitchVlanSpec;
|
||||
|
||||
import com.cloud.hypervisor.vmware.util.VmwareContext;
|
||||
import com.cloud.hypervisor.vmware.util.VmwareHelper;
|
||||
import com.cloud.network.Networks.BroadcastDomainType;
|
||||
import com.cloud.utils.ActionDelegate;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.NetconfHelper;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.PolicyMap;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.PortProfile;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.VsmCommand.BindingType;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.VsmCommand.OperationType;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.VsmCommand.PortProfileType;
|
||||
import com.cloud.utils.cisco.n1kv.vsm.VsmCommand.SwitchPortMode;
|
||||
import com.cloud.utils.db.GlobalLock;
|
||||
import com.cloud.utils.exception.CloudRuntimeException;
|
||||
import com.cloud.utils.net.NetUtils;
|
||||
|
||||
public class HypervisorHostHelper {
|
||||
private static final Logger s_logger = Logger.getLogger(HypervisorHostHelper.class);
|
||||
private static final int DEFAULT_LOCK_TIMEOUT_SECONDS = 600;
|
||||
@ -446,29 +447,29 @@ public class HypervisorHostHelper {
|
||||
Integer vid = null;
|
||||
Integer spvlanid = null; // secondary pvlan id
|
||||
|
||||
/** This is the list of BroadcastDomainTypes we can actually
|
||||
/** This is the list of BroadcastDomainTypes we can actually
|
||||
* prepare networks for in this function.
|
||||
*/
|
||||
BroadcastDomainType[] supportedBroadcastTypes =
|
||||
new BroadcastDomainType[] { BroadcastDomainType.Lswitch,
|
||||
BroadcastDomainType.LinkLocal,
|
||||
BroadcastDomainType.Native,
|
||||
BroadcastDomainType[] supportedBroadcastTypes =
|
||||
new BroadcastDomainType[] { BroadcastDomainType.Lswitch,
|
||||
BroadcastDomainType.LinkLocal,
|
||||
BroadcastDomainType.Native,
|
||||
BroadcastDomainType.Pvlan,
|
||||
BroadcastDomainType.Storage,
|
||||
BroadcastDomainType.UnDecided,
|
||||
BroadcastDomainType.Vlan };
|
||||
|
||||
if (!Arrays.asList(supportedBroadcastTypes).contains(broadcastDomainType)) {
|
||||
throw new InvalidParameterException("BroadcastDomainType " + broadcastDomainType +
|
||||
throw new InvalidParameterException("BroadcastDomainType " + broadcastDomainType +
|
||||
" it not supported on a VMWare hypervisor at this time.");
|
||||
}
|
||||
|
||||
if (broadcastDomainType == BroadcastDomainType.Lswitch) {
|
||||
if (vSwitchType == VirtualSwitchType.NexusDistributedVirtualSwitch) {
|
||||
throw new InvalidParameterException("Nexus Distributed Virtualswitch is not supported with BroadcastDomainType " +
|
||||
throw new InvalidParameterException("Nexus Distributed Virtualswitch is not supported with BroadcastDomainType " +
|
||||
broadcastDomainType);
|
||||
}
|
||||
/**
|
||||
/**
|
||||
* Nicira NVP requires all vms to be connected to a single port-group.
|
||||
* A unique vlan needs to be set per port. This vlan is specific to
|
||||
* this implementation and has no reference to other vlans in CS
|
||||
@ -552,7 +553,7 @@ public class HypervisorHostHelper {
|
||||
}
|
||||
long averageBandwidth = 0L;
|
||||
if (networkRateMbps != null && networkRateMbps.intValue() > 0) {
|
||||
averageBandwidth = (long) (networkRateMbps.intValue() * 1024L * 1024L);
|
||||
averageBandwidth = networkRateMbps.intValue() * 1024L * 1024L;
|
||||
}
|
||||
// We chose 50% higher allocation than average bandwidth.
|
||||
// TODO(sateesh): Optionally let user specify the peak coefficient
|
||||
@ -601,7 +602,7 @@ public class HypervisorHostHelper {
|
||||
return vCenterApiVersion.compareTo(minVcenterApiVersionForFeature) >= 0 ? true : false;
|
||||
}
|
||||
|
||||
private static void setupPVlanPair(DistributedVirtualSwitchMO dvSwitchMo, ManagedObjectReference morDvSwitch,
|
||||
private static void setupPVlanPair(DistributedVirtualSwitchMO dvSwitchMo, ManagedObjectReference morDvSwitch,
|
||||
Integer vid, Integer spvlanid) throws Exception {
|
||||
Map<Integer, HypervisorHostHelper.PvlanType> vlanmap = dvSwitchMo.retrieveVlanPvlan(vid, spvlanid, morDvSwitch);
|
||||
if (!vlanmap.isEmpty()) {
|
||||
@ -664,7 +665,7 @@ public class HypervisorHostHelper {
|
||||
|
||||
}
|
||||
|
||||
private static void createPortGroup(String physicalNetwork, String networkName, Integer vid, Integer spvlanid, DatacenterMO dataCenterMo,
|
||||
private static void createPortGroup(String physicalNetwork, String networkName, Integer vid, Integer spvlanid, DatacenterMO dataCenterMo,
|
||||
DVSTrafficShapingPolicy shapingPolicy, DVSSecurityPolicy secPolicy, DistributedVirtualSwitchMO dvSwitchMo, int numPorts, boolean autoExpandSupported) throws Exception{
|
||||
VmwareDistributedVirtualSwitchVlanSpec vlanSpec = null;
|
||||
VmwareDistributedVirtualSwitchPvlanSpec pvlanSpec = null;
|
||||
@ -717,7 +718,7 @@ public class HypervisorHostHelper {
|
||||
throw new Exception(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static ManagedObjectReference waitForDvPortGroupReady(
|
||||
@ -806,12 +807,12 @@ public class HypervisorHostHelper {
|
||||
LongPolicy burstSize = new LongPolicy();
|
||||
|
||||
isEnabled.setValue(true);
|
||||
averageBandwidth.setValue((long) networkRateMbps.intValue() * 1024L * 1024L);
|
||||
averageBandwidth.setValue(networkRateMbps.intValue() * 1024L * 1024L);
|
||||
// We chose 50% higher allocation than average bandwidth.
|
||||
// TODO(sateesh): Also let user specify the peak coefficient
|
||||
peakBandwidth.setValue((long) (averageBandwidth.getValue() * 1.5));
|
||||
// TODO(sateesh): Also let user specify the burst coefficient
|
||||
burstSize.setValue((long) (5 * averageBandwidth.getValue() / 8));
|
||||
burstSize.setValue(5 * averageBandwidth.getValue() / 8);
|
||||
|
||||
shapingPolicy.setEnabled(isEnabled);
|
||||
shapingPolicy.setAverageBandwidth(averageBandwidth);
|
||||
@ -889,25 +890,25 @@ public class HypervisorHostHelper {
|
||||
String networkName;
|
||||
Integer vid = null;
|
||||
|
||||
/** This is the list of BroadcastDomainTypes we can actually
|
||||
/** This is the list of BroadcastDomainTypes we can actually
|
||||
* prepare networks for in this function.
|
||||
*/
|
||||
BroadcastDomainType[] supportedBroadcastTypes =
|
||||
new BroadcastDomainType[] { BroadcastDomainType.Lswitch,
|
||||
BroadcastDomainType.LinkLocal,
|
||||
BroadcastDomainType.Native,
|
||||
BroadcastDomainType[] supportedBroadcastTypes =
|
||||
new BroadcastDomainType[] { BroadcastDomainType.Lswitch,
|
||||
BroadcastDomainType.LinkLocal,
|
||||
BroadcastDomainType.Native,
|
||||
BroadcastDomainType.Pvlan,
|
||||
BroadcastDomainType.Storage,
|
||||
BroadcastDomainType.UnDecided,
|
||||
BroadcastDomainType.Vlan };
|
||||
|
||||
if (!Arrays.asList(supportedBroadcastTypes).contains(broadcastDomainType)) {
|
||||
throw new InvalidParameterException("BroadcastDomainType " + broadcastDomainType +
|
||||
throw new InvalidParameterException("BroadcastDomainType " + broadcastDomainType +
|
||||
" it not supported on a VMWare hypervisor at this time.");
|
||||
}
|
||||
|
||||
if (broadcastDomainType == BroadcastDomainType.Lswitch) {
|
||||
/**
|
||||
/**
|
||||
* Nicira NVP requires each vm to have its own port-group with a dedicated
|
||||
* vlan. We'll set the name of the pg to the uuid of the nic.
|
||||
*/
|
||||
@ -934,7 +935,7 @@ public class HypervisorHostHelper {
|
||||
if(networkRateMbps != null && networkRateMbps.intValue() > 0) {
|
||||
shapingPolicy = new HostNetworkTrafficShapingPolicy();
|
||||
shapingPolicy.setEnabled(true);
|
||||
shapingPolicy.setAverageBandwidth((long)networkRateMbps.intValue()*1024L*1024L);
|
||||
shapingPolicy.setAverageBandwidth(networkRateMbps.intValue()*1024L*1024L);
|
||||
|
||||
//
|
||||
// TODO : people may have different opinion on how to set the following
|
||||
@ -1062,10 +1063,10 @@ public class HypervisorHostHelper {
|
||||
}
|
||||
|
||||
private static void createNvpPortGroup(HostMO hostMo, HostVirtualSwitch vSwitch, String networkName, HostNetworkTrafficShapingPolicy shapingPolicy) throws Exception {
|
||||
/**
|
||||
/**
|
||||
* No portgroup created yet for this nic
|
||||
* We need to find an unused vlan and create the pg
|
||||
* The vlan is limited to this vSwitch and the NVP vAPP,
|
||||
* The vlan is limited to this vSwitch and the NVP vAPP,
|
||||
* so no relation to the other vlans in use in CloudStack.
|
||||
*/
|
||||
String vSwitchName = vSwitch.getName();
|
||||
@ -1096,7 +1097,7 @@ public class HypervisorHostHelper {
|
||||
secPolicy.setMacChanges(Boolean.FALSE);
|
||||
|
||||
// Create a portgroup with the uuid of the nic and the vlanid found above
|
||||
hostMo.createPortGroup(vSwitch, networkName, nvpVlanId, secPolicy, shapingPolicy);
|
||||
hostMo.createPortGroup(vSwitch, networkName, nvpVlanId, secPolicy, shapingPolicy);
|
||||
}
|
||||
|
||||
public static ManagedObjectReference waitForNetworkReady(HostMO hostMo,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user