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