package org.ovirt.engine.core.itests; import java.util.ArrayList; import junit.framework.Assert; import org.junit.Test; import org.ovirt.engine.core.common.action.AddVmTemplateParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.action.VmTemplateParametersBase; import org.ovirt.engine.core.common.businessentities.permissions; import org.ovirt.engine.core.common.queries.GetPermissionsForObjectParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.bll.Backend; import org.ovirt.engine.core.bll.MultiLevelAdministrationHandler; public class VMTemplateTest extends AbstractBackendTest { /** * Test adding a template for public use to the system. Such a template must create permissions on user EVERYONE as * role TEMPLATE_USER * * result - success when commands getSuccedded() returns true and the expected permissions exist in the DB. */ @Test public void addTemplate() { BasicTestSetup basicSetup = getBasicSetup(); AddVmTemplateParameters parameters = new AddVmTemplateParameters(basicSetup.getVm().getStaticData(), "template" + testSequence, "test template"); parameters.setPublicUse(true); VdcReturnValueBase runAction = backend.runInternalAction(VdcActionType.AddVmTemplate, sessionize(parameters)); Guid vmtGuid = (Guid) runAction.getActionReturnValue(); VdcQueryReturnValue runQuery = backend.RunQuery(VdcQueryType.GetPermissionsForObject, new GetPermissionsForObjectParameters(vmtGuid)); ArrayList<permissions> perms = (ArrayList<permissions>) runQuery.getReturnValue(); // evaluate results Assert.assertTrue(runAction.getSucceeded() && !perms.isEmpty() && perms.get(0).getad_element_id().equals(MultiLevelAdministrationHandler.EVERYONE_OBJECT_ID)); // clean the created template and images cleanup(basicSetup, vmtGuid); } private void cleanup(BasicTestSetup basicSetup, Guid vmtGuid) { runAsSuperAdmin(); // run as admin so we can erase the template VmTemplateParametersBase removeImagesParams = new VmTemplateParametersBase(vmtGuid); ArrayList<Guid> storages = new ArrayList<Guid>(); storages.add(basicSetup.getStorage().getid()); removeImagesParams.setStorageDomainsList(storages); Backend.getInstance().runInternalAction( VdcActionType.RemoveAllVmTemplateImageTemplates, removeImagesParams); backend.RunAction(VdcActionType.RemoveVmTemplate, removeImagesParams); System.out.println("-- remove template and its images -- "); } }