private Label createAndSaveLabel(String labelName) { Label label = new LabelBuilder() .name(labelName) .id(Guid.newGuid()) .build(); dao.save(label); return label; }
@Override public ActionParametersBase getParameters(AffinityLabel model, Label entity) { LabelBuilder newEntity = new LabelBuilder(entity); if (model.isSetReadOnly()) { newEntity.readOnly(model.isReadOnly()); } if (model.isSetName()) { newEntity.name(model.getName()); } return new LabelActionParameters(newEntity.build()); } }
protected Label getNewAffinityLabel() { return new LabelBuilder().build(); }
@Override protected void readAffinityLabelsSection(XmlNode section) { XmlNodeList list = selectNodes(section, OvfProperties.AFFINITY_LABEL); List<Label> affinityLabels = new ArrayList<>(); for (XmlNode node : list) { String affinityLabelName = node.attributes.get("ovf:name").innerText; LabelBuilder builder = new LabelBuilder(); Label label = builder.name(affinityLabelName).build(); affinityLabels.add(label); } fullEntityOvfData.setAffinityLabels(affinityLabels); }
@Mapping(from = org.ovirt.engine.api.model.AffinityLabel.class, to = Label.class) public static Label map(org.ovirt.engine.api.model.AffinityLabel model, Label template) { LabelBuilder entity = template != null ? new LabelBuilder(template) : new LabelBuilder(); if (model.isSetId()) { entity.id(GuidUtils.asGuid(model.getId())); } if (model.isSetName()) { entity.name(model.getName()); } if (model.isSetReadOnly()) { entity.readOnly(model.isReadOnly()); } if (model.isSetVms() && model.getVms().isSetVms()) { model.getVms().getVms().forEach(vm -> entity.vm(GuidUtils.asGuid(vm.getId()))); } if (model.isSetHosts() && model.getHosts().isSetHosts()) { model.getHosts().getHosts().forEach(host -> entity.host(GuidUtils.asGuid(host.getId()))); } return entity.build(); } }
@Override public Response add(Host model) { validateParameters(model, "id"); Label label = BackendAffinityLabelHelper.getLabel(this, labelId); VDS entity = new VDS(); entity.setId(GuidUtils.asGuid(model.getId())); Label updatedLabel = new LabelBuilder(label) .entity(entity) .build(); // The command used to add the host 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 host: LabelActionParameters updateParams = new LabelActionParameters(updatedLabel); try { doAction(ActionType.UpdateLabel, updateParams); } catch (BackendFailureException exception) { handleError(exception, false); } Host result = BackendAffinityLabelHelper.makeHostLink(entity.getId()); return Response.ok(Response.Status.CREATED).entity(result).build(); }
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)); } }
@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(); }
public Response remove() { // First we need to check if the label contains the host: Label label = BackendAffinityLabelHelper.getLabel(this, labelId); if (!label.getHosts().contains(guid)) { throw new WebApplicationException(Response.Status.NOT_FOUND); } // Remove the host from the label: VDS entity = new VDS(); entity.setId(guid); Label updatedLabel = new LabelBuilder(label) .removeEntity(entity) .build(); return performAction(ActionType.UpdateLabel, new LabelActionParameters(updatedLabel)); } }
@Test public void testCreateAndGetByIds() { Label label = new LabelBuilder() .name("test label") .id(Guid.newGuid()) .entity(host) .build(); dao.save(label); VmStatic vm = createAndSaveVm(); VmStatic vm2 = createAndSaveVm(); Label label2 = new LabelBuilder() .name("test label 2") .id(Guid.newGuid()) .entity(vm) .build(); dao.save(label2); label = new LabelBuilder() .name("test label not in result") .id(Guid.newGuid()) .entity(vm2) .build(); dao.save(label); List<Label> read = dao.getAllByIds(Lists.newArrayList(label.getId(), label2.getId())); assertNotNull(read); assertEquals(2, read.size()); }
@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); }
@Override public Response remove() { QueryIdResolver<Guid> labelResolver = new QueryIdResolver<>(QueryType.GetLabelById, IdQueryParameters.class); org.ovirt.engine.core.common.businessentities.Label entity = getEntity(labelResolver, true); BusinessEntity<Guid> parent = constructor.create(); parent.setId(GuidUtils.asGuid(parentId)); org.ovirt.engine.core.common.businessentities.Label updatedLabel = new LabelBuilder(entity) .removeEntity(parent) .build(); return performAction(ActionType.UpdateLabel, new LabelActionParameters(updatedLabel)); } }
@Test public void testCreateAndDeleteById() { Guid guid = Guid.newGuid(); Label label = new LabelBuilder() .name("test label") .id(guid) .host(host.getId()) .build(); dao.save(label); dao.remove(label.getId()); Label read = dao.get(guid); assertNull(read); }
@Test public void testCreateAndGetLabelWithTwoItems() { VmStatic vm = createAndSaveVm(); Label label = new LabelBuilder() .name("test label") .id(Guid.newGuid()) .entities(host, vm) .build(); dao.save(label); List<Label> read = dao.getAllByEntityIds(Lists.newArrayList(host.getId(), vm.getId())); assertNotNull(read); assertEquals(1, read.size()); }
@Test public void testCreateAndGetByReferencedId() { Label label = new LabelBuilder() .name("test label") .id(Guid.newGuid()) .entity(host) .build(); dao.save(label); VmStatic vm = createAndSaveVm(); label = new LabelBuilder() .name("test label 2") .id(Guid.newGuid()) .entity(vm) .build(); dao.save(label); VmStatic vm2 = createAndSaveVm(); label = new LabelBuilder() .name("test label not in result") .id(Guid.newGuid()) .entity(vm2) .build(); dao.save(label); List<Label> read = dao.getAllByEntityIds(Lists.newArrayList(host.getId(), vm.getId(), Guid.newGuid())); assertNotNull(read); assertEquals(2, read.size()); }
@Test public void testCreateAndGetById() { Guid guid = Guid.newGuid(); Label label = new LabelBuilder() .name("test label") .id(guid) .build(); dao.save(label); Label read = dao.get(guid); assertNotNull(read); assertEquals(guid, read.getId()); assertEquals(label.getName(), read.getName()); }
@Test public void testCreateAndGetAll() { Guid guid = Guid.newGuid(); Label label = new LabelBuilder() .name("test label") .id(guid) .build(); dao.save(label); List<Label> readList = dao.getAll(); assertNotNull(readList); Label read = readList.get(0); assertNotNull(read); assertEquals(guid, read.getId()); assertEquals(label.getName(), read.getName()); }
@Test public void testCreateAndGetWithHost() { Guid guid = Guid.newGuid(); Label label = new LabelBuilder() .name("test label") .id(guid) .entity(host) .build(); dao.save(label); Label read = dao.get(guid); assertNotNull(read); assertEquals(guid, read.getId()); assertEquals(label.getName(), read.getName()); assertNotNull(read.getVms()); assertEquals(0, read.getVms().size()); assertEquals(1, read.getHosts().size()); assertEquals(host.getId(), read.getHosts().iterator().next()); }
@Test public void testCreateAndGetWithVM() { Guid guid = Guid.newGuid(); VmStatic vm = createAndSaveVm(); Label label = new LabelBuilder() .name("test label") .id(guid) .vm(vm.getId()) .build(); dao.save(label); Label read = dao.get(guid); assertNotNull(read); assertEquals(guid, read.getId()); assertEquals(label.getName(), read.getName()); assertNotNull(read.getVms()); assertEquals(1, read.getVms().size()); assertEquals(0, read.getHosts().size()); assertEquals(vm.getId(), read.getVms().iterator().next()); }