private boolean isMigration(final Deployment deployment, final DeploymentGroup deploymentGroup) { return (deploymentGroup.getRolloutOptions() != null && TRUE.equals(deploymentGroup.getRolloutOptions().getMigrate()) && deployment.getJobId().equals(deploymentGroup.getJobId())); }
out.println(Json.asPrettyStringUnchecked(status)); } else { final JobId jobId = status.getDeploymentGroup().getJobId(); final String error = status.getError(); final List<HostSelector> hostSelectors = status.getDeploymentGroup().getHostSelectors();
out.printf(" %s%n", hostSelector.toPrettyString()); out.printf("Job: %s%n", deploymentGroup.getJobId());
private RollingUpdateOp rollingUpdateAwaitUndeployed(final ZooKeeperClient client, final RollingUpdateOpFactory opFactory, final DeploymentGroup deploymentGroup, final String host) { final TaskStatus taskStatus = getTaskStatus(client, host, deploymentGroup.getJobId()); if (taskStatus == null) { // The task status (i.e. /status/hosts/<host>/job/<job-id>) has been removed, indicating the // job has been undeployed. return opFactory.nextTask(); } if (isRolloutTimedOut(client, deploymentGroup)) { return opFactory.error("timed out while waiting for job undeployment", host, RollingUpdateError.TIMED_OUT_WAITING_FOR_JOB_TO_UNDEPLOY); } return opFactory.yield(); }
if (!deployment.getJobId().equals(deploymentGroup.getJobId())) { return false;
final DeploymentGroup deploymentGroup, final String host) { final TaskStatus taskStatus = getTaskStatus(client, host, deploymentGroup.getJobId()); final JobId jobId = deploymentGroup.getJobId(); final Deployment deployment = getDeployment(host, deploymentGroup.getJobId()); if (deployment == null) { return opFactory.error(
if (!jobId.equals(status.getDeploymentGroup().getJobId())) {
private RollingUpdateOp rollingUpdateDeploy(final ZooKeeperClient client, final RollingUpdateOpFactory opFactory, final DeploymentGroup deploymentGroup, final String host) { final Deployment deployment = Deployment.of(deploymentGroup.getJobId(), Goal.START, Deployment.EMTPY_DEPLOYER_USER, this.name, deploymentGroup.getName()); try { final String token = MoreObjects.firstNonNull( deploymentGroup.getRolloutOptions().getToken(), Job.EMPTY_TOKEN); return opFactory.nextTask(getDeployOperations(client, host, deployment, token)); } catch (JobDoesNotExistException e) { return opFactory.error(e, host, RollingUpdateError.JOB_NOT_FOUND); } catch (TokenVerificationException e) { return opFactory.error(e, host, RollingUpdateError.TOKEN_VERIFICATION_ERROR); } catch (HostNotFoundException e) { return opFactory.error(e, host, RollingUpdateError.HOST_NOT_FOUND); } catch (JobPortAllocationConflictException e) { return opFactory.error(e, host, RollingUpdateError.PORT_CONFLICT); } catch (JobAlreadyDeployedException e) { // Nothing to do return opFactory.nextTask(); } }
out.printf(" %s%n", hostSelector.toPrettyString()); out.printf("Job: %s%n", deploymentGroup.getJobId());
out.println(Json.asPrettyStringUnchecked(status)); } else { final JobId jobId = status.getDeploymentGroup().getJobId(); final String error = status.getError(); final List<HostSelector> hostSelectors = status.getDeploymentGroup().getHostSelectors();
final Map<JobId, TaskStatus> taskStatuses = getTaskStatuses(client, host); if (!taskStatuses.containsKey(deploymentGroup.getJobId())) { final Deployment deployment = getDeployment(host, deploymentGroup.getJobId()); if (deployment == null) { return RollingUpdateTaskResult.error( } else if (!taskStatuses.get(deploymentGroup.getJobId()).getState() .equals(TaskStatus.State.RUNNING)) { final Deployment deployment = getDeployment(host, deploymentGroup.getJobId()); if (deployment == null) { return RollingUpdateTaskResult.error(
if (!jobId.equals(status.getDeploymentGroup().getJobId())) {
private RollingUpdateTaskResult rollingUpdateDeploy(final DeploymentGroup deploymentGroup, final String host) { final Deployment deployment = Deployment.of(deploymentGroup.getJobId(), Goal.START, Deployment.EMTPY_DEPLOYER_USER, this.name, deploymentGroup.getName()); final ZooKeeperClient client = provider.get("rollingUpdateDeploy"); try { return RollingUpdateTaskResult.of(getDeployOperations(client, host, deployment, Job.EMPTY_TOKEN)); } catch (JobDoesNotExistException | TokenVerificationException | HostNotFoundException e) { return RollingUpdateTaskResult.error(e); } catch (JobAlreadyDeployedException e) { return RollingUpdateTaskResult.TASK_COMPLETE; } }
private RollingUpdateTaskResult rollingUpdateUndeploy(final DeploymentGroup deploymentGroup, final String host) { final ZooKeeperClient client = provider.get("rollingUpdateUndeploy"); final List<ZooKeeperOperation> operations = Lists.newArrayList(); for (final Deployment deployment : getTasks(client, host).values()) { final boolean isOwnedByDeploymentGroup = Objects.equals( deployment.getDeploymentGroupName(), deploymentGroup.getName()); final boolean isSameJob = deployment.getJobId().equals(deploymentGroup.getJobId()); if (isOwnedByDeploymentGroup || ( isSameJob && deploymentGroup.getRolloutOptions().getMigrate())) { if (isSameJob && isOwnedByDeploymentGroup && deployment.getGoal().equals(Goal.START)) { // The job we want deployed is already deployed and set to run, so just leave it. continue; } try { operations.addAll(getUndeployOperations(client, host, deployment.getJobId(), Job.EMPTY_TOKEN)); } catch (TokenVerificationException | HostNotFoundException e) { return RollingUpdateTaskResult.error(e, host); } catch (JobNotDeployedException e) { // probably somebody beat us to the punch of undeploying. that's fine. } } } return RollingUpdateTaskResult.of(operations); }