package org.ovirt.engine.api.restapi.resource; import static org.ovirt.engine.api.restapi.resource.BackendNicsResource.SUB_COLLECTIONS; import org.ovirt.engine.api.model.NIC; import org.ovirt.engine.api.model.Nics; import org.ovirt.engine.api.resource.NicResource; import org.ovirt.engine.api.resource.StatisticsResource; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.businessentities.VmNetworkInterface; import org.ovirt.engine.core.common.businessentities.network; import org.ovirt.engine.core.compat.Guid; public class BackendNicResource extends BackendDeviceResource<NIC, Nics, VmNetworkInterface> implements NicResource { protected BackendNicResource(String id, AbstractBackendReadOnlyDevicesResource<NIC, Nics, VmNetworkInterface> collection, VdcActionType updateType, ParametersProvider<NIC, VmNetworkInterface> updateParametersProvider, String[] requiredUpdateFields, String... subCollections) { super(NIC.class, VmNetworkInterface.class, collection.asGuidOr404(id), collection, updateType, updateParametersProvider, requiredUpdateFields, SUB_COLLECTIONS); } @Override public StatisticsResource getStatisticsResource() { EntityIdResolver resolver = new EntityIdResolver() { @Override public VmNetworkInterface lookupEntity(Guid guid) throws BackendFailureException { return collection.lookupEntity(guid); } }; NicStatisticalQuery query = new NicStatisticalQuery(resolver, newModel(id)); return inject(new BackendStatisticsResource<NIC, VmNetworkInterface>(entityType, guid, query)); } @Override public NIC update(NIC resource) { validateParameters(resource, requiredUpdateFields); network network = findNetwork(resource); if (network!=null) { resource.getNetwork().setName(network.getname()); resource.getNetwork().setId(null); } return performUpdate(resource, entityResolver, updateType, updateParametersProvider); } protected network findNetwork(NIC resource) { if (resource.isSetNetwork()) { BackendNicsResource parent = (BackendNicsResource)collection; Guid clusterId = parent.getClusterId(); network network = parent.lookupClusterNetwork(clusterId, resource.getNetwork().isSetId() ? asGuid(resource.getNetwork().getId()) : null, resource.getNetwork().getName()); return network; } else { return null; } } }