package org.ovirt.engine.api.restapi.resource;
import static java.util.stream.Collectors.toList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import javax.ws.rs.core.Response;
import org.ovirt.engine.api.resource.NetworkLabelsResource;
import org.ovirt.engine.core.common.action.VdcActionType;
import org.ovirt.engine.core.common.action.VfsConfigLabelParameters;
import org.ovirt.engine.core.common.businessentities.network.HostNicVfsConfig;
import org.ovirt.engine.core.common.businessentities.network.pseudo.NetworkLabel;
import org.ovirt.engine.core.compat.Guid;
public class BackendVirtualFunctionAllowedLabelsResource
extends AbstractBaseHostNicLabelsResource
implements NetworkLabelsResource {
private Guid nicId;
private String hostId;
protected BackendVirtualFunctionAllowedLabelsResource(Guid nicId, String hostId) {
super(nicId, hostId);
this.nicId = nicId;
this.hostId = hostId;
}
@Override
protected List<NetworkLabel> getHostNicLabels(Guid hostNicId) {
final BackendHostNicsResource hostNicsResource = inject(new BackendHostNicsResource(hostId));
final HostNicVfsConfig vfsConfig = hostNicsResource.findVfsConfig(hostNicId);
if (vfsConfig == null) {
return Collections.emptyList();
}
final Set<String> networkLabelIds = vfsConfig.getNetworkLabels();
return networkLabelIds.stream().map(NetworkLabel::new).collect(toList());
}
@Override
protected Response performCreate(String labelId) {
return performCreate(VdcActionType.AddVfsConfigLabel,
new VfsConfigLabelParameters(nicId, labelId),
new NetworkLabelIdResolver(nicId));
}
@Override
protected AbstractBaseHostNicLabelResource createSingularResource(String labelId) {
return new BackendVirtualFunctionAllowedLabelResource(labelId, this);
}
}