aboutsummaryrefslogtreecommitdiffstats
path: root/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/api/application/v4/EnvironmentResource.java
blob: 7953fbc4055a260ef3d7f570b1e5b44e6d963326 (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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.vespa.hosted.controller.api.application.v4;

import com.fasterxml.jackson.databind.JsonNode;
import com.yahoo.config.provision.HostName;
import com.yahoo.vespa.hosted.controller.api.application.v4.model.InstanceInformation;
import com.yahoo.vespa.hosted.controller.api.identifiers.ApplicationId;
import com.yahoo.vespa.hosted.controller.api.identifiers.EnvironmentId;
import com.yahoo.vespa.hosted.controller.api.identifiers.InstanceId;
import com.yahoo.vespa.hosted.controller.api.identifiers.RegionId;
import com.yahoo.vespa.hosted.controller.api.identifiers.TenantId;

import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

/**
 * @author Tony Vaagenes
 * @author gv
 */
@Path("") //Ensures that the produces annotation is inherited
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface EnvironmentResource {

    String API_PATH = "environment";

    String APPLICATION_TEST_ZIP = "applicationTestZip";
    String APPLICATION_ZIP = "applicationZip";
    String SUBMIT_OPTIONS = "submitOptions";

    @DELETE
    @Path("{environmentId}/region/{regionId}/instance/{instanceId}")
    String deactivate(@PathParam("tenantId") TenantId tenantId,
                      @PathParam("applicationId") ApplicationId applicationId,
                      @PathParam("environmentId") EnvironmentId environmentId,
                      @PathParam("regionId") RegionId regionId,
                      @PathParam("instanceId") InstanceId instanceId);

    @POST
    @Path("{environmentId}/region/{regionId}/instance/{instanceId}/restart")
    String restart(@PathParam("tenantId") TenantId tenantId,
                   @PathParam("applicationId") ApplicationId applicationId,
                   @PathParam("environmentId") EnvironmentId environmentId,
                   @PathParam("regionId") RegionId regionId,
                   @PathParam("instanceId") InstanceId instanceId,
                   @QueryParam("hostname") HostName hostname);

    @GET
    @Path("{environmentId}/region/{regionId}/instance/{instanceId}")
    InstanceInformation instanceInfo(@PathParam("tenantId") TenantId tenantId,
                                     @PathParam("applicationId") ApplicationId applicationId,
                                     @PathParam("environmentId") EnvironmentId environmentId,
                                     @PathParam("regionId") RegionId regionId,
                                     @PathParam("instanceId") InstanceId instanceId);

    @GET
    @Path("{environmentId}/region/{regionId}/instance/{instanceId}/converge")
    JsonNode waitForConfigConverge(@PathParam("tenantId") TenantId tenantId,
                                   @PathParam("applicationId") ApplicationId applicationId,
                                   @PathParam("environmentId") EnvironmentId environmentId,
                                   @PathParam("regionId") RegionId regionId,
                                   @PathParam("instanceId") InstanceId instanceId,
                                   @QueryParam("timeout") long timeoutInSeconds);

    @PUT
    @Path("{environmentId}/region/{regionId}/instance/{instanceId}/global-rotation/override")
    String setRotationOut(@PathParam("tenantId") TenantId tenantId,
                          @PathParam("applicationId") ApplicationId applicationId,
                          @PathParam("environmentId") EnvironmentId environmentId,
                          @PathParam("regionId") RegionId regionId,
                          @PathParam("instanceId") InstanceId instanceId);

    @DELETE
    @Path("{environmentId}/region/{regionId}/instance/{instanceId}/global-rotation/override")
    String setRotationIn(@PathParam("tenantId") TenantId tenantId,
                         @PathParam("applicationId") ApplicationId applicationId,
                         @PathParam("environmentId") EnvironmentId environmentId,
                         @PathParam("regionId") RegionId regionId,
                         @PathParam("instanceId") InstanceId instanceId);

}