You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2014/11/29 17:41:13 UTC
[26/39] stratos git commit: Removing jclouds/cloudstack fork in
dependencies
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/VolumeApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/VolumeApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/VolumeApi.java
deleted file mode 100644
index 2f601e9..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/VolumeApi.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.features;
-
-import java.util.Set;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.Fallbacks.VoidOnNotFoundOr404;
-import org.jclouds.cloudstack.domain.AsyncCreateResponse;
-import org.jclouds.cloudstack.domain.Volume;
-import org.jclouds.cloudstack.filters.AuthenticationFilter;
-import org.jclouds.cloudstack.options.ListVolumesOptions;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.OnlyElement;
-import org.jclouds.rest.annotations.QueryParams;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.SelectJson;
-import org.jclouds.rest.annotations.Unwrap;
-
-/**
- * Provides synchronous access to cloudstack via their REST API.
- * <p/>
- *
- * @see <a href="http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_User.html" />
- */
-@RequestFilters(AuthenticationFilter.class)
-@QueryParams(keys = "response", values = "json")
-public interface VolumeApi {
- /**
- * Create a volume with given name and diskOfferingId
- *
- * @param name name of the volume
- * @param diskOfferingId the ID of the disk offering.
- * @param zoneId the ID of the availability zone
- * @return AsyncCreateResponse job response used to track creation
- */
- @Named("listVolumes")
- @GET
- @QueryParams(keys = { "command", "listAll" }, values = { "listVolumes", "true" })
- @SelectJson("volume")
- @Consumes(MediaType.APPLICATION_JSON)
- @Fallback(EmptySetOnNotFoundOr404.class)
- Set<Volume> listVolumes(ListVolumesOptions... options);
-
- /**
- * Create a volume with given name, size and diskOfferingId
- *
- * @param name name of the volume
- * @param diskOfferingId the ID of the disk offering (the offering should have the custom disk size flag set)
- * @param zoneId the ID of the availability zone
- * @param size the size of volume required (in GB)
- * @return AsyncCreateResponse job response used to track creation
- */
- @Named("listVolumes")
- @GET
- @Consumes(MediaType.APPLICATION_JSON)
- @QueryParams(keys = { "command", "listAll" }, values = { "listVolumes", "true" })
- @SelectJson("volume")
- @OnlyElement
- @Fallback(NullOnNotFoundOr404.class)
- Volume getVolume(@QueryParam("id") String id);
-
-
- /**
- * Create a volume with given name and snapshotId
- *
- * @param name name of the volume
- * @param snapshotId Snapshot id to be used while creating the volume
- * @param zoneId the ID of the availability zone
- * @return AsyncCreateResponse job response used to track creation
- */
- @Named("createVolume")
- @GET
- @QueryParams(keys = "command", values = "createVolume")
- @Unwrap
- @Consumes(MediaType.APPLICATION_JSON)
- AsyncCreateResponse createVolumeFromDiskOfferingInZone(@QueryParam("name") String name,
- @QueryParam("diskofferingid") String diskOfferingId,
- @QueryParam("zoneid") String zoneId);
-
- /**
- * List volumes
- *
- * @return volume list, empty if not found
- */
- @GET
- @QueryParams(keys = "command", values = "createVolume")
- @Unwrap
- @Consumes(MediaType.APPLICATION_JSON)
- AsyncCreateResponse createVolumeFromCustomDiskOfferingInZone(@QueryParam("name") String name,
- @QueryParam("diskofferingid") String diskOfferingId,
- @QueryParam("zoneid") String zoneId,
- @QueryParam("size") int size);
-
- /**
- * Get volume by id
- *
- * @param id the volume id to retrieve
- * @return volume or null if not found
- */
- @Named("createVolume")
- @GET
- @QueryParams(keys = "command", values = "createVolume")
- @Unwrap
- @Consumes(MediaType.APPLICATION_JSON)
- AsyncCreateResponse createVolumeFromSnapshotInZone(@QueryParam("name") String name,
- @QueryParam("snapshotid") String snapshotId,
- @QueryParam("zoneid") String zoneId);
-
- /**
- * Deletes a attached disk volume
- *
- * @param id id of the volume
- */
- @Named("attachVolume")
- @GET
- @QueryParams(keys = "command", values = "attachVolume")
- @Unwrap
- @Consumes(MediaType.APPLICATION_JSON)
- AsyncCreateResponse attachVolume(@QueryParam("id") String volumeId,
- @QueryParam("virtualmachineid") String virtualMachineId);
-
- /**
- * Attaches a disk volume to a virtual machine.
- *
- * @param volumeId the ID of the disk volume
- * @param virtualMachineId the ID of the virtual machine
- * @return AsyncCreateResponse job response used to track creation
- */
- @Named("detachVolume")
- @GET
- @QueryParams(keys = "command", values = "detachVolume")
- @Unwrap
- @Consumes(MediaType.APPLICATION_JSON)
- AsyncCreateResponse detachVolume(@QueryParam("id") String volumeId);
-
- /**
- * Detaches a disk volume to a virtual machine.
- *
- * @param volumeId the ID of the disk volume
- * @return AsyncCreateResponse job response used to track creation
- */
- @Named("deleteVolume")
- @GET
- @QueryParams(keys = "command", values = "deleteVolume")
- @Fallback(VoidOnNotFoundOr404.class)
- void deleteVolume(@QueryParam("id") String id);
-
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/ZoneApi.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/ZoneApi.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/ZoneApi.java
deleted file mode 100644
index d7e8ff3..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/features/ZoneApi.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.features;
-
-import java.util.Set;
-
-import javax.inject.Named;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.GET;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-
-import org.jclouds.Fallbacks.EmptySetOnNotFoundOr404;
-import org.jclouds.Fallbacks.NullOnNotFoundOr404;
-import org.jclouds.cloudstack.domain.Zone;
-import org.jclouds.cloudstack.filters.AuthenticationFilter;
-import org.jclouds.cloudstack.options.ListZonesOptions;
-import org.jclouds.rest.annotations.Fallback;
-import org.jclouds.rest.annotations.OnlyElement;
-import org.jclouds.rest.annotations.QueryParams;
-import org.jclouds.rest.annotations.RequestFilters;
-import org.jclouds.rest.annotations.SelectJson;
-
-/**
- * Provides synchronous access to cloudstack via their REST API.
- * <p/>
- *
- * @see <a href="http://download.cloud.com/releases/2.2.0/api_2.2.12/TOC_User.html" />
- */
-@RequestFilters(AuthenticationFilter.class)
-@QueryParams(keys = "response", values = "json")
-public interface ZoneApi {
-
- /**
- * Lists zones
- *
- * @param options
- * if present, how to constrain the list.
- * @return zones matching query, or empty set, if no zones are found
- */
- @Named("listZones")
- @GET
- @QueryParams(keys = { "command", "listAll" }, values = { "listZones", "true" })
- @SelectJson("zone")
- @Consumes(MediaType.APPLICATION_JSON)
- @Fallback(EmptySetOnNotFoundOr404.class)
- Set<Zone> listZones(ListZonesOptions... options);
-
- /**
- * get a specific zone by id
- *
- * @param id
- * zone to get
- * @return zone or null if not found
- */
- @Named("listZones")
- @GET
- @QueryParams(keys = { "command", "listAll" }, values = { "listZones", "true" })
- @SelectJson("zone")
- @OnlyElement
- @Consumes(MediaType.APPLICATION_JSON)
- @Fallback(NullOnNotFoundOr404.class)
- Zone getZone(@QueryParam("id") String id);
-
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/filters/AddSessionKeyAndJSessionIdToRequest.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/filters/AddSessionKeyAndJSessionIdToRequest.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/filters/AddSessionKeyAndJSessionIdToRequest.java
deleted file mode 100644
index f08c0e8..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/filters/AddSessionKeyAndJSessionIdToRequest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.filters;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.cloudstack.domain.LoginResponse;
-import org.jclouds.http.HttpException;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpRequest.Builder;
-
-import com.google.common.base.Supplier;
-import com.google.common.net.HttpHeaders;
-
-/**
- *
- * @see <a href="http://docs.cloud.com/CloudStack_Documentation/Customizing_the_CloudStack_UI#Cross_Site_Request_Forgery_%28CSRF%29"
- * />
- */
-@Singleton
-public class AddSessionKeyAndJSessionIdToRequest implements AuthenticationFilter {
-
- private final Supplier<LoginResponse> loginResponseSupplier;
-
- @Inject
- public AddSessionKeyAndJSessionIdToRequest(Supplier<LoginResponse> loginResponseSupplier) {
- this.loginResponseSupplier = loginResponseSupplier;
- }
-
- @Override
- public HttpRequest filter(HttpRequest request) throws HttpException {
- LoginResponse loginResponse = loginResponseSupplier.get();
- Builder<?> builder = request.toBuilder();
- builder.replaceHeader(HttpHeaders.COOKIE, "JSESSIONID=" + loginResponse.getJSessionId());
- builder.replaceQueryParam("sessionkey", loginResponse.getSessionKey());
- return builder.build();
-
- }
-
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/filters/AuthenticationFilter.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/filters/AuthenticationFilter.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/filters/AuthenticationFilter.java
deleted file mode 100644
index 1e567a6..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/filters/AuthenticationFilter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.filters;
-
-import org.jclouds.http.HttpRequestFilter;
-
-import com.google.inject.ImplementedBy;
-
-/**
- * Marker interface that determines how we authenticate http requests in cloudstack. default to sign
- * requests as opposed to login.
- */
-@ImplementedBy(QuerySigner.class)
-public interface AuthenticationFilter extends HttpRequestFilter {
-
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/filters/QuerySigner.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/filters/QuerySigner.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/filters/QuerySigner.java
deleted file mode 100644
index 04610cc..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/filters/QuerySigner.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.filters;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Throwables.propagate;
-import static com.google.common.io.BaseEncoding.base64;
-import static com.google.common.io.ByteStreams.readBytes;
-import static org.jclouds.Constants.LOGGER_SIGNATURE;
-import static org.jclouds.crypto.Macs.asByteProcessor;
-import static org.jclouds.http.Uris.uriBuilder;
-import static org.jclouds.http.utils.Queries.queryParser;
-import static org.jclouds.util.Strings2.toInputStream;
-
-import java.io.IOException;
-import java.security.InvalidKeyException;
-import java.util.Map;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import com.google.common.base.Joiner;
-import org.jclouds.crypto.Crypto;
-import org.jclouds.domain.Credentials;
-import org.jclouds.http.HttpException;
-import org.jclouds.http.HttpRequest;
-import org.jclouds.http.HttpUtils;
-import org.jclouds.http.internal.SignatureWire;
-import org.jclouds.location.Provider;
-import org.jclouds.logging.Logger;
-import org.jclouds.rest.RequestSigner;
-import org.jclouds.util.Strings2;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSortedSet;
-import com.google.common.collect.Multimap;
-import com.google.common.io.ByteProcessor;
-
-/**
- *
- * @see <a href= "http://download.cloud.com/releases/2.2.0/api/user/2.2api_security_details.html" />
- */
-@Singleton
-public class QuerySigner implements AuthenticationFilter, RequestSigner {
-
- private final SignatureWire signatureWire;
- private final Supplier<Credentials> creds;
- private final Crypto crypto;
- private final HttpUtils utils;
-
- @Resource
- @Named(LOGGER_SIGNATURE)
- private Logger signatureLog = Logger.NULL;
-
- @Inject
- public QuerySigner(SignatureWire signatureWire, @Provider Supplier<Credentials> creds, Crypto crypto, HttpUtils utils) {
- this.signatureWire = signatureWire;
- this.creds = creds;
- this.crypto = crypto;
- this.utils = utils;
- }
-
- public HttpRequest filter(HttpRequest request) throws HttpException {
- checkNotNull(request, "request must be present");
- Multimap<String, String> decodedParams = queryParser().apply(request.getEndpoint().getRawQuery());
- addSigningParams(decodedParams);
- String stringToSign = createStringToSign(request, decodedParams);
- String signature = sign(stringToSign);
- addSignature(decodedParams, signature);
- request = request.toBuilder().endpoint(uriBuilder(request.getEndpoint()).query(decodedParams).build()).build();
- utils.logRequest(signatureLog, request, "<<");
- return request;
- }
-
- @VisibleForTesting
- void addSignature(Multimap<String, String> params, String signature) {
- params.replaceValues("signature", ImmutableList.of(signature));
- }
-
- @VisibleForTesting
- public String sign(String toSign) {
- String signature;
- try {
- ByteProcessor<byte[]> hmacSHA1 = asByteProcessor(crypto.hmacSHA1(creds.get().credential.getBytes()));
- signature = base64().encode(readBytes(toInputStream(toSign), hmacSHA1));
- if (signatureWire.enabled())
- signatureWire.input(toInputStream(signature));
- return signature;
- } catch (InvalidKeyException e) {
- throw propagate(e);
- } catch (IOException e) {
- throw propagate(e);
- }
- }
-
- @VisibleForTesting
- public String createStringToSign(HttpRequest request, Multimap<String, String> decodedParams) {
- utils.logRequest(signatureLog, request, ">>");
- // encode each parameter value first,
- ImmutableSortedSet.Builder<String> builder = ImmutableSortedSet.naturalOrder();
- for (Map.Entry<String, String> entry : decodedParams.entries())
- builder.add(entry.getKey() + "=" + Strings2.urlEncode(entry.getValue()));
- // then, lower case the entire query string
- String stringToSign = Joiner.on('&').join(builder.build()).toLowerCase();
- if (signatureWire.enabled())
- signatureWire.output(stringToSign);
-
- return stringToSign;
- }
-
- @VisibleForTesting
- void addSigningParams(Multimap<String, String> params) {
- params.replaceValues("apiKey", ImmutableList.of(creds.get().identity));
- params.removeAll("signature");
- }
-
- public String createStringToSign(HttpRequest input) {
- Multimap<String, String> decodedParams = queryParser().apply(input.getEndpoint().getQuery());
- addSigningParams(decodedParams);
- return createStringToSign(input, decodedParams);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CloudStackFallbacks.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CloudStackFallbacks.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CloudStackFallbacks.java
deleted file mode 100644
index 50185ed..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CloudStackFallbacks.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.util.concurrent.Futures.immediateFuture;
-import static org.jclouds.Fallbacks.valOnNotFoundOr404;
-import static org.jclouds.util.Throwables2.getFirstThrowableOfType;
-
-import org.jclouds.Fallback;
-
-import com.google.common.util.concurrent.ListenableFuture;
-
-public final class CloudStackFallbacks {
- private CloudStackFallbacks() {
- }
-
- /**
- * CloudStack is currently sending 431 errors with the text "Unable to find account owner for ip ". In this case, we
- * have to ignore as there's no means for us to avoid the problem, or action to take.
- */
- public static final class VoidOnNotFoundOr404OrUnableToFindAccountOwner implements Fallback<Void> {
- @Override
- public ListenableFuture<Void> create(Throwable t) throws Exception {
- return immediateFuture(createOrPropagate(t));
- }
-
- @Override
- public Void createOrPropagate(Throwable t) throws Exception {
- IllegalStateException e = getFirstThrowableOfType(checkNotNull(t, "throwable"), IllegalStateException.class);
- if (e != null && e.getMessage().indexOf("Unable to find account owner for") != -1) {
- return null;
- } else {
- return valOnNotFoundOr404(null, t);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CreateFirewallRulesForIP.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CreateFirewallRulesForIP.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CreateFirewallRulesForIP.java
deleted file mode 100644
index dd15e19..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CreateFirewallRulesForIP.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-
-import java.util.Set;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.cloudstack.CloudStackApi;
-import org.jclouds.cloudstack.domain.AsyncCreateResponse;
-import org.jclouds.cloudstack.domain.FirewallRule;
-import org.jclouds.cloudstack.domain.PublicIPAddress;
-import org.jclouds.cloudstack.options.CreateFirewallRuleOptions;
-import org.jclouds.cloudstack.strategy.BlockUntilJobCompletesAndReturnResult;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.logging.Logger;
-
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.ImmutableSet.Builder;
-
-@Singleton
-public class CreateFirewallRulesForIP {
-
- @Resource
- @Named(ComputeServiceConstants.COMPUTE_LOGGER)
- protected Logger logger = Logger.NULL;
-
- private final CloudStackApi client;
- private final BlockUntilJobCompletesAndReturnResult blockUntilJobCompletesAndReturnResult;
- private final LoadingCache<String, Set<FirewallRule>> getFirewallRulesByVirtualMachine;
-
- @Inject
- public CreateFirewallRulesForIP(CloudStackApi client,
- BlockUntilJobCompletesAndReturnResult blockUntilJobCompletesAndReturnResult,
- LoadingCache<String, Set<FirewallRule>> getFirewallRulesByVirtualMachine) {
- this.client = checkNotNull(client, "client");
- this.blockUntilJobCompletesAndReturnResult = checkNotNull(blockUntilJobCompletesAndReturnResult,
- "blockUntilJobCompletesAndReturnResult");
- this.getFirewallRulesByVirtualMachine = checkNotNull(getFirewallRulesByVirtualMachine,
- "getFirewallRulesByVirtualMachine");
- }
-
- public Set<FirewallRule> apply(PublicIPAddress ip, Iterable<Integer> ports) {
- return apply(ip, "tcp", ports);
- }
-
- public Set<FirewallRule> apply(PublicIPAddress ip, String protocol, Iterable<Integer> ports) {
- checkState(ip.getVirtualMachineId() != null,
- "ip %s should be static NATed to a virtual machine before applying rules", ip);
- if (Iterables.isEmpty(ports))
- return ImmutableSet.<FirewallRule> of();
- Builder<AsyncCreateResponse> responses = ImmutableSet.builder();
- for (int port : ports) {
- AsyncCreateResponse response = client.getFirewallApi().createFirewallRuleForIpAndProtocol(ip.getId(), FirewallRule.Protocol.fromValue(protocol),
- CreateFirewallRuleOptions.Builder.startPort(port).endPort(port));
- logger.debug(">> creating firewall rule IPAddress(%s) for protocol(%s), port(%s); response(%s)",
- ip.getId(), protocol, port, response);
- responses.add(response);
- }
- Builder<FirewallRule> rules = ImmutableSet.builder();
- for (AsyncCreateResponse response : responses.build()) {
- FirewallRule rule = blockUntilJobCompletesAndReturnResult.<FirewallRule> apply(response);
- rules.add(rule);
- getFirewallRulesByVirtualMachine.asMap().put(ip.getVirtualMachineId(), ImmutableSet.of(rule));
- }
- return rules.build();
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CreatePortForwardingRulesForIP.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CreatePortForwardingRulesForIP.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CreatePortForwardingRulesForIP.java
deleted file mode 100644
index dd09f77..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CreatePortForwardingRulesForIP.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-
-import java.util.Set;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.cloudstack.CloudStackApi;
-import org.jclouds.cloudstack.domain.AsyncCreateResponse;
-import org.jclouds.cloudstack.domain.IPForwardingRule;
-import org.jclouds.cloudstack.domain.PublicIPAddress;
-import org.jclouds.cloudstack.strategy.BlockUntilJobCompletesAndReturnResult;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.logging.Logger;
-
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.ImmutableSet.Builder;
-
-@Singleton
-public class CreatePortForwardingRulesForIP {
-
- @Resource
- @Named(ComputeServiceConstants.COMPUTE_LOGGER)
- protected Logger logger = Logger.NULL;
-
- private final CloudStackApi client;
- private final BlockUntilJobCompletesAndReturnResult blockUntilJobCompletesAndReturnResult;
- private final LoadingCache<String, Set<IPForwardingRule>> getIPForwardingRulesByVirtualMachine;
-
- @Inject
- public CreatePortForwardingRulesForIP(CloudStackApi client,
- BlockUntilJobCompletesAndReturnResult blockUntilJobCompletesAndReturnResult,
- LoadingCache<String, Set<IPForwardingRule>> getIPForwardingRulesByVirtualMachine) {
- this.client = checkNotNull(client, "client");
- this.blockUntilJobCompletesAndReturnResult = checkNotNull(blockUntilJobCompletesAndReturnResult,
- "blockUntilJobCompletesAndReturnResult");
- this.getIPForwardingRulesByVirtualMachine = checkNotNull(getIPForwardingRulesByVirtualMachine,
- "getIPForwardingRulesByVirtualMachine");
- }
-
- public Set<IPForwardingRule> apply(PublicIPAddress ip, Iterable<Integer> ports) {
- return apply(ip, "tcp", ports);
- }
-
- public Set<IPForwardingRule> apply(PublicIPAddress ip, String protocol, Iterable<Integer> ports) {
- checkState(ip.getVirtualMachineId() != null,
- "ip %s should be static NATed to a virtual machine before applying rules", ip);
- if (Iterables.isEmpty(ports))
- return ImmutableSet.<IPForwardingRule> of();
- Builder<AsyncCreateResponse> responses = ImmutableSet.builder();
- for (int port : ports) {
- AsyncCreateResponse response = client.getNATApi().createIPForwardingRule(ip.getId(), protocol, port);
- logger.debug(">> creating IP forwarding rule IPAddress(%s) for protocol(%s), port(%s); response(%s)",
- ip.getId(), protocol, port, response);
- responses.add(response);
- }
- Builder<IPForwardingRule> rules = ImmutableSet.builder();
- for (AsyncCreateResponse response : responses.build()) {
- IPForwardingRule rule = blockUntilJobCompletesAndReturnResult.<IPForwardingRule> apply(response);
- rules.add(rule);
- getIPForwardingRulesByVirtualMachine.asMap().put(ip.getVirtualMachineId(), ImmutableSet.of(rule));
- }
- return rules.build();
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CreateSecurityGroupIfNeeded.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CreateSecurityGroupIfNeeded.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CreateSecurityGroupIfNeeded.java
deleted file mode 100644
index 8360977..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/CreateSecurityGroupIfNeeded.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.cloudstack.predicates.SecurityGroupPredicates.portInRangeForCidr;
-import static org.jclouds.cloudstack.predicates.ZonePredicates.supportsSecurityGroups;
-
-import java.util.Set;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.logging.Logger;
-import org.jclouds.cloudstack.CloudStackApi;
-import org.jclouds.cloudstack.domain.SecurityGroup;
-import org.jclouds.cloudstack.domain.Zone;
-import org.jclouds.cloudstack.domain.ZoneSecurityGroupNamePortsCidrs;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableSet;
-
-@Singleton
-public class CreateSecurityGroupIfNeeded implements Function<ZoneSecurityGroupNamePortsCidrs, SecurityGroup> {
- @Resource
- @Named(ComputeServiceConstants.COMPUTE_LOGGER)
- protected Logger logger = Logger.NULL;
- protected final CloudStackApi client;
- protected final Supplier<LoadingCache<String, Zone>> zoneIdToZone;
- protected final Predicate<String> jobComplete;
-
- @Inject
- public CreateSecurityGroupIfNeeded(CloudStackApi client,
- Predicate<String> jobComplete,
- Supplier<LoadingCache<String, Zone>> zoneIdToZone) {
- this.client = checkNotNull(client, "client");
- this.jobComplete = checkNotNull(jobComplete, "jobComplete");
- this.zoneIdToZone = zoneIdToZone;
- }
-
- @Override
- public SecurityGroup apply(ZoneSecurityGroupNamePortsCidrs input) {
- checkNotNull(input, "input");
-
- String zoneId = input.getZone();
- Zone zone = zoneIdToZone.get().getUnchecked(zoneId);
-
- checkArgument(supportsSecurityGroups().apply(zone),
- "Security groups are required, but the zone %s does not support security groups", zoneId);
- logger.debug(">> creating securityGroup %s", input);
- try {
-
- SecurityGroup securityGroup = client.getSecurityGroupApi().createSecurityGroup(input.getName());
-
- logger.debug("<< created securityGroup(%s)", securityGroup);
- ImmutableSet<String> cidrs;
- if (!input.getCidrs().isEmpty()) {
- cidrs = ImmutableSet.copyOf(input.getCidrs());
- } else {
- cidrs = ImmutableSet.of("0.0.0.0/0");
- }
- for (int port : input.getPorts()) {
- authorizeGroupToItselfAndToTCPPortAndCidr(client, securityGroup, port, cidrs);
- }
- return securityGroup;
- } catch (IllegalStateException e) {
- logger.trace("<< trying to find securityGroup(%s): %s", input, e.getMessage());
- SecurityGroup group = client.getSecurityGroupApi().getSecurityGroupByName(input.getName());
- logger.debug("<< reused securityGroup(%s)", group.getId());
- return group;
- }
- }
-
- private void authorizeGroupToItselfAndToTCPPortAndCidr(CloudStackApi client,
- SecurityGroup securityGroup,
- int port,
- Set<String> cidrs) {
- for (String cidr : cidrs) {
- logger.debug(">> authorizing securityGroup(%s) permission to %s on port %d", securityGroup, cidr, port);
- if (!portInRangeForCidr(port, cidr).apply(securityGroup)) {
- jobComplete.apply(client.getSecurityGroupApi().authorizeIngressPortsToCIDRs(securityGroup.getId(),
- "TCP",
- port,
- port,
- ImmutableSet.of(cidr)));
- logger.debug("<< authorized securityGroup(%s) permission to %s on port %d", securityGroup, cidr, port);
- }
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/DateToYyyyMmDd.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/DateToYyyyMmDd.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/DateToYyyyMmDd.java
deleted file mode 100644
index cddb19d..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/DateToYyyyMmDd.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import com.google.common.base.Function;
-
-/**
- * Convert a Date object into a "yyyy-MM-dd" String
- */
-public class DateToYyyyMmDd implements Function<Object, String> {
-
- public String apply(Object input) {
- checkNotNull(input, "input cannot be null");
- checkArgument(input instanceof Date, "input must be a Date");
-
- return new SimpleDateFormat("yyyy-MM-dd").format((Date)input);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/GetFirewallRulesByVirtualMachine.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/GetFirewallRulesByVirtualMachine.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/GetFirewallRulesByVirtualMachine.java
deleted file mode 100644
index 3fc73ab..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/GetFirewallRulesByVirtualMachine.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import com.google.common.cache.CacheLoader;
-import com.google.common.collect.ImmutableSet;
-import java.util.Set;
-import javax.inject.Inject;
-import javax.inject.Singleton;
-import org.jclouds.cloudstack.CloudStackApi;
-import org.jclouds.cloudstack.domain.FirewallRule;
-import org.jclouds.cloudstack.options.ListFirewallRulesOptions;
-
-@Singleton
-public class GetFirewallRulesByVirtualMachine extends CacheLoader<String, Set<FirewallRule>> {
- private final CloudStackApi client;
-
- @Inject
- public GetFirewallRulesByVirtualMachine(CloudStackApi client) {
- this.client = checkNotNull(client, "client");
- }
-
- /**
- * @throws org.jclouds.rest.ResourceNotFoundException
- * when there is no ip forwarding rule available for the VM
- */
- @Override
- public Set<FirewallRule> load(String input) {
- String publicIPId = client.getVirtualMachineApi().getVirtualMachine(input).getPublicIPId();
- Set<FirewallRule> rules = client.getFirewallApi()
- .listFirewallRules(ListFirewallRulesOptions.Builder.ipAddressId(publicIPId));
- return rules != null ? rules : ImmutableSet.<FirewallRule>of();
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/GetIPForwardingRulesByVirtualMachine.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/GetIPForwardingRulesByVirtualMachine.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/GetIPForwardingRulesByVirtualMachine.java
deleted file mode 100644
index 02e6fa1..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/GetIPForwardingRulesByVirtualMachine.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.cloudstack.CloudStackApi;
-import org.jclouds.cloudstack.domain.IPForwardingRule;
-
-import com.google.common.cache.CacheLoader;
-
-@Singleton
-public class GetIPForwardingRulesByVirtualMachine extends CacheLoader<String, Set<IPForwardingRule>> {
- private final CloudStackApi client;
-
- @Inject
- public GetIPForwardingRulesByVirtualMachine(CloudStackApi client) {
- this.client = checkNotNull(client, "client");
- }
-
- /**
- * @throws org.jclouds.rest.ResourceNotFoundException
- * when there is no ip forwarding rule available for the VM
- */
- @Override
- public Set<IPForwardingRule> load(String input) {
- return client.getNATApi().getIPForwardingRulesForVirtualMachine(input);
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseAsyncJobFromHttpResponse.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseAsyncJobFromHttpResponse.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseAsyncJobFromHttpResponse.java
deleted file mode 100644
index 3095729..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseAsyncJobFromHttpResponse.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-
-import javax.inject.Singleton;
-
-import org.jclouds.cloudstack.domain.AsyncJob;
-import org.jclouds.domain.JsonBall;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.functions.UnwrapOnlyJsonValue;
-
-import com.google.common.base.Function;
-import com.google.inject.Inject;
-
-@Singleton
-public class ParseAsyncJobFromHttpResponse implements Function<HttpResponse, AsyncJob<?>> {
- private final UnwrapOnlyJsonValue<AsyncJob<Map<String, JsonBall>>> parser;
- private final ParseTypedAsyncJob parseTyped;
-
- @Inject
- public ParseAsyncJobFromHttpResponse(ParseTypedAsyncJob parseTyped,
- UnwrapOnlyJsonValue<AsyncJob<Map<String, JsonBall>>> parser) {
- this.parseTyped = checkNotNull(parseTyped, "parseTyped");
- this.parser = checkNotNull(parser, "parser");
- }
-
- public AsyncJob<?> apply(HttpResponse response) {
- checkNotNull(response, "response");
- AsyncJob<Map<String, JsonBall>> toParse = parser.apply(response);
- checkNotNull(toParse, "parsed result from %s", response);
- return parseTyped.apply(toParse);
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseAsyncJobsFromHttpResponse.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseAsyncJobsFromHttpResponse.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseAsyncJobsFromHttpResponse.java
deleted file mode 100644
index 59f479f..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseAsyncJobsFromHttpResponse.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-import java.util.Set;
-
-import javax.inject.Singleton;
-
-import org.jclouds.cloudstack.domain.AsyncJob;
-import org.jclouds.domain.JsonBall;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.functions.ParseFirstJsonValueNamed;
-import org.jclouds.json.internal.GsonWrapper;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.inject.Inject;
-import com.google.inject.TypeLiteral;
-
-@Singleton
-public class ParseAsyncJobsFromHttpResponse implements Function<HttpResponse, Set<AsyncJob<?>>> {
- private final ParseFirstJsonValueNamed<Set<AsyncJob<Map<String, JsonBall>>>> parser;
- private final ParseTypedAsyncJob parseTyped;
-
- @Inject
- public ParseAsyncJobsFromHttpResponse(ParseTypedAsyncJob parseTyped, GsonWrapper gsonView) {
- this.parseTyped = checkNotNull(parseTyped, "parseTyped");
- this.parser = new ParseFirstJsonValueNamed<Set<AsyncJob<Map<String, JsonBall>>>>(
- checkNotNull(gsonView, "gsonView"),
- new TypeLiteral<Set<AsyncJob<Map<String, JsonBall>>>>() { },
- "asyncjobs");
- }
-
- public Set<AsyncJob<?>> apply(HttpResponse response) {
- checkNotNull(response, "response");
- Set<AsyncJob<Map<String, JsonBall>>> toParse = parser.apply(response);
- checkNotNull(toParse, "parsed result from %s", response);
- return ImmutableSet.copyOf(Iterables.transform(toParse, parseTyped));
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseEventTypesFromHttpResponse.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseEventTypesFromHttpResponse.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseEventTypesFromHttpResponse.java
deleted file mode 100644
index 552a6e8..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseEventTypesFromHttpResponse.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Set;
-
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.functions.ParseFirstJsonValueNamed;
-import org.jclouds.json.internal.GsonWrapper;
-
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSet.Builder;
-import com.google.inject.Inject;
-import com.google.inject.TypeLiteral;
-
-@Singleton
-public class ParseEventTypesFromHttpResponse implements Function<HttpResponse, Set<String>> {
- private final ParseFirstJsonValueNamed<Set<EventType>> parser;
-
- private static class EventType {
- private String name;
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- EventType that = (EventType) o;
-
- if (!Objects.equal(name, that.name)) return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(name);
- }
- }
-
- @Inject
- public ParseEventTypesFromHttpResponse(GsonWrapper gsonView) {
- this.parser = new ParseFirstJsonValueNamed<Set<EventType>>(checkNotNull(gsonView, "gsonView"),
- new TypeLiteral<Set<EventType>>() {
- }, "eventtype");
- }
-
- public Set<String> apply(HttpResponse response) {
- checkNotNull(response, "response");
- Set<EventType> toParse = parser.apply(response);
- checkNotNull(toParse, "parsed result from %s", response);
- Builder<String> builder = ImmutableSet.builder();
- for (EventType entry : toParse)
- builder.add(entry.name);
- return builder.build();
- }
-}
-
-
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseIdToNameEntryFromHttpResponse.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseIdToNameEntryFromHttpResponse.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseIdToNameEntryFromHttpResponse.java
deleted file mode 100644
index 936e5aa..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseIdToNameEntryFromHttpResponse.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpResponse;
-
-import com.google.common.base.Function;
-import com.google.common.collect.Iterables;
-import com.google.inject.Inject;
-
-@Singleton
-public class ParseIdToNameEntryFromHttpResponse implements Function<HttpResponse, Map.Entry<String, String>> {
- private final ParseIdToNameFromHttpResponse parser;
-
- @Inject
- public ParseIdToNameEntryFromHttpResponse(ParseIdToNameFromHttpResponse parser) {
- this.parser = checkNotNull(parser, "parser");
- }
-
- public Map.Entry<String, String> apply(HttpResponse response) {
- checkNotNull(response, "response");
- Map<String, String> toParse = parser.apply(response);
- checkNotNull(toParse, "parsed result from %s", response);
- return Iterables.getFirst(toParse.entrySet(), null);
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseIdToNameFromHttpResponse.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseIdToNameFromHttpResponse.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseIdToNameFromHttpResponse.java
deleted file mode 100644
index d2ba0a7..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseIdToNameFromHttpResponse.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-import java.util.Set;
-
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.functions.ParseFirstJsonValueNamed;
-import org.jclouds.json.internal.GsonWrapper;
-
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSortedMap;
-import com.google.common.collect.ImmutableMap.Builder;
-import com.google.inject.Inject;
-import com.google.inject.TypeLiteral;
-
-@Singleton
-public class ParseIdToNameFromHttpResponse implements Function<HttpResponse, Map<String, String>> {
- private final ParseFirstJsonValueNamed<Set<IdName>> parser;
-
- private static class IdName {
- private String id;
- private String name;
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- IdName that = (IdName) o;
-
- if (!Objects.equal(id, that.id)) return false;
- if (!Objects.equal(name, that.name)) return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(id, name);
- }
- }
-
- @Inject
- public ParseIdToNameFromHttpResponse(GsonWrapper gsonView) {
- this.parser = new ParseFirstJsonValueNamed<Set<IdName>>(checkNotNull(gsonView, "gsonView"),
- new TypeLiteral<Set<IdName>>() {
- }, "oscategory");
- }
-
- public Map<String, String> apply(HttpResponse response) {
- checkNotNull(response, "response");
- Set<IdName> toParse = parser.apply(response);
- checkNotNull(toParse, "parsed result from %s", response);
- Builder<String, String> builder = ImmutableSortedMap.naturalOrder();
- for (IdName entry : toParse)
- builder.put(entry.id, entry.name);
- return builder.build();
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseLoginResponseFromHttpResponse.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseLoginResponseFromHttpResponse.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseLoginResponseFromHttpResponse.java
deleted file mode 100644
index 317aa28..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseLoginResponseFromHttpResponse.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.get;
-import static com.google.common.collect.Iterables.getOnlyElement;
-
-import org.jclouds.cloudstack.domain.LoginResponse;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.functions.ParseFirstJsonValueNamed;
-import org.jclouds.json.internal.GsonWrapper;
-
-import com.google.common.base.Function;
-import com.google.common.base.Splitter;
-import com.google.inject.Inject;
-import com.google.inject.TypeLiteral;
-
-public class ParseLoginResponseFromHttpResponse implements Function<HttpResponse, LoginResponse> {
-
- private ParseFirstJsonValueNamed<LoginResponse> parser;
-
- @Inject
- ParseLoginResponseFromHttpResponse(GsonWrapper gson) {
- this.parser = new ParseFirstJsonValueNamed<LoginResponse>(checkNotNull(gson, "gsonView"),
- new TypeLiteral<LoginResponse>(){}, "loginresponse");
- }
-
- @Override
- public LoginResponse apply(HttpResponse response) {
- checkNotNull(response, "response");
-
- LoginResponse login = parser.apply(response);
- checkNotNull(login, "loginResponse");
-
- String jSessionId = get(Splitter.on("=").split(get(Splitter.on(";").trimResults().split(
- getOnlyElement(response.getHeaders().get("Set-Cookie"))), 0)), 1);
-
- return LoginResponse.builder().fromLoginResponse(login).jSessionId(jSessionId).build();
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseNamesFromHttpResponse.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseNamesFromHttpResponse.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseNamesFromHttpResponse.java
deleted file mode 100644
index f30c6a4..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseNamesFromHttpResponse.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Set;
-
-import javax.inject.Singleton;
-
-import org.jclouds.http.HttpResponse;
-import org.jclouds.http.functions.ParseFirstJsonValueNamed;
-import org.jclouds.json.internal.GsonWrapper;
-
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSet.Builder;
-import com.google.inject.Inject;
-import com.google.inject.TypeLiteral;
-
-@Singleton
-public class ParseNamesFromHttpResponse implements Function<HttpResponse, Set<String>> {
- private final ParseFirstJsonValueNamed<Set<Name>> parser;
-
- private static class Name {
- private String name;
-
- @Override
- public boolean equals(Object o) {
- if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
-
- Name that = (Name) o;
-
- if (!Objects.equal(name, that.name)) return false;
-
- return true;
- }
-
- @Override
- public int hashCode() {
- return Objects.hashCode(name);
- }
- }
-
- @Inject
- public ParseNamesFromHttpResponse(GsonWrapper gsonView) {
- this.parser = new ParseFirstJsonValueNamed<Set<Name>>(checkNotNull(gsonView, "gsonView"),
- new TypeLiteral<Set<Name>>() {
- }, "hypervisor");
- }
-
- public Set<String> apply(HttpResponse response) {
- checkNotNull(response, "response");
- Set<Name> toParse = parser.apply(response);
- checkNotNull(toParse, "parsed result from %s", response);
- Builder<String> builder = ImmutableSet.builder();
- for (Name entry : toParse)
- builder.add(entry.name);
- return builder.build();
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseTypedAsyncJob.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseTypedAsyncJob.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseTypedAsyncJob.java
deleted file mode 100644
index 0082ea8..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ParseTypedAsyncJob.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.util.Map;
-import java.util.Map.Entry;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.cloudstack.domain.Account;
-import org.jclouds.cloudstack.domain.AsyncJob;
-import org.jclouds.cloudstack.domain.AsyncJobError;
-import org.jclouds.cloudstack.domain.FirewallRule;
-import org.jclouds.cloudstack.domain.IPForwardingRule;
-import org.jclouds.cloudstack.domain.LoadBalancerRule;
-import org.jclouds.cloudstack.domain.Network;
-import org.jclouds.cloudstack.domain.PortForwardingRule;
-import org.jclouds.cloudstack.domain.PublicIPAddress;
-import org.jclouds.cloudstack.domain.SecurityGroup;
-import org.jclouds.cloudstack.domain.Snapshot;
-import org.jclouds.cloudstack.domain.Template;
-import org.jclouds.cloudstack.domain.TemplateExtraction;
-import org.jclouds.cloudstack.domain.User;
-import org.jclouds.cloudstack.domain.VirtualMachine;
-import org.jclouds.cloudstack.domain.Volume;
-import org.jclouds.cloudstack.domain.AsyncJob.Builder;
-import org.jclouds.cloudstack.domain.AsyncJobError.ErrorCode;
-import org.jclouds.domain.JsonBall;
-import org.jclouds.json.Json;
-import org.jclouds.logging.Logger;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.common.base.Strings;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Iterables;
-import com.google.inject.Inject;
-
-@Singleton
-public class ParseTypedAsyncJob implements Function<AsyncJob<Map<String, JsonBall>>, AsyncJob<?>> {
- @Resource
- protected Logger logger = Logger.NULL;
-
- @Inject(optional = true)
- @VisibleForTesting
- @Named("jclouds.cloudstack.jobresult-type-map")
- Map<String, Class<?>> typeMap = ImmutableMap.<String, Class<?>>builder()
- .put("user", User.class)
- .put("account", Account.class)
- .put("securitygroup", SecurityGroup.class)
- .put("portforwardingrule", PortForwardingRule.class)
- .put("ipforwardingrule", IPForwardingRule.class)
- .put("firewallrule", FirewallRule.class)
- .put("network", Network.class)
- .put("ipaddress", PublicIPAddress.class)
- .put("virtualmachine", VirtualMachine.class)
- .put("loadbalancer", LoadBalancerRule.class)
- .put("snapshot", Snapshot.class)
- .put("template", Template.class)
- .put("volume", Volume.class).build();
- private final Json json;
-
- @Inject
- public ParseTypedAsyncJob(Json json) {
- this.json = checkNotNull(json, "json");
- }
-
- public AsyncJob<?> apply(AsyncJob<Map<String, JsonBall>> toParse) {
- AsyncJob<?> result = toParse;
- if (toParse.getResult() != null) {
- if (toParse.getResult().size() == 1) {
- @SuppressWarnings({"unchecked", "rawtypes"})
- Builder<?, Object> builder = AsyncJob.Builder.fromAsyncJobUntyped((AsyncJob) toParse);
- if (toParse.getResult().containsKey("success")) {
- builder.result(null);
- } else {
- Entry<String, JsonBall> entry = Iterables.get(toParse.getResult().entrySet(), 0);
- if ("template".equals(entry.getKey())) {
- // Sometimes Cloudstack will say 'template' and the payload is a Template object.
- // Sometimes Cloudstack will say 'template' and the payload is a TemplateExtraction object.
- // The 'state' field only exists on TemplateExtraction, so we can test this to work out what we have actually been given.
- Template template = json.fromJson(entry.getValue().toString(), Template.class);
- TemplateExtraction templateExtraction = json.fromJson(entry.getValue().toString(), TemplateExtraction.class);
- boolean isTemplate = Strings.isNullOrEmpty(templateExtraction.getState());
- builder.result(isTemplate ? template : templateExtraction);
- } else if (typeMap.containsKey(entry.getKey())) {
- builder.result(json.fromJson(entry.getValue().toString(), typeMap.get(entry.getKey())));
- } else {
- logger.warn(
- "type key %s not configured. please override default for Map<String, Class<?>> bound to name jclouds.cloudstack.jobresult-type-map",
- entry.getKey());
- builder.result(entry.getValue().toString());
- }
- }
- result = builder.build();
- } else if (toParse.getResult().containsKey("errorcode")) {
- @SuppressWarnings({"unchecked", "rawtypes"})
- Builder<?, Object> builder = AsyncJob.Builder.fromAsyncJobUntyped((AsyncJob) toParse);
- builder.result(null); // avoid classcastexceptions
- builder.error(AsyncJobError.builder().errorCode(ErrorCode.fromValue(toParse.getResult().get("errorcode").toString()))
- .errorText(toParse.getResult().containsKey("errortext") ? toParse.getResult().get("errortext").toString().replace("\"", "") : null)
- .build());
- result = builder.build();
- } else if (toParse.getResult().size() > 1) {
- logger.warn("unexpected size of async job result; expecting a map with a single element",
- toParse.getResult());
- }
- }
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ReuseOrAssociateNewPublicIPAddress.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ReuseOrAssociateNewPublicIPAddress.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ReuseOrAssociateNewPublicIPAddress.java
deleted file mode 100644
index 7ea19b2..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/ReuseOrAssociateNewPublicIPAddress.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Predicates.and;
-import static com.google.common.collect.Iterables.find;
-import static org.jclouds.cloudstack.options.AssociateIPAddressOptions.Builder.networkId;
-import static org.jclouds.cloudstack.options.ListPublicIPAddressesOptions.Builder.allocatedOnly;
-import static org.jclouds.cloudstack.predicates.PublicIPAddressPredicates.associatedWithNetwork;
-import static org.jclouds.cloudstack.predicates.PublicIPAddressPredicates.available;
-import static org.jclouds.compute.reference.ComputeServiceConstants.COMPUTE_LOGGER;
-
-import java.util.NoSuchElementException;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.cloudstack.CloudStackApi;
-import org.jclouds.cloudstack.domain.AsyncCreateResponse;
-import org.jclouds.cloudstack.domain.Network;
-import org.jclouds.cloudstack.domain.PublicIPAddress;
-import org.jclouds.cloudstack.features.AddressApi;
-import org.jclouds.cloudstack.strategy.BlockUntilJobCompletesAndReturnResult;
-import org.jclouds.logging.Logger;
-
-import com.google.common.base.Function;
-
-@Singleton
-public class ReuseOrAssociateNewPublicIPAddress implements Function<Network, PublicIPAddress> {
- private final CloudStackApi client;
- private final BlockUntilJobCompletesAndReturnResult blockUntilJobCompletesAndReturnResult;
- @Resource
- @Named(COMPUTE_LOGGER)
- protected Logger logger = Logger.NULL;
-
- @Inject
- public ReuseOrAssociateNewPublicIPAddress(CloudStackApi client,
- BlockUntilJobCompletesAndReturnResult blockUntilJobCompletesAndReturnResult) {
- this.client = checkNotNull(client, "client");
- this.blockUntilJobCompletesAndReturnResult = checkNotNull(blockUntilJobCompletesAndReturnResult,
- "blockUntilJobCompletesAndReturnResult");
- }
-
- /**
- * Finds existing addresses who are ready for use and not assigned to a
- * machine.
- *
- * @param networkId
- * network id to search
- * @param client
- * address client
- * @return address to use
- * @throws NoSuchElementException
- * if there's no existing ip address that is free for use
- */
- public static PublicIPAddress findAvailableAndAssociatedWithNetwork(String networkId, AddressApi client) {
- return find(client.listPublicIPAddresses(allocatedOnly(true).networkId(networkId)),
- and(associatedWithNetwork(networkId), available()));
- }
-
- public static PublicIPAddress associateIPAddressInNetwork(Network network, CloudStackApi client,
- BlockUntilJobCompletesAndReturnResult blockUntilJobCompletesAndReturnResult) {
- AsyncCreateResponse job = client.getAddressApi().associateIPAddressInZone(network.getZoneId(),
- networkId(network.getId()));
- PublicIPAddress ip = blockUntilJobCompletesAndReturnResult.<PublicIPAddress> apply(job);
- assert ip.getZoneId().equals(network.getZoneId());
- return ip;
- }
-
- @Override
- public PublicIPAddress apply(Network input) {
- try {
- logger.debug(">> looking for existing address in network(%s)", input.getId());
- PublicIPAddress returnVal = findAvailableAndAssociatedWithNetwork(input.getId(), client.getAddressApi());
- logger.debug("<< reused address(%s)", returnVal.getId());
- return returnVal;
- } catch (NoSuchElementException e) {
- logger.debug(">> associating new address in network(%s)", input.getId());
- PublicIPAddress returnVal = associateIPAddressInNetwork(input, client, blockUntilJobCompletesAndReturnResult);
- logger.debug("<< associated address(%s)", returnVal.getId());
- return returnVal;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/1d88fdf4/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/StaticNATVirtualMachineInNetwork.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/StaticNATVirtualMachineInNetwork.java b/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/StaticNATVirtualMachineInNetwork.java
deleted file mode 100644
index 87fc128..0000000
--- a/dependencies/jclouds/apis/cloudstack/1.8.0-stratos/src/main/java/org/jclouds/cloudstack/functions/StaticNATVirtualMachineInNetwork.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.jclouds.cloudstack.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import org.jclouds.cloudstack.CloudStackApi;
-import org.jclouds.cloudstack.domain.Network;
-import org.jclouds.cloudstack.domain.PublicIPAddress;
-import org.jclouds.cloudstack.domain.VirtualMachine;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.logging.Logger;
-
-import com.google.common.base.Function;
-import com.google.inject.assistedinject.Assisted;
-
-@Singleton
-public class StaticNATVirtualMachineInNetwork implements Function<VirtualMachine, PublicIPAddress> {
- public interface Factory {
- StaticNATVirtualMachineInNetwork create(Network in);
- }
-
- @Resource
- @Named(ComputeServiceConstants.COMPUTE_LOGGER)
- protected Logger logger = Logger.NULL;
-
- private final CloudStackApi client;
- private final ReuseOrAssociateNewPublicIPAddress reuseOrAssociate;
- private final Network network;
-
- @Inject
- public StaticNATVirtualMachineInNetwork(CloudStackApi client,
- ReuseOrAssociateNewPublicIPAddress reuseOrAssociate, @Assisted Network network) {
- this.client = checkNotNull(client, "client");
- this.reuseOrAssociate = checkNotNull(reuseOrAssociate, "reuseOrAssociate");
- this.network = checkNotNull(network, "network");
- }
-
- public PublicIPAddress apply(VirtualMachine vm) {
- PublicIPAddress ip;
- for (ip = reuseOrAssociate.apply(network); !ip.isStaticNAT() || ip.getVirtualMachineId() != vm.getId(); ip = reuseOrAssociate
- .apply(network)) {
- // check to see if someone already grabbed this ip
- if (ip.getVirtualMachineId() != null && ip.getVirtualMachineId() != vm.getId())
- continue;
- try {
- logger.debug(">> static NATing IPAddress(%s) to virtualMachine(%s)", ip.getId(), vm.getId());
- client.getNATApi().enableStaticNATForVirtualMachine(vm.getId(), ip.getId());
- ip = client.getAddressApi().getPublicIPAddress(ip.getId());
- if (ip.isStaticNAT() && ip.getVirtualMachineId().equals(vm.getId()))
- break;
- } catch (IllegalStateException e) {
- // very likely an ip conflict, so retry;
- }
- return ip;
- }
- return ip;
- }
-}