package org.ovirt.engine.api.restapi.resource;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.model.BaseResource;
import org.ovirt.engine.api.model.DataCenter;
import org.ovirt.engine.api.model.DiskProfile;
import org.ovirt.engine.core.common.action.DiskProfileParameters;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.qos.QosBase;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.queries.VdcQueryType;
public abstract class AbstractBackendDiskProfileResource
extends AbstractBackendSubResource<DiskProfile, org.ovirt.engine.core.common.businessentities.profiles.DiskProfile> {
protected AbstractBackendDiskProfileResource(String id) {
super(id, DiskProfile.class,
org.ovirt.engine.core.common.businessentities.profiles.DiskProfile.class);
}
protected DiskProfile get() {
return performGet(VdcQueryType.GetDiskProfileById, new IdQueryParameters(guid));
}
@Override
protected DiskProfile addLinks(DiskProfile model,
Class<? extends BaseResource> suggestedParent,
String... subCollectionMembersToExclude) {
if (model.isSetQos() && model.getQos().isSetId()) {
QosBase qos = getEntity(QosBase.class,
VdcQueryType.GetQosById,
new IdQueryParameters(asGuid(model.getQos().getId())),
"qos");
model.getQos().setDataCenter(new DataCenter());
model.getQos().getDataCenter().setId(qos.getStoragePoolId().toString());
}
return super.addLinks(model, suggestedParent, subCollectionMembersToExclude);
}
private org.ovirt.engine.core.common.businessentities.profiles.DiskProfile getDiskProfile(String id) {
return getEntity(
org.ovirt.engine.core.common.businessentities.profiles.DiskProfile.class,
VdcQueryType.GetDiskProfileById,
new IdQueryParameters(asGuidOr404(id)),
"DiskProfile"
);
}
public Response remove() {
get();
org.ovirt.engine.core.common.businessentities.profiles.DiskProfile diskProfile = getDiskProfile(id);
return performAction(
VdcActionType.RemoveDiskProfile,
new DiskProfileParameters(diskProfile)
);
}
}