Martin Mucha has uploaded a new change for review. Change subject: restapi: added reference DataCenter-->MacPool ......................................................................
restapi: added reference DataCenter-->MacPool * added link to used MacPool * altered "*StoragePoolCommand" classes to work with MacPools. Change-Id: If75e2d632ca47c274ad303ce9833d1e536521071 Bug-Url: https://bugzilla.redhat.com/1078844 Signed-off-by: Martin Mucha <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetMacPoolsByDataCenterIdQuery.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java M backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DataCenterResource.java A backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DcRelatedMacPoolsResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterResource.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCentersResource.java A backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDcRelatedMacPoolsResource.java M backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java 10 files changed, 318 insertions(+), 15 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/07/28707/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetMacPoolsByDataCenterIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetMacPoolsByDataCenterIdQuery.java new file mode 100644 index 0000000..f78c3eb --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetMacPoolsByDataCenterIdQuery.java @@ -0,0 +1,20 @@ +package org.ovirt.engine.core.bll; + +import org.ovirt.engine.core.common.businessentities.MacPool; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.dao.MacPoolDAO; + +public class GetMacPoolsByDataCenterIdQuery extends QueriesCommandBase<IdQueryParameters> { + + public GetMacPoolsByDataCenterIdQuery(IdQueryParameters parameters) { + super(parameters); + } + + @Override + protected void executeQueryCommand() { + final MacPoolDAO macPoolDao = getDbFacade().getMacPoolDao(); + MacPool macPool = macPoolDao.getByDataCenterId(getParameters().getId()); + + getQueryReturnValue().setReturnValue(macPool); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java index 203f02d..76caf4a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/AddEmptyStoragePoolCommand.java @@ -6,11 +6,13 @@ import org.ovirt.engine.core.bll.AddVdsGroupCommand; import org.ovirt.engine.core.bll.MultiLevelAdministrationHandler; import org.ovirt.engine.core.bll.network.cluster.NetworkHelper; +import org.ovirt.engine.core.bll.network.macpoolmanager.MacPoolPerDC; import org.ovirt.engine.core.bll.utils.PermissionSubject; import org.ovirt.engine.core.bll.utils.VersionSupport; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.StoragePoolManagementParameter; +import org.ovirt.engine.core.common.businessentities.MacPool; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.businessentities.StoragePoolStatus; import org.ovirt.engine.core.common.businessentities.network.Network; @@ -27,18 +29,36 @@ } protected void addStoragePoolToDb() { - getStoragePool().setId(Guid.newGuid()); - getStoragePool().setStatus(StoragePoolStatus.Uninitialized); - getStoragePoolDAO().save(getStoragePool()); + final StoragePool storagePool = getStoragePool(); + storagePool.setId(Guid.newGuid()); + storagePool.setStatus(StoragePoolStatus.Uninitialized); + + final CreateMacPoolOrUseShared createOrGetMacPool = new CreateMacPoolOrUseShared(storagePool.getMacPoolId()); + if (!createOrGetMacPool.calculateMacPoolId()) { + //handles situation when db content changed since canDoAction(). + //getReturnValue().setFault() is probably ignored and does not pass message to rest client. + throw new IllegalArgumentException("Wrong MacPool definition"); + } + + storagePool.setMacPoolId(createOrGetMacPool.getMacPoolIdToUse()); + getStoragePoolDAO().save(storagePool); } @Override protected void executeCommand() { setDataCenterDetails(); addStoragePoolToDb(); + getReturnValue().setActionReturnValue(getStoragePool().getId()); addDefaultNetworks(); setSucceeded(true); + } + + @Override + public void rollback() { + super.rollback(); + //try to remove pool if it was by any chance created before error/rollback occurred. + MacPoolPerDC.getInstance().removePool(getStoragePool().getId()); } private void setDataCenterDetails() { @@ -76,18 +96,28 @@ protected boolean canDoAction() { boolean result = true; // set version to latest supported version if not given - if (getStoragePool().getcompatibility_version().isNotValid()) { - getStoragePool().setcompatibility_version(Version.getLast()); + final StoragePool storagePool = getStoragePool(); + + if (storagePool.getcompatibility_version().isNotValid()) { + storagePool.setcompatibility_version(Version.getLast()); } - if (result && !(isStoragePoolUnique(getStoragePool().getName()))) { + if (!(isStoragePoolUnique(storagePool.getName()))) { result = false; addCanDoActionMessage(VdcBllMessages.ACTION_TYPE_FAILED_STORAGE_POOL_NAME_ALREADY_EXIST); } else if (!checkStoragePoolNameLengthValid()) { result = false; - } else if (!VersionSupport.checkVersionSupported(getStoragePool().getcompatibility_version())) { + } else if (!VersionSupport.checkVersionSupported(storagePool.getcompatibility_version())) { addCanDoActionMessage(VersionSupport.getUnsupportedVersionMessage()); result = false; } + + final CreateMacPoolOrUseShared createOrGetMacPool = new CreateMacPoolOrUseShared(storagePool.getMacPoolId()); + final boolean validRequest = createOrGetMacPool.calculateMacPoolId(); + if (!validRequest) { + result = false; + addCanDoActionMessage(createOrGetMacPool.getFaultMessage()); + } + return result; } @@ -98,4 +128,48 @@ getActionType().getActionGroup())); } + private class CreateMacPoolOrUseShared { + private final Guid requestedMacPoolId; + private Guid macPoolIdToUse; + private VdcBllMessages faultMessage; + + public CreateMacPoolOrUseShared(Guid requestedMacPoolId) { + this.requestedMacPoolId = requestedMacPoolId; + } + + public boolean calculateMacPoolId() { + if (requestedMacPoolId == null) { + macPoolIdToUse = getMacPoolDAO().getDefaultPool().getId(); + } else { + checkAndGetSharedMacPoolId(); + } + + return faultMessage == null; + } + + protected void illegalArgumentFault(VdcBllMessages faultMessage) { + this.faultMessage = faultMessage; + } + + private void checkAndGetSharedMacPoolId() { + //check whether requested pool is shared one. + final MacPool requestedMacPool = getMacPoolDAO().get(requestedMacPoolId); + if (!requestedMacPool.isShared()) { + final int dcUsageCount = getMacPoolDAO().getDCUsageCount(requestedMacPoolId); + if (dcUsageCount != 0) { + illegalArgumentFault(VdcBllMessages.MAC_POOL_TRYING_TO_REUSE_NON_SHARED_POOL); + } + } else { + macPoolIdToUse = requestedMacPoolId; + } + } + + public Guid getMacPoolIdToUse() { + return macPoolIdToUse; + } + + public VdcBllMessages getFaultMessage() { + return faultMessage; + } + } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java index 9c24021..88d99d4 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveStoragePoolCommand.java @@ -18,6 +18,7 @@ import org.ovirt.engine.core.common.action.RemoveStorageDomainParameters; import org.ovirt.engine.core.common.action.StoragePoolParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.businessentities.MacPool; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainStatus; import org.ovirt.engine.core.common.businessentities.StorageDomainType; @@ -49,6 +50,7 @@ public class RemoveStoragePoolCommand<T extends StoragePoolParametersBase> extends StorageHandlingCommandBase<T> { private Map<String, Pair<String, String>> sharedLocks; + private MacPool oldMacPool; public RemoveStoragePoolCommand(T parameters) { super(parameters); @@ -85,11 +87,28 @@ } } - getStoragePoolDAO().remove(getStoragePool().getId()); - MacPoolPerDC.getInstance().poolForDataCenter(getStoragePoolId()).freeMacs(macsToRemove); + final Guid storagePoolId = getStoragePoolId(); + final Guid oldMacPoolId = getStoragePool().getMacPoolId(); + oldMacPool = getMacPoolDAO().get(oldMacPoolId); + + if (!oldMacPool.isShared()) { + getMacPoolDAO().remove(oldMacPoolId); + } + + getStoragePoolDAO().remove(storagePoolId); + MacPoolPerDC.getInstance().poolForDataCenter(storagePoolId).freeMacs(macsToRemove); + MacPoolPerDC.getInstance().removePool(storagePoolId); + setSucceeded(true); } + @Override + public void rollback() { + super.rollback(); + //try to remove pool if it was by any chance created before error/rollback occurred. + MacPoolPerDC.getInstance().createPool(oldMacPool); + } + private void removeNetworks() { final List<Network> networks = getNetworkDAO().getAllForDataCenter(getStoragePoolId()); for (Network network : networks) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java index ce5f971..109959c 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/UpdateStoragePoolCommand.java @@ -6,12 +6,14 @@ import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute; import org.ovirt.engine.core.bll.RenamedEntityInfoProvider; +import org.ovirt.engine.core.bll.network.macpoolmanager.MacPoolPerDC; import org.ovirt.engine.core.bll.utils.VersionSupport; import org.ovirt.engine.core.bll.validator.NetworkValidator; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.FeatureSupported; import org.ovirt.engine.core.common.VdcObjectType; import org.ovirt.engine.core.common.action.StoragePoolManagementParameter; +import org.ovirt.engine.core.common.businessentities.MacPool; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; import org.ovirt.engine.core.common.businessentities.StorageDomainType; @@ -32,6 +34,7 @@ import org.ovirt.engine.core.dal.dbbroker.DbFacade; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector; import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogableBase; +import org.ovirt.engine.core.dao.MacPoolDAO; import org.ovirt.engine.core.dao.StorageDomainStaticDAO; import org.ovirt.engine.core.dao.network.NetworkDao; import org.ovirt.engine.core.utils.NetworkUtils; @@ -41,6 +44,9 @@ @NonTransactiveCommandAttribute public class UpdateStoragePoolCommand<T extends StoragePoolManagementParameter> extends StoragePoolManagementCommandBase<T> implements RenamedEntityInfoProvider{ + + private MacPool macPoolForRollback; + public UpdateStoragePoolCommand(T parameters) { super(parameters); } @@ -61,21 +67,41 @@ @Override protected void executeCommand() { updateQuotaCache(); + final StoragePool storagePool = getStoragePool(); if (_oldStoragePool.getStatus() == StoragePoolStatus.Up) { - if (!StringUtils.equals(_oldStoragePool.getName(), getStoragePool().getName())) { + if (!StringUtils.equals(_oldStoragePool.getName(), storagePool.getName())) { runVdsCommand(VDSCommandType.SetStoragePoolDescription, - new SetStoragePoolDescriptionVDSCommandParameters( - getStoragePool().getId(), getStoragePool().getName()) + new SetStoragePoolDescriptionVDSCommandParameters( + storagePool.getId(), storagePool.getName()) ); } } - copyUnchangedStoragePoolProperties(getStoragePool(), _oldStoragePool); + copyUnchangedStoragePoolProperties(storagePool, _oldStoragePool); - getStoragePoolDAO().updatePartial(getStoragePool()); + final UpdateMacPool updateMacPool = + new UpdateMacPool(storagePool.getMacPoolId(), _oldStoragePool.getMacPoolId(), false); + if (!updateMacPool.updateMacPool()) { + //handles situation when db content changed since canDoAction(). + //getReturnValue().setFault() is probably ignored and does not pass message to rest client. + throw new IllegalArgumentException(); + } else { + getStoragePool().setMacPoolId(updateMacPool.getMacPoolIdToUse()); + } + + getStoragePoolDAO().updatePartial(storagePool); updateStoragePoolFormatType(); + + macPoolForRollback = getMacPoolDAO().get(_oldStoragePool.getMacPoolId()); setSucceeded(true); + } + + @Override + public void rollback() { + super.rollback(); + //try to remove pool if it was by any chance created before error/rollback occurred. + MacPoolPerDC.getInstance().modifyPool(macPoolForRollback); } private void updateQuotaCache() { @@ -216,6 +242,17 @@ if (returnValue) { returnValue = validate(validator.isNotLocalfsWithDefaultCluster()); } + + final UpdateMacPool updateMacPool = new UpdateMacPool( + getStoragePool().getMacPoolId(), + _oldStoragePool.getMacPoolId(), + true); + + if (!updateMacPool.updateMacPool()) { + addCanDoActionMessage(updateMacPool.getFaultMessage()); + returnValue = false; + } + return returnValue; } @@ -296,4 +333,69 @@ public void setEntityId(AuditLogableBase logable) { logable.setStoragePoolId(_oldStoragePool.getId()); } + + private class UpdateMacPool { + private Guid requestedMacPoolId; + private final boolean druRun; + private VdcBllMessages faultMessage; + private Guid macPoolIdToUse; + private Guid oldMacPoolId; + + public UpdateMacPool(Guid requestedMacPoolId, Guid oldMacPoolId, boolean druRun) { + this.oldMacPoolId = oldMacPoolId; + this.requestedMacPoolId = requestedMacPoolId; + this.druRun = druRun; + } + + public boolean updateMacPool() { + if (requestedMacPoolId == null) { +// do nothing, do not change pool. + } else { + checkIfRequestedPoolIsUsable(requestedMacPoolId); + } + + return faultMessage == null; + } + + protected void illegalArgumentFault(VdcBllMessages faultMessage) { + this.faultMessage = faultMessage; + } + + private void checkIfRequestedPoolIsUsable(Guid macPoolId) { + //check whether it's shared pool, use instead of current one. + MacPool newMacPoolQueriedFromDb = getMacPoolDAO().get(macPoolId); + boolean isShared = newMacPoolQueriedFromDb.isShared(); + if (!isShared) { + final int dcUsageCount = getMacPoolDAO().getDCUsageCount(macPoolId); + if (dcUsageCount != 0) { + illegalArgumentFault(VdcBllMessages.MAC_POOL_TRYING_TO_REUSE_NON_SHARED_POOL); + return; + } + } + + macPoolIdToUse = macPoolId; + + if (!druRun) { + removeFormerNonSharedMacPool(); + MacPoolPerDC.getInstance().modifyPool(newMacPoolQueriedFromDb); + } + } + + private void removeFormerNonSharedMacPool() { + MacPoolDAO macPoolDao = getMacPoolDAO(); + //if former pool was not shared delete it from db. + MacPool oldMacPool = macPoolDao.get(oldMacPoolId); + if (!oldMacPool.isShared()) { + macPoolDao.remove(oldMacPool.getId()); + } + } + + public Guid getMacPoolIdToUse() { + return macPoolIdToUse; + } + + public VdcBllMessages getFaultMessage() { + return faultMessage; + } + } } diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DataCenterResource.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DataCenterResource.java index bb0970d..bff855c 100644 --- a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DataCenterResource.java +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DataCenterResource.java @@ -38,4 +38,7 @@ @Path("quotas") public QuotasResource getQuotasResource(); + + @Path("macpools") + public DcRelatedMacPoolsResource getMacPoolsResource(); } diff --git a/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DcRelatedMacPoolsResource.java b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DcRelatedMacPoolsResource.java new file mode 100644 index 0000000..986e5b2 --- /dev/null +++ b/backend/manager/modules/restapi/interface/definition/src/main/java/org/ovirt/engine/api/resource/DcRelatedMacPoolsResource.java @@ -0,0 +1,19 @@ +package org.ovirt.engine.api.resource; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; + +import org.jboss.resteasy.annotations.providers.jaxb.Formatted; +import org.ovirt.engine.api.model.MacPools; +import org.ovirt.engine.api.restapi.resource.MacPoolResource; + +public interface DcRelatedMacPoolsResource { + + @GET + @Formatted + public MacPools list(); + + @Path("{id}") + public MacPoolResource getMacPoolSubResource(@PathParam("id") String id); +} diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterResource.java index 8f31e97..93831cb 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCenterResource.java @@ -11,6 +11,7 @@ import org.ovirt.engine.api.resource.AttachedStorageDomainsResource; import org.ovirt.engine.api.resource.ClustersResource; import org.ovirt.engine.api.resource.DataCenterResource; +import org.ovirt.engine.api.resource.DcRelatedMacPoolsResource; import org.ovirt.engine.api.resource.NetworksResource; import org.ovirt.engine.api.resource.QuotasResource; import org.ovirt.engine.api.restapi.utils.MalformedIdException; @@ -77,6 +78,11 @@ return inject(new BackendQuotasResource(id)); } + @Override + public DcRelatedMacPoolsResource getMacPoolsResource() { + return inject(new BackendDcRelatedMacPoolsResource(id)); + } + public BackendDataCentersResource getParent() { return parent; } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCentersResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCentersResource.java index a13a56b..9aed326 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCentersResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDataCentersResource.java @@ -24,7 +24,7 @@ public class BackendDataCentersResource extends AbstractBackendCollectionResource<DataCenter, StoragePool> implements DataCentersResource { - static final String[] SUB_COLLECTIONS = {"storagedomains", "clusters", "networks", "permissions", "quotas"}; + static final String[] SUB_COLLECTIONS = {"storagedomains", "clusters", "networks", "permissions", "quotas", "macpools"}; public BackendDataCentersResource() { super(DataCenter.class, StoragePool.class, SUB_COLLECTIONS); diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDcRelatedMacPoolsResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDcRelatedMacPoolsResource.java new file mode 100644 index 0000000..137a305 --- /dev/null +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendDcRelatedMacPoolsResource.java @@ -0,0 +1,56 @@ +package org.ovirt.engine.api.restapi.resource; + +import java.util.List; + +import javax.ws.rs.core.Response; + +import org.ovirt.engine.api.model.MacPool; +import org.ovirt.engine.api.model.MacPools; +import org.ovirt.engine.api.resource.DcRelatedMacPoolsResource; +import org.ovirt.engine.core.common.action.IdParameters; +import org.ovirt.engine.core.common.action.VdcActionType; +import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.common.queries.VdcQueryType; +import org.ovirt.engine.core.compat.Guid; + +public class BackendDcRelatedMacPoolsResource extends AbstractBackendCollectionResource<MacPool, org.ovirt.engine.core.common.businessentities.MacPool> implements DcRelatedMacPoolsResource { + private final Guid dataCenterId; + + public BackendDcRelatedMacPoolsResource(String dataCenterId) { + super(MacPool.class, org.ovirt.engine.core.common.businessentities.MacPool.class); + this.dataCenterId = asGuid(dataCenterId); + } + + @Override + protected MacPool doPopulate(MacPool model, org.ovirt.engine.core.common.businessentities.MacPool entity) { + return model; + } + + @Override + protected Response performRemove(String id) { + return performAction(VdcActionType.RemoveMacPool, new IdParameters(asGuid(id))); + } + + @Override + public MacPools list() { + IdQueryParameters params = new IdQueryParameters(dataCenterId); + return mapCollection(getBackendCollection(VdcQueryType.GetMacPoolsByDataCenterId, params)); + } + + private MacPools mapCollection(List<org.ovirt.engine.core.common.businessentities.MacPool> entities) { + MacPools collection = new MacPools(); + + if (entities != null) { + for (org.ovirt.engine.core.common.businessentities.MacPool entity : entities) { + collection.getMacPools().add(addLinks(populate(map(entity), entity))); + } + } + + return collection; + } + + @Override + public MacPoolResource getMacPoolSubResource(String id) { + return inject(new BackendMacPoolResource(id)); + } +} diff --git a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java index 3169a6c..31d806b 100644 --- a/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java +++ b/backend/manager/modules/restapi/types/src/main/java/org/ovirt/engine/api/restapi/types/DataCenterMapper.java @@ -47,6 +47,8 @@ entity.setcompatibility_version(new org.ovirt.engine.core.compat.Version(model.getVersion().getMajor(), model.getVersion().getMinor())); } + + entity.setMacPoolId(GuidUtils.asGuidNullable(model.getMacPoolId())); return entity; } @@ -77,6 +79,8 @@ model.setStorageFormat(storageFormat.value()); } } + + model.setMacPoolId(entity.getMacPoolId() == null ? null : entity.getMacPoolId().toString()); return model; } -- To view, visit http://gerrit.ovirt.org/28707 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If75e2d632ca47c274ad303ce9833d1e536521071 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Mucha <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
