Search in sources :

Example 26 with HeliosRuntimeException

use of com.spotify.helios.common.HeliosRuntimeException in project helios by spotify.

the class ZooKeeperMasterModel method undeployJob.

/**
   * Undeploys the job specified by {@code jobId} on {@code host}.
   */
@Override
public Deployment undeployJob(final String host, final JobId jobId, final String token) throws HostNotFoundException, JobNotDeployedException, TokenVerificationException {
    log.info("undeploying {}: {}", jobId, host);
    final ZooKeeperClient client = provider.get("undeployJob");
    assertHostExists(client, host);
    final Deployment deployment = getDeployment(host, jobId);
    if (deployment == null) {
        throw new JobNotDeployedException(host, jobId);
    }
    final Job job = getJob(client, jobId);
    verifyToken(token, job);
    final String configHostJobPath = Paths.configHostJob(host, jobId);
    try {
        // use listRecursive to remove both job node and its child creation node
        final List<String> nodes = newArrayList(reverse(client.listRecursive(configHostJobPath)));
        nodes.add(Paths.configJobHost(jobId, host));
        final List<Integer> staticPorts = staticPorts(job);
        for (final int port : staticPorts) {
            nodes.add(Paths.configHostPort(host, port));
        }
        client.transaction(delete(nodes));
    } catch (NoNodeException e) {
        // throw an exception and handle it the same as if we discovered this earlier.
        throw new JobNotDeployedException(host, jobId);
    } catch (KeeperException e) {
        throw new HeliosRuntimeException("Removing deployment failed", e);
    }
    return deployment;
}
Also used : NoNodeException(org.apache.zookeeper.KeeperException.NoNodeException) ZooKeeperClient(com.spotify.helios.servicescommon.coordination.ZooKeeperClient) HeliosRuntimeException(com.spotify.helios.common.HeliosRuntimeException) Deployment(com.spotify.helios.common.descriptors.Deployment) Job(com.spotify.helios.common.descriptors.Job) KeeperException(org.apache.zookeeper.KeeperException)

Example 27 with HeliosRuntimeException

use of com.spotify.helios.common.HeliosRuntimeException in project helios by spotify.

the class ZooKeeperMasterModel method getUndeployOperations.

private List<ZooKeeperOperation> getUndeployOperations(final ZooKeeperClient client, final String host, final JobId jobId, final String token) throws HostNotFoundException, JobNotDeployedException, TokenVerificationException {
    assertHostExists(client, host);
    final Deployment deployment = getDeployment(host, jobId);
    if (deployment == null) {
        throw new JobNotDeployedException(host, jobId);
    }
    final Job job = getJob(client, jobId);
    verifyToken(token, job);
    final String configHostJobPath = Paths.configHostJob(host, jobId);
    try {
        // use listRecursive to remove both job node and its child creation node
        final List<String> nodes = newArrayList(reverse(client.listRecursive(configHostJobPath)));
        nodes.add(Paths.configJobHost(jobId, host));
        final List<Integer> staticPorts = staticPorts(job);
        for (final int port : staticPorts) {
            nodes.add(Paths.configHostPort(host, port));
        }
        return ImmutableList.of(delete(nodes));
    } catch (NoNodeException e) {
        // throw an exception and handle it the same as if we discovered this earlier.
        throw new JobNotDeployedException(host, jobId);
    } catch (KeeperException e) {
        throw new HeliosRuntimeException("calculating undeploy operations failed", e);
    }
}
Also used : NoNodeException(org.apache.zookeeper.KeeperException.NoNodeException) HeliosRuntimeException(com.spotify.helios.common.HeliosRuntimeException) Deployment(com.spotify.helios.common.descriptors.Deployment) Job(com.spotify.helios.common.descriptors.Job) KeeperException(org.apache.zookeeper.KeeperException)

Aggregations

HeliosRuntimeException (com.spotify.helios.common.HeliosRuntimeException)27 KeeperException (org.apache.zookeeper.KeeperException)23 NoNodeException (org.apache.zookeeper.KeeperException.NoNodeException)20 ZooKeeperClient (com.spotify.helios.servicescommon.coordination.ZooKeeperClient)16 JobId (com.spotify.helios.common.descriptors.JobId)10 IOException (java.io.IOException)10 ZooKeeperOperation (com.spotify.helios.servicescommon.coordination.ZooKeeperOperation)9 Job (com.spotify.helios.common.descriptors.Job)7 RolloutTask (com.spotify.helios.common.descriptors.RolloutTask)5 Task (com.spotify.helios.common.descriptors.Task)5 Deployment (com.spotify.helios.common.descriptors.Deployment)4 DeploymentGroup (com.spotify.helios.common.descriptors.DeploymentGroup)4 UUID (java.util.UUID)4 NodeExistsException (org.apache.zookeeper.KeeperException.NodeExistsException)4 ImmutableList (com.google.common.collect.ImmutableList)3 Node (com.spotify.helios.servicescommon.coordination.Node)3 DeploymentGroupStatus (com.spotify.helios.common.descriptors.DeploymentGroupStatus)2 HostNotFoundException (com.spotify.helios.master.HostNotFoundException)2 RollingUpdateOp (com.spotify.helios.rollingupdate.RollingUpdateOp)2 DefaultZooKeeperClient (com.spotify.helios.servicescommon.coordination.DefaultZooKeeperClient)2