package org.ovirt.engine.api.restapi.resource;
import java.util.List;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.model.Nic;
import org.ovirt.engine.api.model.Nics;
import org.ovirt.engine.api.model.Template;
import org.ovirt.engine.api.resource.TemplateNicResource;
import org.ovirt.engine.api.resource.TemplateNicsResource;
import org.ovirt.engine.core.common.action.AddVmTemplateInterfaceParameters;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
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 BackendTemplateNicsResource extends AbstractBackendNicsResource implements TemplateNicsResource {
private Guid templateId;
public BackendTemplateNicsResource(Guid templateId) {
super(templateId, VdcQueryType.GetTemplateInterfacesByTemplateId);
this.templateId = templateId;
}
@Override
public Nics list() {
Nics nics = new Nics();
List<VmNetworkInterface> entities = getBackendCollection(
VdcQueryType.GetTemplateInterfacesByTemplateId,
new IdQueryParameters(templateId)
);
for (VmNetworkInterface entity : entities) {
Nic nic = populate(map(entity), entity);
nics.getNics().add(addLinks(nic));
}
return nics;
}
public Response add(Nic nic) {
validateParameters(nic, "name");
return performCreate(
VdcActionType.AddVmTemplateInterface,
new AddVmTemplateInterfaceParameters(templateId, map(nic)),
new NicResolver(nic.getName())
);
}
@Override
public TemplateNicResource getNicResource(String id) {
return inject(new BackendTemplateNicResource(id, templateId));
}
@Override
public Nic addParents(Nic nic) {
Template template = new Template();
template.setId(templateId.toString());
nic.setTemplate(template);
return nic;
}
}