@Test public void testPlacementsBolongToOnePool() throws Throwable { ResourcePoolState pool1 = createResourcePool(); GroupResourcePlacementState placement1 = new GroupResourcePlacementState(); placement1.name = "placement"; placement1.resourcePoolLink = pool1.documentSelfLink; placement1 = doPost(placement1, GroupResourcePlacementService.FACTORY_LINK); GroupResourcePlacementState placement2 = new GroupResourcePlacementState(); placement2.name = "placement2"; placement2.resourcePoolLink = pool1.documentSelfLink; placement2 = doPost(placement2, GroupResourcePlacementService.FACTORY_LINK); GroupResourcePlacementState placement3 = new GroupResourcePlacementState(); placement3.name = "placement3"; placement3.resourcePoolLink = pool1.documentSelfLink;
@Test public void testGroupResourcePlacementQueryEmptyTenantLinks() throws Throwable { GroupResourcePlacementState state = new GroupResourcePlacementState(); state.name = "reservation-test"; state.tenantLinks = Collections.singletonList("testGroup");
ResourcePoolState pool = createResourcePool(); GroupResourcePlacementState placement1 = new GroupResourcePlacementState(); placement1.name = "placement"; placement1.resourcePoolLink = pool.documentSelfLink; placement1 = doPost(placement1, GroupResourcePlacementService.FACTORY_LINK); GroupResourcePlacementState placement2 = new GroupResourcePlacementState(); placement2.name = "placement2"; placement2.resourcePoolLink = pool.documentSelfLink;
@Test public void testGetGroupResourcePlacementState() throws Throwable { GroupResourcePlacementState placementState = new GroupResourcePlacementState(); placementState.name = "reservation-test"; placementState.tenantLinks = Collections.singletonList("testGroup");
Assert.assertTrue(compute1.tagLinks == null); GroupResourcePlacementState placement = new GroupResourcePlacementState(); placement.name = "placement"; placement.resourcePoolLink = GroupResourcePlacementService.DEFAULT_RESOURCE_POOL_LINK;
compute = doPost(compute, ComputeService.FACTORY_LINK); GroupResourcePlacementState resourcePlacement = new GroupResourcePlacementState(); resourcePlacement.deploymentPolicyLink = deploymentPolicy.documentSelfLink; resourcePlacement.maxNumberInstances = 1;
private void createGroupResourcePlacement(ReservationAllocationTaskState state) { GroupResourcePlacementState placementState = new GroupResourcePlacementState(); placementState.name = state.name + "-" + UUID.randomUUID().toString(); placementState.documentSelfLink = placementState.name;
@Test public void testPlacementsBolongToDifferentPools() throws Throwable { ResourcePoolState pool1 = createResourcePool(); GroupResourcePlacementState placement1 = new GroupResourcePlacementState(); placement1.name = "placement"; placement1.resourcePoolLink = pool1.documentSelfLink; placement1.tenantLinks = new ArrayList<>(); placement1.tenantLinks.add("tenant1"); placement1 = doPost(placement1, GroupResourcePlacementService.FACTORY_LINK); ResourcePoolState pool2 = createResourcePool(); GroupResourcePlacementState placement2 = new GroupResourcePlacementState(); placement2.name = "placement2"; placement2.resourcePoolLink = pool2.documentSelfLink; placement2.tenantLinks = new ArrayList<>(); placement2.tenantLinks.add("tenant2"); placement2 = doPost(placement2, GroupResourcePlacementService.FACTORY_LINK); doPost(placement2, ResourcePoolTransformationService.SELF_LINK); pool1 = getDocument(ResourcePoolState.class, pool1.documentSelfLink); pool2 = getDocument(ResourcePoolState.class, pool2.documentSelfLink); // verify the tenant links of the pools Assert.assertTrue(pool1.tenantLinks.size() == 1); Assert.assertTrue(pool2.tenantLinks.size() == 1); Assert.assertTrue(pool1.tenantLinks.contains("tenant1")); Assert.assertTrue(pool2.tenantLinks.contains("tenant2")); // Verify that the pools are not changed Assert.assertTrue(getDocument(GroupResourcePlacementState.class, placement1.documentSelfLink).resourcePoolLink.equals(pool1.documentSelfLink)); Assert.assertTrue(getDocument(GroupResourcePlacementState.class, placement2.documentSelfLink).resourcePoolLink.equals(pool2.documentSelfLink)); }
public static DeferredResult<GroupResourcePlacementState> generatePlacement( ServiceHost serviceHost, ResourcePoolState placementZone) { try { AssertUtil.assertNotNull(placementZone, "vchplacementZone"); } catch (LocalizableValidationException ex) { serviceHost.log(Level.WARNING, "Failed to generate placement for placement zone: %s", Utils.toString(ex)); return DeferredResult.failed(ex); } GroupResourcePlacementState placement = new GroupResourcePlacementState(); placement.name = placementZone.name; placement.resourcePoolLink = placementZone.documentSelfLink; placement.resourceType = ResourceType.CONTAINER_TYPE.getName(); placement.priority = GroupResourcePlacementService.DEFAULT_PLACEMENT_PRIORITY; placement.customProperties = new HashMap<>(); placement.customProperties.put( GroupResourcePlacementState.AUTOGENERATED_PLACEMENT_PROP_NAME, Boolean.toString(true)); if (placementZone.tenantLinks != null) { placement.tenantLinks = new ArrayList<>(placementZone.tenantLinks); } return serviceHost.sendWithDeferredResult( Operation.createPost(serviceHost, GroupResourcePlacementService.FACTORY_LINK) .setReferer(serviceHost.getUri()) .setBody(placement), GroupResourcePlacementState.class); }
@Test public void testGroupResourcePlacementService() throws Throwable { verifyService( FactoryService.create(GroupResourcePlacementService.class), GroupResourcePlacementState.class, (prefix, index) -> { GroupResourcePlacementState reservationState = new GroupResourcePlacementState(); reservationState.name = prefix + "reservation-test"; reservationState.tenantLinks = Collections.singletonList("testGroup"); reservationState.resourcePoolLink = resourcePool.documentSelfLink; reservationState.maxNumberInstances = 10; reservationState.customProperties = new HashMap<>(); return reservationState; }, (prefix, serviceDocument) -> { GroupResourcePlacementState reservationState = (GroupResourcePlacementState) serviceDocument; assertTrue(reservationState.name.startsWith(prefix + "reservation-test")); assertEquals(Collections.singletonList("testGroup"), reservationState.tenantLinks); assertEquals(resourcePool.documentSelfLink, reservationState.resourcePoolLink); assertEquals(10, reservationState.maxNumberInstances); assertEquals(10, reservationState.availableInstancesCount); assertEquals(0, reservationState.allocatedInstancesCount); }); }
@Test public void testGroupResourcePlacementServiceTenantAndGroup() throws Throwable { verifyService( FactoryService.create(GroupResourcePlacementService.class), GroupResourcePlacementState.class, (prefix, index) -> { List<String> tenantAndGroup = new LinkedList<String>(); tenantAndGroup.add(TENANT); tenantAndGroup.add(BUSINESS_GROUP); GroupResourcePlacementState reservationState = new GroupResourcePlacementState(); reservationState.name = prefix + "reservation-test"; reservationState.tenantLinks = tenantAndGroup; reservationState.resourcePoolLink = resourcePool.documentSelfLink; reservationState.maxNumberInstances = 10; reservationState.customProperties = new HashMap<>(); return reservationState; }, (prefix, serviceDocument) -> { GroupResourcePlacementState reservationState = (GroupResourcePlacementState) serviceDocument; assertEquals(TENANT, reservationState.tenantLinks.get(0)); assertEquals(BUSINESS_GROUP, reservationState.tenantLinks.get(1)); }); }
private GroupResourcePlacementState createPlacement(DeploymentPolicy policy) throws Throwable { ResourcePoolState resourcePool = new ResourcePoolState(); resourcePool.name = ReservationTaskServiceTest.class.toString() + System.currentTimeMillis(); resourcePool = doPost(resourcePool, ResourcePoolService.FACTORY_LINK); addForDeletion(resourcePool); GroupResourcePlacementState rsrvState = new GroupResourcePlacementState(); rsrvState.resourcePoolLink = resourcePool.documentSelfLink; rsrvState.name = ReservationTaskServiceTest.class.toString() + System.currentTimeMillis(); rsrvState.maxNumberInstances = 10; rsrvState.memoryLimit = 0L; rsrvState.cpuShares = 3; if (policy != null) { rsrvState.deploymentPolicyLink = policy.documentSelfLink; } rsrvState = doPost(rsrvState, GroupResourcePlacementService.FACTORY_LINK); addForDeletion(rsrvState); return rsrvState; }
@Test public void testPoolHasAlreadyTenantLinks() throws Throwable { ResourcePoolState pool = createResourcePool(); pool.tenantLinks = new ArrayList<>(); pool.tenantLinks.add("test"); pool = doPatch(pool, pool.documentSelfLink); Assert.assertTrue(pool.tenantLinks.size() == 1); GroupResourcePlacementState placement1 = new GroupResourcePlacementState(); placement1.name = "placement"; placement1.resourcePoolLink = pool.documentSelfLink; placement1.tenantLinks = new ArrayList<>(); placement1.tenantLinks.add("tenant1"); placement1.tenantLinks.add("tenant2"); placement1 = doPost(placement1, GroupResourcePlacementService.FACTORY_LINK); doPost(placement1, ResourcePoolTransformationService.SELF_LINK); pool = getDocument(ResourcePoolState.class, pool.documentSelfLink); Assert.assertTrue(pool.tenantLinks.size() == 2); Assert.assertTrue(pool.tenantLinks.contains("tenant1")); Assert.assertTrue(pool.tenantLinks.contains("tenant2")); }
public static GroupResourcePlacementPoolState create( ResourcePoolState resourcePool, GroupResourcePlacementState groupResourcePlacementState) { GroupResourcePlacementPoolState poolState = new GroupResourcePlacementPoolState(); groupResourcePlacementState.copyTo(poolState); poolState.name = groupResourcePlacementState.name; poolState.tenantLinks = groupResourcePlacementState.tenantLinks; poolState.maxNumberInstances = groupResourcePlacementState.maxNumberInstances; poolState.availableInstancesCount = groupResourcePlacementState.availableInstancesCount; poolState.allocatedInstancesCount = groupResourcePlacementState.allocatedInstancesCount; poolState.customProperties = groupResourcePlacementState.customProperties; poolState.cpuShares = groupResourcePlacementState.cpuShares; poolState.memoryLimit = groupResourcePlacementState.memoryLimit; poolState.storageLimit = groupResourcePlacementState.storageLimit; poolState.resourcePoolLink = resourcePool.documentSelfLink; poolState.resourcePool = resourcePool; return poolState; } }
@Test public void testDeleteProjectAssociatedWithPlacement() throws Throwable { ResourcePoolState pool = createResourcePool(); GroupResourcePlacementState placement = new GroupResourcePlacementState(); placement.name = "test-reservation"; placement.resourcePoolLink = pool.documentSelfLink; placement.tenantLinks = Arrays.asList(project.documentSelfLink); doPost(placement, GroupResourcePlacementService.FACTORY_LINK); try { deleteProject(project); } catch (Exception e) { if (!e.getMessage().contains(ProjectUtil.PROJECT_IN_USE_MESSAGE)) { throw e; } } }
private GroupResourcePlacementService.GroupResourcePlacementState createGroupResourcePlacementState( String resourcePoolLink, String group, int priority, long memoryLimit, long availableMemory) throws Throwable { GroupResourcePlacementService.GroupResourcePlacementState rsrvState = new GroupResourcePlacementService.GroupResourcePlacementState(); rsrvState.resourcePoolLink = resourcePoolLink; rsrvState.name = UUID.randomUUID().toString(); rsrvState.maxNumberInstances = 10; rsrvState.memoryLimit = memoryLimit; rsrvState.availableMemory = availableMemory; rsrvState.cpuShares = 3; rsrvState.tenantLinks = Collections.singletonList(group); rsrvState.priority = priority; return doPost(rsrvState, GroupResourcePlacementService.FACTORY_LINK); }
private GroupResourcePlacementState createPlacement(String link, Long memoryLimit, Long storageLimit, Integer priority, Integer cpuShares, String resourcePoolLink, long maxNumInstances) { GroupResourcePlacementState placementState = new GroupResourcePlacementState(); placementState.name = link; placementState.documentSelfLink = link + "-" + UUID.randomUUID().toString(); placementState.tenantLinks = Collections.singletonList("testGroup"); placementState.maxNumberInstances = maxNumInstances; placementState.memoryLimit = memoryLimit; placementState.storageLimit = storageLimit; placementState.resourcePoolLink = resourcePoolLink; placementState.cpuShares = cpuShares; placementState.priority = priority; placementState.tenantLinks = Arrays.asList(TENANT); return placementState; }
public static GroupResourcePlacementState createGroupResourcePlacementState( ResourceType resourceType, String name) { GroupResourcePlacementState rsrvState = new GroupResourcePlacementState(); rsrvState.resourcePoolLink = UriUtils.buildUriPath(ResourcePoolService.FACTORY_LINK, RESOURCE_POOL_ID); rsrvState.tenantLinks = createTenantLinks(TENANT_NAME); rsrvState.name = name; rsrvState.maxNumberInstances = 20; rsrvState.memoryLimit = 0L; rsrvState.cpuShares = 3; rsrvState.resourceType = resourceType.getName(); return rsrvState; }
public static ServiceDocument buildStateInstance(String resourcePlacementName, String resourcePoolDocumentSelfLink) { GroupResourcePlacementState rsrvState = new GroupResourcePlacementState(); rsrvState.documentSelfLink = UriUtils.buildUriPath( FACTORY_LINK, resourcePlacementName); rsrvState.name = resourcePlacementName; rsrvState.resourcePoolLink = resourcePoolDocumentSelfLink; rsrvState.tenantLinks = null; // global default group placement rsrvState.maxNumberInstances = 1000000; rsrvState.priority = DEFAULT_PLACEMENT_PRIORITY; return rsrvState; }