Search in sources :

Example 6 with NomadApiClient

use of com.hashicorp.nomad.javasdk.NomadApiClient in project heron by twitter.

the class NomadScheduler method onKill.

@Override
public boolean onKill(Scheduler.KillTopologyRequest request) {
    String topologyName = request.getTopologyName();
    LOG.fine("Killing Topology " + topologyName);
    NomadApiClient apiClient = getApiClient(NomadContext.getSchedulerURI(this.localConfig));
    try {
        List<Job> jobs = getTopologyJobs(apiClient, topologyName);
        killJobs(apiClient, jobs.toArray(new Job[jobs.size()]));
    } catch (RuntimeException e) {
        LOG.log(Level.SEVERE, "Failed to kill topology " + topologyName + " with error: " + e.getMessage(), e);
        return false;
    } finally {
        closeClient(apiClient);
    }
    return true;
}
Also used : Job(com.hashicorp.nomad.apimodel.Job) NomadApiClient(com.hashicorp.nomad.javasdk.NomadApiClient)

Example 7 with NomadApiClient

use of com.hashicorp.nomad.javasdk.NomadApiClient in project heron by twitter.

the class NomadScheduler method onRestart.

@Override
public boolean onRestart(Scheduler.RestartTopologyRequest request) {
    LOG.fine("Restarting Topology " + request.getTopologyName() + " container " + request.getContainerIndex());
    NomadApiClient apiClient = getApiClient(NomadContext.getSchedulerURI(this.localConfig));
    String topologyName = request.getTopologyName();
    int containerIndex = request.getContainerIndex();
    try {
        if (containerIndex == -1) {
            // restarting whole topology
            List<Job> jobs = getTopologyJobs(apiClient, topologyName);
            restartJobs(apiClient, jobs.toArray(new Job[jobs.size()]));
        } else {
            // restarting single container
            Job job = getTopologyContainerJob(apiClient, topologyName, containerIndex);
            restartJobs(apiClient, job);
        }
    } catch (RuntimeException e) {
        LOG.log(Level.SEVERE, "Failed to restart topology " + topologyName + " with error: " + e.getMessage(), e);
        return false;
    } finally {
        closeClient(apiClient);
    }
    return true;
}
Also used : Job(com.hashicorp.nomad.apimodel.Job) NomadApiClient(com.hashicorp.nomad.javasdk.NomadApiClient)

Example 8 with NomadApiClient

use of com.hashicorp.nomad.javasdk.NomadApiClient in project twister2 by DSC-SPIDAL.

the class NomadController method start.

@Override
public boolean start(JobAPI.Job job) {
    String uri = NomadContext.nomadSchedulerUri(config);
    NomadApiClient nomadApiClient = new NomadApiClient(new NomadApiConfiguration.Builder().setAddress(uri).build());
    Job nomadJob = getJob(job);
    try {
        EvaluationResponse response = nomadApiClient.getJobsApi().register(nomadJob);
        LOG.log(Level.INFO, "Submitted job to nomad: " + response);
    } catch (IOException | NomadException e) {
        LOG.log(Level.SEVERE, "Failed to submit the job: ", e);
    } finally {
        closeClient(nomadApiClient);
    }
    return false;
}
Also used : NomadException(com.hashicorp.nomad.javasdk.NomadException) EvaluationResponse(com.hashicorp.nomad.javasdk.EvaluationResponse) IOException(java.io.IOException) Job(com.hashicorp.nomad.apimodel.Job) NomadApiClient(com.hashicorp.nomad.javasdk.NomadApiClient) NomadApiConfiguration(com.hashicorp.nomad.javasdk.NomadApiConfiguration)

Aggregations

Job (com.hashicorp.nomad.apimodel.Job)8 NomadApiClient (com.hashicorp.nomad.javasdk.NomadApiClient)8 NomadApiConfiguration (com.hashicorp.nomad.javasdk.NomadApiConfiguration)2 NomadException (com.hashicorp.nomad.javasdk.NomadException)2 IOException (java.io.IOException)2 EvaluationResponse (com.hashicorp.nomad.javasdk.EvaluationResponse)1