summaryrefslogtreecommitdiffstats
path: root/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/deployment/InternalBuildService.java
blob: 381a4712ec8b8edde8f4a693e826957324f78bb4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package com.yahoo.vespa.hosted.controller.deployment;

import com.yahoo.vespa.hosted.controller.api.integration.BuildService;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;

import java.util.Optional;

/**
 * Wraps a JobController as a BuildService.
 *
 * Shall be inlined when the {@link DelegatingBuildService} delegates all jobs to it.
 *
 * @author jonmv
 */
public class InternalBuildService implements BuildService {

    private final JobController jobs;

    public InternalBuildService(JobController jobs) {
        this.jobs = jobs;
    }

    @Override
    public void trigger(BuildJob buildJob) {
        jobs.run(buildJob.applicationId(), JobType.fromJobName(buildJob.jobName()));
    }

    @Override
    public JobState stateOf(BuildJob buildJob) {
        Optional<RunStatus> run = jobs.last(buildJob.applicationId(), JobType.fromJobName(buildJob.jobName()));
        return run.isPresent() && ! run.get().hasEnded() ? JobState.running : JobState.idle;
    }

    @Override
    public boolean builds(BuildJob buildJob) {
        return jobs.builds(buildJob.applicationId());
    }

}