use of org.ovirt.engine.core.common.businessentities.Label in project ovirt-engine by oVirt.
the class BackendAffinityLabelResource method update.
@Override
public AffinityLabel update(AffinityLabel incoming) {
QueryIdResolver<Guid> labelResolver = new QueryIdResolver<>(QueryType.GetLabelById, IdQueryParameters.class);
Label entity = getEntity(labelResolver, true);
AffinityLabel label = performUpdate(incoming, entity, map(entity), labelResolver, ActionType.UpdateLabel, new UpdateParametersProvider());
return label;
}
use of org.ovirt.engine.core.common.businessentities.Label in project ovirt-engine by oVirt.
the class BackendAffinityLabelVmResource method remove.
public Response remove() {
// First we need to check if the affinity label does contain the virtual machine:
Label label = BackendAffinityLabelHelper.getLabel(this, labelId);
if (!label.getVms().contains(guid)) {
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
// Remove the virtual machine from the label:
VM entity = new VM();
entity.setId(guid);
Label updatedLabel = new LabelBuilder(label).removeEntity(entity).build();
return performAction(ActionType.UpdateLabel, new LabelActionParameters(updatedLabel));
}
use of org.ovirt.engine.core.common.businessentities.Label in project ovirt-engine by oVirt.
the class BackendAffinityLabelVmsResource method add.
@Override
public Response add(Vm model) {
validateParameters(model, "id");
Label label = BackendAffinityLabelHelper.getLabel(this, labelId);
VM entity = new VM();
entity.setId(GuidUtils.asGuid(model.getId()));
Label updatedLabel = new LabelBuilder(label).entity(entity).build();
// The command used to add the virtual machine to the label returns the label, but we need to return the virtual
// machine, so we ignore the result and return a link to the added virtual machine:
LabelActionParameters updateParams = new LabelActionParameters(updatedLabel);
try {
doAction(ActionType.UpdateLabel, updateParams);
} catch (BackendFailureException exception) {
handleError(exception, false);
}
Vm result = BackendAffinityLabelHelper.makeVmLink(entity.getId());
return Response.ok(Response.Status.CREATED).entity(result).build();
}
use of org.ovirt.engine.core.common.businessentities.Label in project ovirt-engine by oVirt.
the class BackendAssignedAffinityLabelsResource method add.
@Override
public Response add(AffinityLabel label) {
validateParameters(label, "id");
IdQueryParameters parameters = new IdQueryParameters(GuidUtils.asGuid(label.getId()));
org.ovirt.engine.core.common.businessentities.Label entity = getEntity(org.ovirt.engine.core.common.businessentities.Label.class, QueryType.GetLabelById, parameters, label.getId(), true);
BusinessEntity<Guid> parent = constructor.create();
parent.setId(GuidUtils.asGuid(parentId));
org.ovirt.engine.core.common.businessentities.Label updatedLabel = new LabelBuilder(entity).entity(parent).build();
// Add the affinity label using the backend "update" operation. As the backend will return the added label as
// the result of the operation, we can fetch it using a simple "identity" resolver, that just returns the same
// value it is passed.
LabelActionParameters updateParams = new LabelActionParameters(updatedLabel);
return performCreate(ActionType.UpdateLabel, updateParams, (IResolver<Label, Label>) result -> result);
}
use of org.ovirt.engine.core.common.businessentities.Label in project ovirt-engine by oVirt.
the class DrMappingHelper method mapAffinityLabels.
public List<Label> mapAffinityLabels(Map<String, String> affinityLabelMap, String vmName, List<Label> affinityLabelsFromParam) {
if (affinityLabelsFromParam == null) {
return Collections.emptyList();
}
List<Label> affinityLabelsToAdd = new ArrayList<>();
affinityLabelsFromParam.forEach(affinityLabel -> {
log.info("Mapping affinity label '{}' for vm '{}'.", affinityLabel, vmName);
String mappedAffinityLabelName = affinityLabelMap.get(affinityLabel.getName());
if (mappedAffinityLabelName == null) {
affinityLabelsToAdd.add(affinityLabel);
log.warn("Mapping for affinity label '{}' not found, will use the affinity label name from OVF", affinityLabel.getName());
} else {
if (labelDao.getByName(mappedAffinityLabelName) == null) {
log.warn("Mapping for affinity label '{}' not found, will use the affinity label name from OVF", affinityLabel.getName());
affinityLabelsToAdd.add(affinityLabel);
} else {
log.info("Mapping for affinity label '{}' found, attempting to map to '{}'", affinityLabel.getName(), mappedAffinityLabelName);
Label mappedAffinityLabel = labelDao.getByName(mappedAffinityLabelName);
Label affinityLabelToAdd = Optional.ofNullable(mappedAffinityLabel).orElse(affinityLabel);
log.info("Will try to add affinity label '{}'", affinityLabelToAdd.getName());
affinityLabelsToAdd.add(affinityLabelToAdd);
}
}
});
return affinityLabelsToAdd;
}
Aggregations