1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.jclouds.vcloud;
20
21 import static org.jclouds.vcloud.VCloudMediaType.CATALOGITEM_XML;
22 import static org.jclouds.vcloud.VCloudMediaType.CATALOG_XML;
23 import static org.jclouds.vcloud.VCloudMediaType.NETWORK_XML;
24 import static org.jclouds.vcloud.VCloudMediaType.ORG_XML;
25 import static org.jclouds.vcloud.VCloudMediaType.TASKSLIST_XML;
26 import static org.jclouds.vcloud.VCloudMediaType.TASK_XML;
27 import static org.jclouds.vcloud.VCloudMediaType.VDC_XML;
28
29 import java.net.URI;
30
31 import javax.annotation.Nullable;
32 import javax.ws.rs.Consumes;
33 import javax.ws.rs.GET;
34 import javax.ws.rs.POST;
35 import javax.ws.rs.Path;
36
37 import org.jclouds.rest.annotations.EndpointParam;
38 import org.jclouds.rest.annotations.ExceptionParser;
39 import org.jclouds.rest.annotations.RequestFilters;
40 import org.jclouds.rest.annotations.XMLResponseParser;
41 import org.jclouds.rest.functions.ReturnNullOnNotFoundOr404;
42 import org.jclouds.vcloud.domain.Catalog;
43 import org.jclouds.vcloud.domain.CatalogItem;
44 import org.jclouds.vcloud.domain.Org;
45 import org.jclouds.vcloud.domain.Task;
46 import org.jclouds.vcloud.domain.TasksList;
47 import org.jclouds.vcloud.domain.VDC;
48 import org.jclouds.vcloud.domain.network.OrgNetwork;
49 import org.jclouds.vcloud.filters.SetVCloudTokenCookie;
50 import org.jclouds.vcloud.functions.OrgNameAndCatalogNameToEndpoint;
51 import org.jclouds.vcloud.functions.OrgNameAndVDCNameToEndpoint;
52 import org.jclouds.vcloud.functions.OrgNameCatalogNameItemNameToEndpoint;
53 import org.jclouds.vcloud.functions.OrgNameToEndpoint;
54 import org.jclouds.vcloud.functions.OrgNameToTasksListEndpoint;
55 import org.jclouds.vcloud.functions.OrgNameVDCNameResourceEntityNameToEndpoint;
56 import org.jclouds.vcloud.xml.CatalogHandler;
57 import org.jclouds.vcloud.xml.CatalogItemHandler;
58 import org.jclouds.vcloud.xml.OrgHandler;
59 import org.jclouds.vcloud.xml.OrgNetworkHandler;
60 import org.jclouds.vcloud.xml.TaskHandler;
61 import org.jclouds.vcloud.xml.TasksListHandler;
62 import org.jclouds.vcloud.xml.VDCHandler;
63
64 import com.google.common.util.concurrent.ListenableFuture;
65
66
67
68
69
70
71
72
73 @RequestFilters(SetVCloudTokenCookie.class)
74 public interface CommonVCloudAsyncClient {
75
76
77
78
79 @GET
80 @XMLResponseParser(OrgHandler.class)
81 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
82 @Consumes(ORG_XML)
83 ListenableFuture<? extends Org> getOrg(@EndpointParam URI orgId);
84
85
86
87
88 @GET
89 @XMLResponseParser(OrgHandler.class)
90 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
91 @Consumes(ORG_XML)
92 ListenableFuture<? extends Org> findOrgNamed(
93 @Nullable @EndpointParam(parser = OrgNameToEndpoint.class) String orgName);
94
95
96
97
98 @GET
99 @XMLResponseParser(CatalogHandler.class)
100 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
101 @Consumes(CATALOG_XML)
102 ListenableFuture<? extends Catalog> getCatalog(@EndpointParam URI catalogId);
103
104
105
106
107 @GET
108 @XMLResponseParser(CatalogHandler.class)
109 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
110 @Consumes(CATALOG_XML)
111 ListenableFuture<? extends Catalog> findCatalogInOrgNamed(
112 @Nullable @EndpointParam(parser = OrgNameAndCatalogNameToEndpoint.class) String orgName,
113 @Nullable @EndpointParam(parser = OrgNameAndCatalogNameToEndpoint.class) String catalogName);
114
115
116
117
118 @GET
119 @Consumes(CATALOGITEM_XML)
120 @XMLResponseParser(CatalogItemHandler.class)
121 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
122 ListenableFuture<? extends CatalogItem> getCatalogItem(@EndpointParam URI catalogItem);
123
124
125
126
127 @GET
128 @Consumes(CATALOGITEM_XML)
129 @XMLResponseParser(CatalogItemHandler.class)
130 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
131 ListenableFuture<? extends CatalogItem> findCatalogItemInOrgCatalogNamed(
132 @Nullable @EndpointParam(parser = OrgNameCatalogNameItemNameToEndpoint.class) String orgName,
133 @Nullable @EndpointParam(parser = OrgNameCatalogNameItemNameToEndpoint.class) String catalogName,
134 @EndpointParam(parser = OrgNameCatalogNameItemNameToEndpoint.class) String itemName);
135
136
137
138
139 @GET
140 @Consumes(NETWORK_XML)
141 @XMLResponseParser(OrgNetworkHandler.class)
142 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
143 ListenableFuture<? extends OrgNetwork> findNetworkInOrgVDCNamed(
144 @Nullable @EndpointParam(parser = OrgNameVDCNameResourceEntityNameToEndpoint.class) String orgName,
145 @Nullable @EndpointParam(parser = OrgNameVDCNameResourceEntityNameToEndpoint.class) String catalogName,
146 @EndpointParam(parser = OrgNameVDCNameResourceEntityNameToEndpoint.class) String networkName);
147
148
149
150
151 @GET
152 @Consumes(NETWORK_XML)
153 @XMLResponseParser(OrgNetworkHandler.class)
154 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
155 ListenableFuture<? extends OrgNetwork> getNetwork(@EndpointParam URI network);
156
157
158
159
160 @GET
161 @XMLResponseParser(VDCHandler.class)
162 @Consumes(VDC_XML)
163 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
164 ListenableFuture<? extends VDC> getVDC(@EndpointParam URI vdc);
165
166
167
168
169 @GET
170 @XMLResponseParser(VDCHandler.class)
171 @Consumes(VDC_XML)
172 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
173 ListenableFuture<? extends VDC> findVDCInOrgNamed(
174 @Nullable @EndpointParam(parser = OrgNameAndVDCNameToEndpoint.class) String orgName,
175 @Nullable @EndpointParam(parser = OrgNameAndVDCNameToEndpoint.class) String vdcName);
176
177
178
179
180 @GET
181 @Consumes(TASKSLIST_XML)
182 @XMLResponseParser(TasksListHandler.class)
183 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
184 ListenableFuture<? extends TasksList> getTasksList(@EndpointParam URI tasksListId);
185
186
187
188
189 @GET
190 @Consumes(TASKSLIST_XML)
191 @XMLResponseParser(TasksListHandler.class)
192 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
193 ListenableFuture<? extends TasksList> findTasksListInOrgNamed(
194 @Nullable @EndpointParam(parser = OrgNameToTasksListEndpoint.class) String orgName);
195
196
197
198
199 @GET
200 @Consumes(TASK_XML)
201 @XMLResponseParser(TaskHandler.class)
202 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
203 ListenableFuture<? extends Task> getTask(@EndpointParam URI taskId);
204
205
206
207
208 @POST
209 @Path("/action/cancel")
210 ListenableFuture<Void> cancelTask(@EndpointParam URI taskId);
211
212 }