use of com.dyngr.exception.PollerStoppedException in project cloudbreak by hortonworks.
the class GcpProvisionSetup method copyImage.
public void copyImage(final String sourceBucket, final String sourceKey, final String destBucket, final String destKey, Storage storage) {
try {
Storage.Objects.Rewrite rewrite = storage.objects().rewrite(sourceBucket, sourceKey, destBucket, destKey, new StorageObject());
RewriteResponse rewriteResponse = rewrite.execute();
GcpImageAttemptMaker gcpImageAttemptMaker = gcpImageAttemptMakerFactory.create(rewriteResponse.getRewriteToken(), sourceBucket, sourceKey, destBucket, destKey, storage);
Polling.stopAfterAttempt(ATTEMPT_COUNT).stopIfException(true).waitPeriodly(SLEEPTIME, TimeUnit.SECONDS).run(gcpImageAttemptMaker);
LOGGER.info("Image copy has been finished successfully for {}/{}.", destBucket, destKey);
} catch (PollerStoppedException pollerStoppedException) {
LOGGER.error("Poller stopped for image copy: ", pollerStoppedException);
throw new CloudbreakServiceException("Image copy failed because the copy take too long time. " + "Please check Google Cloud console because probably the image should be ready.");
} catch (PollerException exception) {
LOGGER.error("Polling failed for image copy: {}", sourceKey, exception);
throw new CloudbreakServiceException("Image copy failed because: " + exception.getMessage());
} catch (Exception e) {
LOGGER.error("Polling could not started because: {}", e.getMessage(), e);
throw new CloudbreakServiceException("Copying the image could not be started, " + "please check whether you have given access to CDP for storage API.");
}
}
use of com.dyngr.exception.PollerStoppedException in project cloudbreak by hortonworks.
the class PollerUtilTest method testWaitForWhenPollerStopExceptionHasNotCause.
@Test
public void testWaitForWhenPollerStopExceptionHasNotCause() {
ReflectionTestUtils.setField(underTest, "pollingInterval", 1);
ReflectionTestUtils.setField(underTest, "pollingAttempt", 1);
CloudCredential cloudCredential = new CloudCredential(STACK_ID.toString(), "", "account");
AuthenticatedContext ac = new AuthenticatedContext(createCloudContext(), cloudCredential);
CloudInstance cloudInstance = new CloudInstance("instanceId", null, null, "subnet-1", "az1");
List<CloudInstance> instances = List.of(cloudInstance);
when(awsInstanceConnector.check(ac, instances)).thenReturn(List.of(new CloudVmInstanceStatus(cloudInstance, InstanceStatus.FAILED)));
PollerStoppedException actual = assertThrows(PollerStoppedException.class, () -> underTest.waitFor(ac, instances, Set.of(InstanceStatus.STARTED), ""));
Pattern regexp = Pattern.compile("unknown operation cannot be finished in time. Duration: .*. Instances: .*");
assertTrue(regexp.matcher(actual.getMessage()).matches());
}
use of com.dyngr.exception.PollerStoppedException in project cloudbreak by hortonworks.
the class PollerUtilTest method testWaitForWhenPollerStopExceptionHasCause.
@Test
public void testWaitForWhenPollerStopExceptionHasCause() {
ReflectionTestUtils.setField(underTest, "pollingInterval", 1);
ReflectionTestUtils.setField(underTest, "pollingAttempt", 1);
CloudCredential cloudCredential = new CloudCredential(STACK_ID.toString(), "", "account");
AuthenticatedContext ac = new AuthenticatedContext(createCloudContext(), cloudCredential);
CloudInstance cloudInstance = new CloudInstance("instanceId", null, null, "subnet-1", "az1");
List<CloudInstance> instances = List.of(cloudInstance);
when(awsInstanceConnector.check(ac, instances)).thenThrow(new RuntimeException("runtime ex")).thenReturn(List.of(new CloudVmInstanceStatus(cloudInstance, InstanceStatus.FAILED)));
PollerStoppedException actual = assertThrows(PollerStoppedException.class, () -> underTest.waitFor(ac, instances, Set.of(InstanceStatus.STARTED), ""));
assertEquals("java.lang.RuntimeException: runtime ex", actual.getMessage());
}
Aggregations