package org.ovirt.engine.api.restapi.resource;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.model.NetworkAttachment;
import org.ovirt.engine.api.resource.NetworkAttachmentResource;
import org.ovirt.engine.api.restapi.util.ParametersHelper;
import org.ovirt.engine.core.common.action.NetworkAttachmentParameters;
import org.ovirt.engine.core.common.action.RemoveNetworkAttachmentParameters;
import org.ovirt.engine.core.common.action.VdcActionParametersBase;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.queries.IdQueryParameters;
import org.ovirt.engine.core.common.queries.VdcQueryType;
public abstract class AbstractBackendNetworkAttachmentResource<T extends AbstractBackendNetworkAttachmentsResource>
extends AbstractBackendActionableResource<NetworkAttachment, org.ovirt.engine.core.common.businessentities.network.NetworkAttachment>
implements NetworkAttachmentResource {
private static final String OVERRIDE_CONFIGURATION = "override_configuration";
private T parent;
protected AbstractBackendNetworkAttachmentResource(String id, T parent) {
super(id, NetworkAttachment.class, org.ovirt.engine.core.common.businessentities.network.NetworkAttachment.class);
this.parent = parent;
}
@Override
public NetworkAttachment get() {
NetworkAttachment model =
performGet(VdcQueryType.GetNetworkAttachmentById, new IdQueryParameters(guid), parent.getParentClass());
model = parent.addParents(model);
return addLinks(model);
}
@Override
public NetworkAttachment update(NetworkAttachment resource) {
return performUpdate(resource,
new QueryIdResolver<>(VdcQueryType.GetNetworkAttachmentById, IdQueryParameters.class),
VdcActionType.UpdateNetworkAttachment,
new UpdateParametersProvider());
}
public T getParent() {
return parent;
}
@Override
protected NetworkAttachment addParents(NetworkAttachment model) {
return parent.addParents(model);
}
protected class UpdateParametersProvider
implements ParametersProvider<NetworkAttachment, org.ovirt.engine.core.common.businessentities.network.NetworkAttachment> {
@Override
public VdcActionParametersBase getParameters(NetworkAttachment incoming,
org.ovirt.engine.core.common.businessentities.network.NetworkAttachment entity) {
boolean overrideConfiguration = ParametersHelper.getBooleanParameter(httpHeaders, uriInfo, OVERRIDE_CONFIGURATION, true, false);
org.ovirt.engine.core.common.businessentities.network.NetworkAttachment attachment = map(incoming, entity);
attachment.setOverrideConfiguration(overrideConfiguration);
NetworkAttachmentParameters params = new NetworkAttachmentParameters(parent.getHostId(), attachment);
return params;
}
}
@Override
public Response remove() {
get();
RemoveNetworkAttachmentParameters params = new RemoveNetworkAttachmentParameters(parent.getHostId(), guid);
return performAction(VdcActionType.RemoveNetworkAttachment, params);
}
}