private boolean isFabricProvisioned(Container[] fabric) { if (fabric == null) { return false; } for (Container container : fabric) { if (container == null || !container.isAlive() || !Container.PROVISION_SUCCESS.equals(container.getProvisionStatus())) { if (container != null) { if (verbose) { System.out.println(String.format("Waiting: Container %s is %s", container.getId(), container.getProvisionStatus())); } if (container.getProvisionStatus() != null && container.getProvisionStatus().startsWith(Container.PROVISION_ERROR)) { throw new FabricException("Error provisioning container " + container.getId() + " : " + container.getProvisionStatus()); } } return false; } } return true; }
/** * Lets trim the status to a maximum size of 100 chars * (for example when it has an exception it may be long) * * @param container the container * @return the provisional status */ public static String status(Container container) { String status = container.isManaged() ? container.getProvisionStatus() : ""; if (status == null) { return ""; } status = status.trim(); if (status.length() > 100) { return status.substring(0, 100); } else { return status; } }
private boolean isComplete(Container container, String status) { return container.isAlive() && (container.getProvisionStatus().equals(status) || !container.isManaged()) && container.getSshUrl() != null; } }
private void waitForSuccessfulDeploymentOf(String containerName, BundleContext syscontext, long timeout) throws TimeoutException { System.out.println(String.format("Waiting for container %s to provision.", containerName)); Exception lastException = null; long startedAt = System.currentTimeMillis(); while (!Thread.interrupted() && System.currentTimeMillis() < startedAt + timeout) { ServiceReference<FabricService> sref = syscontext.getServiceReference(FabricService.class); FabricService fabricService = sref != null ? syscontext.getService(sref) : null; try { Container container = fabricService != null ? fabricService.getContainer(containerName) : null; if (container != null && container.isAlive() && "success".equals(container.getProvisionStatus())) { return; } else { Thread.sleep(500); } } catch (InterruptedException ex) { Thread.currentThread().interrupt(); lastException = ex; } catch (Exception ex) { lastException = ex; } } TimeoutException toex = new TimeoutException("Cannot provision container in time"); if (lastException != null) { toex.initCause(lastException); } throw toex; } }
private boolean isComplete(Container container, String status) { return container.isAlive() && (container.getProvisionStatus().equals(status) || !container.isManaged()) && container.getSshUrl() != null; } }
/** * Wait for a container to provision and assert its status. */ public static void provisioningSuccess(Collection<Container> containers, Long timeout) throws Exception { Set<Container> cntset = new HashSet<>(containers); long startedAt = System.currentTimeMillis(); long remaining = timeout; while (!cntset.isEmpty() && remaining > 0 && !Thread.interrupted()) { containerStatus(containers, "success", remaining); remaining = startedAt + timeout - System.currentTimeMillis(); for (Container container : containers) { if (!container.isAliveAndOK()) { if(container.getProvisionException() != null) { throw new Exception(container.getProvisionException()); } else if (remaining < 0) { throw new Exception("Container " + container.getId() + " failed to provision. Status:" + container.getProvisionStatus() + " Exception:" + container.getProvisionException()); } } else { cntset.remove(container); } } Thread.sleep(1000); remaining = startedAt + timeout - System.currentTimeMillis(); } }
/** * Wait for a container to provision and assert its status. */ public static void provisioningSuccess(Collection<Container> containers, Long timeout) throws Exception { if (containers.isEmpty()) { return; } boolean running = true; long startedAt = System.currentTimeMillis(); long remaining = timeout; while (running && !Thread.interrupted()) { containerStatus(containers, remaining); remaining = timeout + startedAt - System.currentTimeMillis(); for (Container container : containers) { if (!container.isAliveAndOK()) { if(container.getProvisionException() != null) { throw new Exception(container.getProvisionException()); } else if (startedAt + timeout < System.currentTimeMillis()) { throw new Exception("Container " + container.getId() + " failed to provision. Status:" + container.getProvisionStatus() + " Exception:" + container.getProvisionException()); } } else { running = false; } } } }
@Override public Boolean call() throws Exception { for (long t = 0; (!isComplete(container, status) && t < provisionTimeOut); t += 2000L) { if (container.getProvisionException() != null) { return false; } Thread.sleep(2000L); System.out.println("Container:" + container.getId() + " Alive:" + container.isAlive() + " Status:" + container.getProvisionStatus() + " SSH URL:" + container.getSshUrl()); } if (!isComplete(container, status)) { return false; } return true; }
@Override public Boolean call() throws Exception { for (long t = 0; (!isComplete(container, status) && t < provisionTimeOut); t += 2000L) { if (container.getProvisionException() != null) { return false; } Thread.sleep(2000L); System.out.println("Container:" + container.getId() + " Alive:" + container.isAlive() + " Status:" + container.getProvisionStatus() + " SSH URL:" + container.getSshUrl()); } if (!isComplete(container, status)) { return false; } return true; }
System.out.println(String.format(FORMAT, "Provision Status:", container.getProvisionStatus())); if (container.getProvisionException() != null) { System.out.println(String.format(FORMAT, "Provision Error:", container.getProvisionException()));
protected MQBrokerStatusDTO createStatusDTO(Profile profile, MQBrokerConfigDTO configDTO, ProfileRequirements profileRequirements, Container container) { MQBrokerStatusDTO answer = new MQBrokerStatusDTO(configDTO); if (container != null) { answer.setContainer(container.getId()); answer.setAlive(container.isAlive()); answer.setProvisionResult(container.getProvisionResult()); answer.setProvisionStatus(container.getProvisionStatus()); answer.setJolokiaUrl(container.getJolokiaUrl()); } if (profileRequirements != null) { Integer minimumInstances = profileRequirements.getMinimumInstances(); if (minimumInstances != null) { answer.setMinimumInstances(minimumInstances); } } return answer; }
answer.setProvisionStatus(container.getProvisionStatus()); answer.setProvisionList(container.getProvisionList()); answer.setJmxDomains(container.getJmxDomains());
answer.setProvisionStatus(container.getProvisionStatus()); answer.setProvisionList(container.getProvisionList()); answer.setJmxDomains(container.getJmxDomains());