package org.ovirt.engine.api.restapi.resource; import org.ovirt.engine.core.common.action.AddVmTemplateInterfaceParameters; import org.ovirt.engine.core.common.action.RemoveVmTemplateInterfaceParameters; import org.ovirt.engine.core.common.action.VdcActionParametersBase; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.VmTemplate; import org.ovirt.engine.core.common.businessentities.network; import org.ovirt.engine.core.common.queries.GetVmTemplateParameters; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.api.restapi.resource.AbstractBackendSubResource.ParametersProvider; 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.DeviceResource; import org.ovirt.engine.api.resource.DevicesResource; public class BackendTemplateNicsResource extends BackendNicsResource implements DevicesResource<NIC, Nics>{ public BackendTemplateNicsResource(Guid parentId) { super(parentId, VdcQueryType.GetTemplateInterfacesByTemplateId, new GetVmTemplateParameters(parentId), VdcActionType.AddVmTemplateInterface, VdcActionType.RemoveVmTemplateInterface, VdcActionType.UpdateVmTemplateInterface); } @Override protected ParametersProvider<NIC, VmNetworkInterface> getUpdateParametersProvider() { return new UpdateParametersProvider(); } protected class UpdateParametersProvider implements ParametersProvider<NIC, VmNetworkInterface> { @Override public VdcActionParametersBase getParameters(NIC incoming, VmNetworkInterface entity) { return new AddVmTemplateInterfaceParameters(parentId, map(incoming, entity)); } } @Override protected VdcActionParametersBase getAddParameters(VmNetworkInterface entity, NIC nic) { return new AddVmTemplateInterfaceParameters(parentId, setNetwork(nic, entity)); } @Override protected VdcActionParametersBase getRemoveParameters(String id) { return new RemoveVmTemplateInterfaceParameters(parentId, asGuid(id)); } @Override @SingleEntityResource public DeviceResource<NIC> getDeviceSubResource(String id) { return inject(new BackendTemplateNicResource(id, this, updateType, getUpdateParametersProvider(), getRequiredUpdateFields(), subCollections)); } @Override protected VmNetworkInterface setNetwork(NIC device, VmNetworkInterface ni) { if (device.isSetNetwork()) { Guid clusterId = getEntity(VmTemplate.class, VdcQueryType.GetVmTemplate, new GetVmTemplateParameters(parentId), "id").getvds_group_id(); network net = lookupClusterNetwork(clusterId, device.getNetwork().isSetId() ? asGuid(device.getNetwork().getId()) : null, device.getNetwork().getName()); if (net != null) { ni.setNetworkName(net.getname()); } } return ni; } @Override public NIC addParents(NIC device) { device.setTemplate(new Template()); device.getTemplate().setId(parentId.toString()); return device; } @Override protected Guid getClusterId() { Guid clusterId = getEntity(VmTemplate.class, VdcQueryType.GetVmTemplate, new GetVmTemplateParameters(parentId), "id").getvds_group_id(); return clusterId; } }