1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.jclouds.trmk.ecloud;
20
21 import static javax.ws.rs.core.MediaType.APPLICATION_XML;
22 import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.INTERNETSERVICESLIST_XML;
23 import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.INTERNETSERVICE_XML;
24 import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.IPADDRESS_LIST_XML;
25 import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.KEYSLIST_XML;
26 import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.PUBLICIP_XML;
27 import static org.jclouds.trmk.ecloud.TerremarkECloudMediaType.VAPPEXTINFO_XML;
28 import static org.jclouds.trmk.vcloud_0_8.TerremarkVCloudMediaType.NETWORK_XML;
29 import static org.jclouds.trmk.vcloud_0_8.TerremarkVCloudMediaType.ORG_XML;
30
31 import java.net.URI;
32 import java.util.Set;
33
34 import org.jclouds.javax.annotation.Nullable;
35 import javax.ws.rs.Consumes;
36 import javax.ws.rs.DELETE;
37 import javax.ws.rs.GET;
38 import javax.ws.rs.POST;
39 import javax.ws.rs.Path;
40 import javax.ws.rs.Produces;
41
42 import org.jclouds.rest.annotations.Delegate;
43 import org.jclouds.rest.annotations.EndpointParam;
44 import org.jclouds.rest.annotations.ExceptionParser;
45 import org.jclouds.rest.annotations.MapBinder;
46 import org.jclouds.rest.annotations.PayloadParam;
47 import org.jclouds.rest.annotations.RequestFilters;
48 import org.jclouds.rest.annotations.XMLResponseParser;
49 import org.jclouds.rest.functions.ReturnEmptySetOnNotFoundOr404;
50 import org.jclouds.rest.functions.ReturnNullOnNotFoundOr404;
51 import org.jclouds.rest.functions.ReturnVoidOnNotFoundOr404;
52 import org.jclouds.trmk.ecloud.domain.ECloudOrg;
53 import org.jclouds.trmk.ecloud.features.DataCenterOperationsAsyncClient;
54 import org.jclouds.trmk.ecloud.features.TagOperationsAsyncClient;
55 import org.jclouds.trmk.ecloud.xml.ECloudOrgHandler;
56 import org.jclouds.trmk.vcloud_0_8.TerremarkVCloudAsyncClient;
57 import org.jclouds.trmk.vcloud_0_8.binders.BindCreateKeyToXmlPayload;
58 import org.jclouds.trmk.vcloud_0_8.domain.InternetService;
59 import org.jclouds.trmk.vcloud_0_8.domain.IpAddress;
60 import org.jclouds.trmk.vcloud_0_8.domain.KeyPair;
61 import org.jclouds.trmk.vcloud_0_8.domain.Network;
62 import org.jclouds.trmk.vcloud_0_8.domain.NetworkExtendedInfo;
63 import org.jclouds.trmk.vcloud_0_8.domain.Protocol;
64 import org.jclouds.trmk.vcloud_0_8.domain.PublicIpAddress;
65 import org.jclouds.trmk.vcloud_0_8.domain.VAppExtendedInfo;
66 import org.jclouds.trmk.vcloud_0_8.filters.SetVCloudTokenCookie;
67 import org.jclouds.trmk.vcloud_0_8.functions.OrgNameToEndpoint;
68 import org.jclouds.trmk.vcloud_0_8.functions.OrgNameVDCNameNetworkNameToEndpoint;
69 import org.jclouds.trmk.vcloud_0_8.functions.OrgNameVDCNameResourceEntityNameToEndpoint;
70 import org.jclouds.trmk.vcloud_0_8.functions.OrgURIToKeysListEndpoint;
71 import org.jclouds.trmk.vcloud_0_8.functions.VDCURIToInternetServicesEndpoint;
72 import org.jclouds.trmk.vcloud_0_8.functions.VDCURIToPublicIPsEndpoint;
73 import org.jclouds.trmk.vcloud_0_8.options.AddInternetServiceOptions;
74 import org.jclouds.trmk.vcloud_0_8.xml.InternetServiceHandler;
75 import org.jclouds.trmk.vcloud_0_8.xml.InternetServicesHandler;
76 import org.jclouds.trmk.vcloud_0_8.xml.IpAddressesHandler;
77 import org.jclouds.trmk.vcloud_0_8.xml.KeyPairByNameHandler;
78 import org.jclouds.trmk.vcloud_0_8.xml.KeyPairHandler;
79 import org.jclouds.trmk.vcloud_0_8.xml.KeyPairsHandler;
80 import org.jclouds.trmk.vcloud_0_8.xml.NetworkExtendedInfoHandler;
81 import org.jclouds.trmk.vcloud_0_8.xml.NetworkHandler;
82 import org.jclouds.trmk.vcloud_0_8.xml.PublicIpAddressHandler;
83 import org.jclouds.trmk.vcloud_0_8.xml.VAppExtendedInfoHandler;
84
85 import com.google.common.util.concurrent.ListenableFuture;
86
87
88
89
90
91
92
93
94
95
96 @RequestFilters(SetVCloudTokenCookie.class)
97 public interface TerremarkECloudAsyncClient extends TerremarkVCloudAsyncClient {
98
99
100
101
102 @Delegate
103 DataCenterOperationsAsyncClient getDataCenterOperationsClient();
104
105
106
107
108
109 @Delegate
110 TagOperationsAsyncClient getTagOperationsClient();
111
112 @Override
113 @GET
114 @XMLResponseParser(ECloudOrgHandler.class)
115 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
116 @Consumes(ORG_XML)
117 ListenableFuture<? extends ECloudOrg> getOrg(@EndpointParam URI orgId);
118
119 @Override
120 @GET
121 @XMLResponseParser(ECloudOrgHandler.class)
122 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
123 @Consumes(ORG_XML)
124 ListenableFuture<? extends ECloudOrg> findOrgNamed(
125 @Nullable @EndpointParam(parser = OrgNameToEndpoint.class) String orgName);
126
127
128
129
130 @GET
131 @Consumes(INTERNETSERVICESLIST_XML)
132 @XMLResponseParser(InternetServicesHandler.class)
133 @ExceptionParser(ReturnEmptySetOnNotFoundOr404.class)
134 @Override
135 ListenableFuture<? extends Set<InternetService>> getAllInternetServicesInVDC(
136 @EndpointParam(parser = VDCURIToInternetServicesEndpoint.class) URI vDCId);
137
138
139
140
141 @POST
142 @Consumes(PUBLICIP_XML)
143 @XMLResponseParser(PublicIpAddressHandler.class)
144 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
145 ListenableFuture<PublicIpAddress> activatePublicIpInVDC(
146 @EndpointParam(parser = VDCURIToPublicIPsEndpoint.class) URI vDCId);
147
148
149
150
151 @POST
152 @Path("/internetServices")
153 @Produces(INTERNETSERVICE_XML)
154 @Consumes(INTERNETSERVICE_XML)
155 @XMLResponseParser(InternetServiceHandler.class)
156 @MapBinder(AddInternetServiceOptions.class)
157 @Override
158 ListenableFuture<? extends InternetService> addInternetServiceToExistingIp(@EndpointParam URI existingIpId,
159 @PayloadParam("name") String serviceName, @PayloadParam("protocol") Protocol protocol,
160 @PayloadParam("port") int port, AddInternetServiceOptions... options);
161
162
163
164
165 @GET
166 @Path("/internetServices")
167 @Consumes(INTERNETSERVICESLIST_XML)
168 @XMLResponseParser(InternetServicesHandler.class)
169 @ExceptionParser(ReturnEmptySetOnNotFoundOr404.class)
170 @Override
171 ListenableFuture<? extends Set<InternetService>> getInternetServicesOnPublicIp(@EndpointParam URI ipId);
172
173
174
175
176 @GET
177 @Consumes(INTERNETSERVICESLIST_XML)
178 @XMLResponseParser(InternetServiceHandler.class)
179 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
180 @Override
181 ListenableFuture<? extends InternetService> getInternetService(@EndpointParam URI internetServiceId);
182
183
184
185
186 @GET
187 @XMLResponseParser(KeyPairByNameHandler.class)
188 @Consumes(KEYSLIST_XML)
189 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
190 ListenableFuture<? extends KeyPair> findKeyPairInOrg(
191 @Nullable @EndpointParam(parser = OrgURIToKeysListEndpoint.class) URI org, String keyName);
192
193
194
195
196 @GET
197 @Consumes(KEYSLIST_XML)
198 @XMLResponseParser(KeyPairsHandler.class)
199 @ExceptionParser(ReturnEmptySetOnNotFoundOr404.class)
200 ListenableFuture<? extends Set<KeyPair>> listKeyPairsInOrg(
201 @Nullable @EndpointParam(parser = OrgURIToKeysListEndpoint.class) URI org);
202
203
204
205
206 @GET
207 @Consumes(KEYSLIST_XML)
208 @XMLResponseParser(KeyPairsHandler.class)
209 @ExceptionParser(ReturnEmptySetOnNotFoundOr404.class)
210 ListenableFuture<? extends Set<KeyPair>> listKeyPairs(@EndpointParam URI keysList);
211
212
213
214
215 @POST
216 @Produces(KEYSLIST_XML)
217 @Consumes(KEYSLIST_XML)
218 @XMLResponseParser(KeyPairHandler.class)
219 @MapBinder(BindCreateKeyToXmlPayload.class)
220 ListenableFuture<? extends KeyPair> generateKeyPairInOrg(
221 @EndpointParam(parser = OrgURIToKeysListEndpoint.class) URI org, @PayloadParam("name") String name,
222 @PayloadParam("isDefault") boolean makeDefault);
223
224
225
226
227 @GET
228 @XMLResponseParser(KeyPairHandler.class)
229 @Consumes(APPLICATION_XML)
230 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
231 ListenableFuture<? extends KeyPair> getKeyPair(@EndpointParam URI keyId);
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251 @DELETE
252 @ExceptionParser(ReturnVoidOnNotFoundOr404.class)
253 ListenableFuture<Void> deleteKeyPair(@EndpointParam URI keyId);
254
255
256
257
258 @Override
259 @GET
260 @Consumes(NETWORK_XML)
261 @XMLResponseParser(NetworkHandler.class)
262 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
263 ListenableFuture<? extends Network> findNetworkInOrgVDCNamed(
264 @Nullable @EndpointParam(parser = OrgNameVDCNameNetworkNameToEndpoint.class) String orgName,
265 @Nullable @EndpointParam(parser = OrgNameVDCNameNetworkNameToEndpoint.class) String catalogName,
266 @EndpointParam(parser = OrgNameVDCNameResourceEntityNameToEndpoint.class) String networkName);
267
268
269
270
271 @Override
272 @GET
273 @Consumes(NETWORK_XML)
274 @XMLResponseParser(NetworkHandler.class)
275 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
276 ListenableFuture<? extends Network> getNetwork(@EndpointParam URI network);
277
278
279
280
281 @GET
282 @XMLResponseParser(NetworkExtendedInfoHandler.class)
283 @Consumes(APPLICATION_XML)
284 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
285 ListenableFuture<? extends NetworkExtendedInfo> getNetworkExtendedInfo(@EndpointParam URI network);
286
287
288
289
290 @GET
291 @Consumes(IPADDRESS_LIST_XML)
292 @XMLResponseParser(IpAddressesHandler.class)
293 @ExceptionParser(ReturnEmptySetOnNotFoundOr404.class)
294 ListenableFuture<? extends Set<IpAddress>> getIpAddresses(@EndpointParam URI network);
295
296
297
298
299 @GET
300 @Consumes(VAPPEXTINFO_XML)
301 @XMLResponseParser(VAppExtendedInfoHandler.class)
302 @ExceptionParser(ReturnNullOnNotFoundOr404.class)
303 ListenableFuture<? extends VAppExtendedInfo> getVAppExtendedInfo(@EndpointParam URI href);
304
305 }