private ResourcePoolState createResourcePoolState(String placementZoneName, boolean isSchedulerZone) { assertNotNull(placementZoneName); ResourcePoolState placementZone = new ResourcePoolState(); placementZone.id = placementZoneName; placementZone.name = placementZoneName; placementZone.documentSelfLink = ResourcePoolService.FACTORY_LINK + "/" + placementZone.id; if (isSchedulerZone) { markSchedulerPlacementZone(placementZone); } else { markDockerPlacementZone(placementZone); } return placementZone; }
@Test public void testUpdateEmptySchedulerPZToDockerPZShouldPass() throws Throwable { // First create a docker placement zone. ResourcePoolState createdPlacementZone = createPlacementZone("scheduler-placement-zone", true); assertNotNull(createdPlacementZone); // Now create a PATCH that updates its type to docker. This should pass ResourcePoolState patchState = new ResourcePoolState(); markDockerPlacementZone(patchState); ResourcePoolState patchedState = doPatch(patchState, createdPlacementZone.documentSelfLink); assertNotNull(patchedState); }
@Test public void testPutSchedulerPZInUseToDockerPZShouldFail() throws Throwable { // First create a docker placement zone. ResourcePoolState createdPlacementZone = createPlacementZone("scheduler-placement-zone", true); assertNotNull(createdPlacementZone); // Now create a compute state that uses this placement zone createComputeState(createdPlacementZone, true); // Now update the type of the zone to docker and issue a PUT. This should fail markDockerPlacementZone(createdPlacementZone); try { doPut(createdPlacementZone); Assert.fail( "PUT should fail to update the type of a used " + "scheduler placement zone to a docker zone"); } catch (Exception ex) { verifyExceptionMessage(ex, SchedulerPlacementZoneInterceptor.SCHEDULER_HOSTS_IN_PLACEMENT_ZONE_MESSAGE); } }
@Test public void testUpdateSchedulerPZInUseToDockerPZShouldFail() throws Throwable { // First create a docker placement zone. ResourcePoolState createdPlacementZone = createPlacementZone("scheduler-placement-zone", true); assertNotNull(createdPlacementZone); // Now create a compute state that uses this placement zone createComputeState(createdPlacementZone, true); // Now create a PATCH that updates the type of the zone to docker. This should fail ResourcePoolState patchState = new ResourcePoolState(); markDockerPlacementZone(patchState); try { doPatch(patchState, createdPlacementZone.documentSelfLink); Assert.fail( "PATCH should fail to update the type of a used " + "scheduler placement zone to a docker zone"); } catch (Exception ex) { verifyExceptionMessage(ex, SchedulerPlacementZoneInterceptor.SCHEDULER_HOSTS_IN_PLACEMENT_ZONE_MESSAGE); } }