You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ra...@apache.org on 2015/08/21 09:10:02 UTC

[49/52] [abbrv] [partial] stratos git commit: Merging jclouds GCE fix with upstream - resolving conflicts

http://git-wip-us.apache.org/repos/asf/stratos/blob/897edde8/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceAdapter.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceAdapter.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceAdapter.java
deleted file mode 100644
index 3a26d34..0000000
--- a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/GoogleComputeEngineServiceAdapter.java
+++ /dev/null
@@ -1,439 +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.googlecomputeengine.compute;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.collect.Iterables.contains;
-import static com.google.common.collect.Iterables.filter;
-import static com.google.common.collect.Iterables.tryFind;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.CENTOS_PROJECT;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.DEBIAN_PROJECT;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_BOOT_DISK_SUFFIX;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_DELETE_BOOT_DISK_METADATA_KEY;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_IMAGE_METADATA_KEY;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.OPERATION_COMPLETE_INTERVAL;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.OPERATION_COMPLETE_TIMEOUT;
-import static org.jclouds.googlecomputeengine.domain.Instance.NetworkInterface.AccessConfig.Type;
-import static org.jclouds.googlecomputeengine.predicates.InstancePredicates.isBootDisk;
-import static org.jclouds.util.Predicates2.retry;
-import java.net.URI;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-
-import org.jclouds.collect.Memoized;
-import org.jclouds.compute.ComputeServiceAdapter;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.Template;
-import org.jclouds.compute.options.TemplateOptions;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.domain.Location;
-import org.jclouds.domain.LoginCredentials;
-import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
-import org.jclouds.googlecomputeengine.compute.functions.FirewallTagNamingConvention;
-import org.jclouds.googlecomputeengine.compute.options.GoogleComputeEngineTemplateOptions;
-import org.jclouds.googlecomputeengine.config.UserProject;
-import org.jclouds.googlecomputeengine.domain.Disk;
-import org.jclouds.googlecomputeengine.domain.Image;
-import org.jclouds.googlecomputeengine.domain.Instance;
-import org.jclouds.googlecomputeengine.domain.Instance.AttachedDisk;
-import org.jclouds.googlecomputeengine.domain.Instance.PersistentAttachedDisk;
-import org.jclouds.googlecomputeengine.domain.InstanceInZone;
-import org.jclouds.googlecomputeengine.domain.InstanceTemplate;
-import org.jclouds.googlecomputeengine.domain.InstanceTemplate.PersistentDisk;
-import org.jclouds.googlecomputeengine.domain.InstanceTemplate.PersistentDisk.Mode;
-import org.jclouds.googlecomputeengine.domain.MachineType;
-import org.jclouds.googlecomputeengine.domain.MachineTypeInZone;
-import org.jclouds.googlecomputeengine.domain.Operation;
-import org.jclouds.googlecomputeengine.domain.SlashEncodedIds;
-import org.jclouds.googlecomputeengine.domain.Zone;
-import org.jclouds.googlecomputeengine.features.InstanceApi;
-import org.jclouds.http.HttpResponse;
-import org.jclouds.logging.Logger;
-
-import com.google.common.base.Function;
-import com.google.common.base.Objects;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-import com.google.common.primitives.Ints;
-import com.google.common.util.concurrent.Atomics;
-import com.google.common.util.concurrent.UncheckedTimeoutException;
-import com.google.inject.Inject;
-
-public class GoogleComputeEngineServiceAdapter implements ComputeServiceAdapter<InstanceInZone, MachineTypeInZone, Image, Zone> {
-
-   @Resource
-   @Named(ComputeServiceConstants.COMPUTE_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   private final GoogleComputeEngineApi api;
-   private final Supplier<String> userProject;
-   private final Supplier<Map<URI, ? extends Location>> zones;
-   private final Function<TemplateOptions, ImmutableMap.Builder<String, String>> metatadaFromTemplateOptions;
-   private final Predicate<AtomicReference<Operation>> retryOperationDonePredicate;
-   private final long operationCompleteCheckInterval;
-   private final long operationCompleteCheckTimeout;
-   private final FirewallTagNamingConvention.Factory firewallTagNamingConvention;
-
-   @Inject
-   public GoogleComputeEngineServiceAdapter(GoogleComputeEngineApi api,
-                                            @UserProject Supplier<String> userProject,
-                                            Function<TemplateOptions,
-                                                    ImmutableMap.Builder<String, String>> metatadaFromTemplateOptions,
-                                            @Named("zone") Predicate<AtomicReference<Operation>> operationDonePredicate,
-                                            @Named(OPERATION_COMPLETE_INTERVAL) Long operationCompleteCheckInterval,
-                                            @Named(OPERATION_COMPLETE_TIMEOUT) Long operationCompleteCheckTimeout,
-                                            @Memoized Supplier<Map<URI, ? extends Location>> zones,
-                                            FirewallTagNamingConvention.Factory firewallTagNamingConvention) {
-      this.api = checkNotNull(api, "google compute api");
-      this.userProject = checkNotNull(userProject, "user project name");
-      this.metatadaFromTemplateOptions = checkNotNull(metatadaFromTemplateOptions,
-              "metadata from template options function");
-      this.operationCompleteCheckInterval = checkNotNull(operationCompleteCheckInterval,
-              "operation completed check interval");
-      this.operationCompleteCheckTimeout = checkNotNull(operationCompleteCheckTimeout,
-                                                        "operation completed check timeout");
-      this.retryOperationDonePredicate = retry(operationDonePredicate, operationCompleteCheckTimeout,
-                                               operationCompleteCheckInterval, TimeUnit.MILLISECONDS);
-      this.zones = checkNotNull(zones, "zones");
-      this.firewallTagNamingConvention = checkNotNull(firewallTagNamingConvention, "firewallTagNamingConvention");
-   }
-
-   @Override
-   public NodeAndInitialCredentials<InstanceInZone> createNodeWithGroupEncodedIntoName(
-           final String group, final String name, final Template template) {
-
-      checkNotNull(template, "template");
-
-      GoogleComputeEngineTemplateOptions options = GoogleComputeEngineTemplateOptions.class.cast(template.getOptions()).clone();
-      checkState(options.getNetwork().isPresent(), "network was not present in template options");
-      Hardware hardware = checkNotNull(template.getHardware(), "hardware must be set");
-
-      checkNotNull(hardware.getUri(), "hardware must have a URI");
-      checkNotNull(template.getImage().getUri(), "image URI is null");
-
-      // Note that the ordering is significant here - the first disk must be the boot disk.
-      List<PersistentDisk> disks = Lists.newArrayList();
-
-      if (!tryFind(options.getDisks(), isBootDisk()).isPresent()) {
-         Disk bootDisk = createBootDisk(template, name);
-
-         disks.add(new PersistentDisk(Mode.READ_WRITE,
-                                      bootDisk.getSelfLink(),
-                                      null,
-                                      true,
-                                      true));
-      }
-
-      disks.addAll(options.getDisks());
-
-      InstanceTemplate instanceTemplate = InstanceTemplate.builder()
-              .forMachineType(hardware.getUri());
-
-      if (options.isEnableNat()) {
-         instanceTemplate.addNetworkInterface(options.getNetwork().get(), Type.ONE_TO_ONE_NAT);
-      } else {
-         instanceTemplate.addNetworkInterface(options.getNetwork().get());
-      }
-
-      instanceTemplate.disks(disks);
-
-      LoginCredentials credentials = getFromImageAndOverrideIfRequired(template.getImage(), options);
-
-      ImmutableMap.Builder<String, String> metadataBuilder = metatadaFromTemplateOptions.apply(options);
-
-      metadataBuilder.put(GCE_IMAGE_METADATA_KEY, template.getImage().getUri().toString());
-
-      if (!options.shouldKeepBootDisk()) {
-         metadataBuilder.put(GCE_DELETE_BOOT_DISK_METADATA_KEY, Boolean.TRUE.toString());
-      }
-
-      instanceTemplate.metadata(metadataBuilder.build());
-      instanceTemplate.serviceAccounts(options.getServiceAccounts());
-
-      final InstanceApi instanceApi = api.getInstanceApiForProject(userProject.get());
-      final String zone = template.getLocation().getId();
-      Operation operation = instanceApi.createInZone(name, zone, instanceTemplate);
-
-      if (options.shouldBlockUntilRunning()) {
-         waitOperationDone(operation);
-      }
-
-      // some times the newly created instances are not immediately returned
-      AtomicReference<Instance> instance = Atomics.newReference();
-
-      retry(new Predicate<AtomicReference<Instance>>() {
-         @Override
-         public boolean apply(AtomicReference<Instance> input) {
-            input.set(instanceApi.getInZone(zone, name));
-            return input.get() != null;
-         }
-      }, operationCompleteCheckTimeout, operationCompleteCheckInterval, MILLISECONDS).apply(instance);
-
-      if (!options.getTags().isEmpty()) {
-         Operation tagsOperation = instanceApi.setTagsInZone(zone,
-                 name, options.getTags(), instance.get().getTags().getFingerprint());
-
-         waitOperationDone(tagsOperation);
-
-         retry(new Predicate<AtomicReference<Instance>>() {
-            @Override
-            public boolean apply(AtomicReference<Instance> input) {
-               input.set(instanceApi.getInZone(zone, name));
-               return input.get() != null;
-            }
-         }, operationCompleteCheckTimeout, operationCompleteCheckInterval, MILLISECONDS).apply(instance);
-      }
-
-      // Add tags for security groups
-      final FirewallTagNamingConvention naming = firewallTagNamingConvention.get(group);
-      Set<String> tags = FluentIterable.from(Ints.asList(options.getInboundPorts()))
-              .transform(new Function<Integer, String>(){
-                       @Override
-                       public String apply(Integer input) {
-                          return input != null
-                                  ? naming.name(input)
-                                  : null;
-                       }
-                    })
-              .toSet();
-      instanceApi.setTagsInZone(zone, instance.get().getName(), tags, instance.get().getTags().getFingerprint());
-
-      InstanceInZone instanceInZone = new InstanceInZone(instance.get(), zone);
-
-      return new NodeAndInitialCredentials<InstanceInZone>(instanceInZone, instanceInZone.slashEncode(), credentials);
-   }
-
-   private Disk createBootDisk(Template template, String instanceName) {
-      URI imageUri = template.getImage().getUri();
-
-      GoogleComputeEngineTemplateOptions options = GoogleComputeEngineTemplateOptions.class.cast(template.getOptions()).clone();
-
-      int diskSize = options.getBootDiskSize().or(10l).intValue();
-
-      String diskName = instanceName + "-" + GCE_BOOT_DISK_SUFFIX;
-
-      Operation diskOperation = api.getDiskApiForProject(userProject.get())
-                                   .createFromImageWithSizeInZone(imageUri.toString(),
-                                                                  diskName,
-                                                                  diskSize,
-                                                                  template.getLocation().getId());
-
-      waitOperationDone(diskOperation);
-
-      return api.getDiskApiForProject(userProject.get()).getInZone(template.getLocation().getId(),
-                                                                   diskName);
-   }
-
-   @Override
-   public Iterable<MachineTypeInZone> listHardwareProfiles() {
-      ImmutableSet.Builder<MachineTypeInZone> builder = ImmutableSet.builder();
-
-      for (final Location zone : zones.get().values()) {
-         builder.addAll(api.getMachineTypeApiForProject(userProject.get())
-                 .listInZone(zone.getId())
-                 .concat()
-                 .filter(new Predicate<MachineType>() {
-                    @Override
-                    public boolean apply(MachineType input) {
-                       return !input.getDeprecated().isPresent();
-                    }
-                 })
-                 .transform(new Function<MachineType, MachineTypeInZone>() {
-
-                    @Override
-                    public MachineTypeInZone apply(MachineType arg0) {
-                       return new MachineTypeInZone(arg0, arg0.getZone());
-                    }
-                 }));
-      }
-
-      return builder.build();
-   }
-
-   @Override
-   public Iterable<Image> listImages() {
-      return ImmutableSet.<Image>builder()
-              .addAll(api.getImageApiForProject(userProject.get()).list().concat())
-              .addAll(api.getImageApiForProject(DEBIAN_PROJECT).list().concat())
-              .addAll(api.getImageApiForProject(CENTOS_PROJECT).list().concat())
-              .build();
-   }
-
-   @Override
-   public Image getImage(String id) {
-      return Objects.firstNonNull(api.getImageApiForProject(userProject.get()).get(id),
-                                  Objects.firstNonNull(api.getImageApiForProject(DEBIAN_PROJECT).get(id),
-                                          api.getImageApiForProject(CENTOS_PROJECT).get(id)));
-
-   }
-
-   @Override
-   public Iterable<Zone> listLocations() {
-      return api.getZoneApiForProject(userProject.get()).list().concat();
-   }
-
-   @Override
-   public InstanceInZone getNode(String name) {
-      SlashEncodedIds slashEncodedIds = SlashEncodedIds.fromSlashEncoded(name);
-
-      Instance instance = api.getInstanceApiForProject(userProject.get()).getInZone(slashEncodedIds.getFirstId(),
-              slashEncodedIds.getSecondId());
-
-      return instance == null ?  null : new InstanceInZone(instance, slashEncodedIds.getFirstId());
-   }
-
-   @Override
-   public Iterable<InstanceInZone> listNodes() {
-      return FluentIterable.from(zones.get().values()).transformAndConcat(new Function<Location, ImmutableSet<InstanceInZone>>() {
-         @Override
-         public ImmutableSet<InstanceInZone> apply(final Location input) {
-            return api.getInstanceApiForProject(userProject.get()).listInZone(input.getId()).concat()
-                    .transform(new Function<Instance, InstanceInZone>() {
-
-                       @Override
-                       public InstanceInZone apply(Instance arg0) {
-                          return new InstanceInZone(arg0, input.getId());
-                       }
-                    }).toSet();
-         }
-      }).toSet();
-   }
-
-   @Override
-   public Iterable<InstanceInZone> listNodesByIds(final Iterable<String> ids) {
-      return filter(listNodes(), new Predicate<InstanceInZone>() {
-
-         @Override
-         public boolean apply(InstanceInZone instanceInZone) {
-            return contains(ids, instanceInZone.getInstance().getName());
-         }
-      });
-   }
-
-   @Override
-   public void destroyNode(final String name) {
-      SlashEncodedIds slashEncodedIds = SlashEncodedIds.fromSlashEncoded(name);
-      String diskName = null;
-      try {
-         Instance instance = api.getInstanceApiForProject(userProject.get()).getInZone(slashEncodedIds.getFirstId(),
-                                                                              slashEncodedIds.getSecondId());
-         if (instance.getMetadata().getItems().get(GCE_DELETE_BOOT_DISK_METADATA_KEY).equals("true")) {
-            Optional<AttachedDisk> disk = tryFind(instance.getDisks(), new Predicate<AttachedDisk>() {
-               @Override
-               public boolean apply(AttachedDisk input) {
-                  return PersistentAttachedDisk.class.isInstance(input) &&
-                         PersistentAttachedDisk.class.cast(input).isBoot();
-               }
-            });
-            if (disk.isPresent()) {
-               diskName = PersistentAttachedDisk.class.cast(disk.get()).getSourceDiskName();
-            }
-         }
-      } catch (Exception e) {
-         // TODO: what exception actually gets thrown here if the instance doesn't really exist?
-      }
-      waitOperationDone(api.getInstanceApiForProject(userProject.get()).deleteInZone(slashEncodedIds.getFirstId(),
-              slashEncodedIds.getSecondId()));
-
-      if (diskName != null) {
-         waitOperationDone(api.getDiskApiForProject(userProject.get()).deleteInZone(slashEncodedIds.getFirstId(),
-                                                                                    diskName));
-      }
-
-   }
-
-   @Override
-   public void rebootNode(final String name) {
-      SlashEncodedIds slashEncodedIds = SlashEncodedIds.fromSlashEncoded(name);
-
-      waitOperationDone(api.getInstanceApiForProject(userProject.get()).resetInZone(slashEncodedIds.getFirstId(),
-              slashEncodedIds.getSecondId()));
-   }
-
-   @Override
-   public void resumeNode(String name) {
-      throw new UnsupportedOperationException("resume is not supported by GCE");
-   }
-
-   @Override
-   public void suspendNode(String name) {
-      throw new UnsupportedOperationException("suspend is not supported by GCE");
-   }
-
-   private LoginCredentials getFromImageAndOverrideIfRequired(org.jclouds.compute.domain.Image image,
-                                                              GoogleComputeEngineTemplateOptions options) {
-      LoginCredentials defaultCredentials = image.getDefaultCredentials();
-      String[] keys = defaultCredentials.getPrivateKey().split(":");
-      String publicKey = keys[0];
-      String privateKey = keys[1];
-
-      LoginCredentials.Builder credentialsBuilder = defaultCredentials.toBuilder();
-      credentialsBuilder.privateKey(privateKey);
-
-      // LoginCredentials from image stores the public key along with the private key in the privateKey field
-      // @see GoogleComputePopulateDefaultLoginCredentialsForImageStrategy
-      // so if options doesn't have a public key set we set it from the default
-      if (options.getPublicKey() == null) {
-         options.authorizePublicKey(publicKey);
-      }
-      if (options.hasLoginPrivateKeyOption()) {
-         credentialsBuilder.privateKey(options.getPrivateKey());
-      }
-      if (options.getLoginUser() != null) {
-         credentialsBuilder.identity(options.getLoginUser());
-      }
-      if (options.hasLoginPasswordOption()) {
-         credentialsBuilder.password(options.getLoginPassword());
-      }
-      if (options.shouldAuthenticateSudo() != null) {
-         credentialsBuilder.authenticateSudo(options.shouldAuthenticateSudo());
-      }
-      LoginCredentials credentials = credentialsBuilder.build();
-      options.overrideLoginCredentials(credentials);
-      return credentials;
-   }
-
-   private void waitOperationDone(Operation operation) {
-      AtomicReference<Operation> operationRef = Atomics.newReference(operation);
-
-      // wait for the operation to complete
-      if (!retryOperationDonePredicate.apply(operationRef)) {
-         throw new UncheckedTimeoutException("operation did not reach DONE state" + operationRef.get());
-      }
-
-      // check if the operation failed
-      if (operationRef.get().getHttpError().isPresent()) {
-         HttpResponse response = operationRef.get().getHttpError().get();
-         throw new IllegalStateException("operation failed. Http Error Code: " + response.getStatusCode() +
-                 " HttpError: " + response.getMessage());
-      }
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/897edde8/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/config/GoogleComputeEngineServiceContextModule.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/config/GoogleComputeEngineServiceContextModule.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/config/GoogleComputeEngineServiceContextModule.java
deleted file mode 100644
index 730c515..0000000
--- a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/config/GoogleComputeEngineServiceContextModule.java
+++ /dev/null
@@ -1,283 +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.googlecomputeengine.compute.config;
-
-import static com.google.common.collect.Iterables.transform;
-import static com.google.common.collect.Maps.uniqueIndex;
-import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.inject.Named;
-import javax.inject.Singleton;
-
-import com.google.inject.Scopes;
-import org.jclouds.collect.Memoized;
-import org.jclouds.compute.ComputeService;
-import org.jclouds.compute.ComputeServiceAdapter;
-import org.jclouds.compute.config.ComputeServiceAdapterContextModule;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.SecurityGroup;
-import org.jclouds.compute.extensions.ImageExtension;
-import org.jclouds.compute.extensions.SecurityGroupExtension;
-import org.jclouds.compute.options.TemplateOptions;
-import org.jclouds.compute.strategy.PrioritizeCredentialsFromTemplate;
-import org.jclouds.domain.Location;
-import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
-import org.jclouds.googlecomputeengine.compute.GoogleComputeEngineService;
-import org.jclouds.googlecomputeengine.compute.GoogleComputeEngineServiceAdapter;
-import org.jclouds.googlecomputeengine.compute.extensions.GoogleComputeEngineSecurityGroupExtension;
-import org.jclouds.googlecomputeengine.compute.functions.BuildInstanceMetadata;
-import org.jclouds.googlecomputeengine.compute.functions.FirewallTagNamingConvention;
-import org.jclouds.googlecomputeengine.compute.functions.FirewallToIpPermission;
-import org.jclouds.googlecomputeengine.compute.functions.GoogleComputeEngineImageToImage;
-import org.jclouds.googlecomputeengine.compute.functions.InstanceInZoneToNodeMetadata;
-import org.jclouds.googlecomputeengine.compute.functions.MachineTypeInZoneToHardware;
-import org.jclouds.googlecomputeengine.compute.functions.NetworkToSecurityGroup;
-import org.jclouds.googlecomputeengine.compute.functions.OrphanedGroupsFromDeadNodes;
-import org.jclouds.googlecomputeengine.compute.functions.RegionToLocation;
-import org.jclouds.googlecomputeengine.compute.functions.ZoneToLocation;
-import org.jclouds.googlecomputeengine.compute.loaders.FindNetworkOrCreate;
-import org.jclouds.googlecomputeengine.compute.options.GoogleComputeEngineTemplateOptions;
-import org.jclouds.googlecomputeengine.compute.predicates.AllNodesInGroupTerminated;
-import org.jclouds.googlecomputeengine.compute.strategy.CreateNodesWithGroupEncodedIntoNameThenAddToSet;
-import org.jclouds.googlecomputeengine.compute.strategy.PopulateDefaultLoginCredentialsForImageStrategy;
-import org.jclouds.googlecomputeengine.compute.strategy.UseNodeCredentialsButOverrideFromTemplate;
-import org.jclouds.googlecomputeengine.config.UserProject;
-import org.jclouds.googlecomputeengine.domain.Firewall;
-import org.jclouds.googlecomputeengine.domain.Image;
-import org.jclouds.googlecomputeengine.domain.Instance;
-import org.jclouds.googlecomputeengine.domain.InstanceInZone;
-import org.jclouds.googlecomputeengine.domain.MachineTypeInZone;
-import org.jclouds.googlecomputeengine.domain.Network;
-import org.jclouds.googlecomputeengine.domain.Region;
-import org.jclouds.googlecomputeengine.domain.Zone;
-import org.jclouds.googlecomputeengine.domain.internal.NetworkAndAddressRange;
-import org.jclouds.googlecomputeengine.functions.CreateNetworkIfNeeded;
-import org.jclouds.net.domain.IpPermission;
-import org.jclouds.rest.AuthorizationException;
-import org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableMap;
-import com.google.inject.Injector;
-import com.google.inject.Provides;
-import com.google.inject.TypeLiteral;
-
-public class GoogleComputeEngineServiceContextModule
-        extends ComputeServiceAdapterContextModule<InstanceInZone, MachineTypeInZone, Image, Zone> {
-
-   @Override
-   protected void configure() {
-      super.configure();
-
-      bind(ComputeService.class).to(GoogleComputeEngineService.class);
-
-      bind(new TypeLiteral<ComputeServiceAdapter<InstanceInZone, MachineTypeInZone, Image, Zone>>() {})
-              .to(GoogleComputeEngineServiceAdapter.class);
-
-      bind(new TypeLiteral<Function<InstanceInZone, NodeMetadata>>() {})
-              .to(InstanceInZoneToNodeMetadata.class);
-
-      bind(new TypeLiteral<Function<MachineTypeInZone, Hardware>>() {})
-              .to(MachineTypeInZoneToHardware.class);
-
-      bind(new TypeLiteral<Function<Image, org.jclouds.compute.domain.Image>>() {})
-              .to(GoogleComputeEngineImageToImage.class);
-
-      bind(new TypeLiteral<Function<Region, Location>>() {
-      })
-              .to(RegionToLocation.class);
-
-      bind(new TypeLiteral<Function<Zone, Location>>() {})
-              .to(ZoneToLocation.class);
-
-      bind(new TypeLiteral<Function<Firewall, Iterable<IpPermission>>>() {})
-              .to(FirewallToIpPermission.class);
-
-      bind(new TypeLiteral<Function<Network, SecurityGroup>>() {})
-              .to(NetworkToSecurityGroup.class);
-
-      bind(new TypeLiteral<Function<TemplateOptions, ImmutableMap.Builder<String, String>>>() {})
-              .to(BuildInstanceMetadata.class);
-
-      bind(org.jclouds.compute.strategy.PopulateDefaultLoginCredentialsForImageStrategy.class)
-              .to(PopulateDefaultLoginCredentialsForImageStrategy.class);
-
-      bind(org.jclouds.compute.strategy.impl.CreateNodesWithGroupEncodedIntoNameThenAddToSet.class).to(
-              CreateNodesWithGroupEncodedIntoNameThenAddToSet.class);
-
-      bind(TemplateOptions.class).to(GoogleComputeEngineTemplateOptions.class);
-
-      bind(new TypeLiteral<Function<Set<? extends NodeMetadata>, Set<String>>>() {})
-              .to(OrphanedGroupsFromDeadNodes.class);
-
-      bind(new TypeLiteral<Predicate<String>>() {}).to(AllNodesInGroupTerminated.class);
-
-      bind(new TypeLiteral<Function<NetworkAndAddressRange, Network>>() {})
-              .to(CreateNetworkIfNeeded.class);
-
-      bind(new TypeLiteral<CacheLoader<NetworkAndAddressRange, Network>>() {})
-              .to(FindNetworkOrCreate.class);
-
-      bind(new TypeLiteral<SecurityGroupExtension>() {})
-              .to(GoogleComputeEngineSecurityGroupExtension.class);
-
-      bind(PrioritizeCredentialsFromTemplate.class).to(UseNodeCredentialsButOverrideFromTemplate.class);
-
-      install(new LocationsFromComputeServiceAdapterModule<InstanceInZone, MachineTypeInZone, Image, Zone>() {});
-
-      bind(FirewallTagNamingConvention.Factory.class).in(Scopes.SINGLETON);
-   }
-
-   @Provides
-   @Singleton
-   @Memoized
-   public Supplier<Map<URI, ? extends org.jclouds.compute.domain.Image>> provideImagesMap(
-           AtomicReference<AuthorizationException> authException,
-           final Supplier<Set<? extends org.jclouds.compute.domain.Image>> images,
-           @Named(PROPERTY_SESSION_INTERVAL) long seconds) {
-      return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException,
-              new Supplier<Map<URI, ? extends org.jclouds.compute.domain.Image>>() {
-                 @Override
-                 public Map<URI, ? extends org.jclouds.compute.domain.Image> get() {
-                    return uniqueIndex(images.get(), new Function<org.jclouds.compute.domain.Image, URI>() {
-                       @Override
-                       public URI apply(org.jclouds.compute.domain.Image input) {
-                          return input.getUri();
-                       }
-                    });
-                 }
-              },
-              seconds, TimeUnit.SECONDS);
-   }
-
-   @Provides
-   @Singleton
-   @Memoized
-   public Supplier<Map<URI, ? extends Hardware>> provideHardwaresMap(
-           AtomicReference<AuthorizationException> authException,
-           final Supplier<Set<? extends Hardware>> hardwares,
-           @Named(PROPERTY_SESSION_INTERVAL) long seconds) {
-      return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException,
-              new Supplier<Map<URI, ? extends Hardware>>() {
-                 @Override
-                 public Map<URI, ? extends Hardware> get() {
-                    return uniqueIndex(hardwares.get(), new Function<Hardware, URI>() {
-                       @Override
-                       public URI apply(Hardware input) {
-                          return input.getUri();
-                       }
-                    });
-                 }
-              },
-              seconds, TimeUnit.SECONDS);
-   }
-
-   @Provides
-   @Singleton
-   @Memoized
-   public Supplier<Map<URI, ? extends Location>> provideZones(
-           AtomicReference<AuthorizationException> authException,
-           final GoogleComputeEngineApi api, final Function<Zone, Location> zoneToLocation,
-           @UserProject final Supplier<String> userProject,
-           @Named(PROPERTY_SESSION_INTERVAL) long seconds) {
-      return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException,
-              new Supplier<Map<URI, ? extends Location>>() {
-                 @Override
-                 public Map<URI, ? extends Location> get() {
-                    return uniqueIndex(transform(api.getZoneApiForProject(userProject.get()).list().concat(), zoneToLocation),
-                            new Function<Location, URI>() {
-                               @Override
-                               public URI apply(Location input) {
-                                  return (URI) input.getMetadata().get("selfLink");
-                               }
-                            });
-                 }
-              },
-              seconds, TimeUnit.SECONDS);
-   }
-
-   @Provides
-   @Singleton
-   @Memoized
-   public Supplier<Map<URI, Region>> provideRegions(
-           AtomicReference<AuthorizationException> authException,
-           final GoogleComputeEngineApi api,
-           @UserProject final Supplier<String> userProject,
-           @Named(PROPERTY_SESSION_INTERVAL) long seconds) {
-      return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException,
-              new Supplier<Map<URI, Region>>() {
-                 @Override
-                 public Map<URI, Region> get() {
-                    return uniqueIndex(api.getRegionApiForProject(userProject.get()).list().concat(),
-                            new Function<Region, URI>() {
-                               @Override
-                               public URI apply(Region input) {
-                                  return input.getSelfLink();
-                               }
-                            });
-                 }
-              },
-              seconds, TimeUnit.SECONDS);
-   }
-
-   @Provides
-   @Singleton
-   protected LoadingCache<NetworkAndAddressRange, Network> networkMap(
-           CacheLoader<NetworkAndAddressRange, Network> in) {
-      return CacheBuilder.newBuilder().build(in);
-   }
-
-   @Override
-   protected Optional<ImageExtension> provideImageExtension(Injector i) {
-      return Optional.absent();
-   }
-
-   @Override
-   protected Optional<SecurityGroupExtension> provideSecurityGroupExtension(Injector i) {
-      return Optional.of(i.getInstance(SecurityGroupExtension.class));
-   }
-
-   @VisibleForTesting
-   public static final Map<Instance.Status, NodeMetadata.Status> toPortableNodeStatus =
-           ImmutableMap.<Instance.Status, NodeMetadata.Status>builder()
-                   .put(Instance.Status.PROVISIONING, NodeMetadata.Status.PENDING)
-                   .put(Instance.Status.STAGING, NodeMetadata.Status.PENDING)
-                   .put(Instance.Status.RUNNING, NodeMetadata.Status.RUNNING)
-                   .put(Instance.Status.STOPPING, NodeMetadata.Status.PENDING)
-                   .put(Instance.Status.STOPPED, NodeMetadata.Status.SUSPENDED)
-                   .put(Instance.Status.TERMINATED, NodeMetadata.Status.TERMINATED).build();
-
-   @Singleton
-   @Provides
-   protected Map<Instance.Status, NodeMetadata.Status> toPortableNodeStatus() {
-      return toPortableNodeStatus;
-   }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/897edde8/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/extensions/GoogleComputeEngineSecurityGroupExtension.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/extensions/GoogleComputeEngineSecurityGroupExtension.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/extensions/GoogleComputeEngineSecurityGroupExtension.java
deleted file mode 100644
index 8d5a10c..0000000
--- a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/extensions/GoogleComputeEngineSecurityGroupExtension.java
+++ /dev/null
@@ -1,342 +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.googlecomputeengine.compute.extensions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.base.Preconditions.checkState;
-import static java.util.concurrent.TimeUnit.MILLISECONDS;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.OPERATION_COMPLETE_INTERVAL;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.OPERATION_COMPLETE_TIMEOUT;
-import static org.jclouds.googlecomputeengine.compute.strategy.CreateNodesWithGroupEncodedIntoNameThenAddToSet.DEFAULT_INTERNAL_NETWORK_RANGE;
-import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.equalsIpPermission;
-import static org.jclouds.googlecomputeengine.predicates.NetworkFirewallPredicates.providesIpPermission;
-import static org.jclouds.util.Predicates2.retry;
-
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.jclouds.compute.domain.SecurityGroup;
-import org.jclouds.compute.extensions.SecurityGroupExtension;
-import org.jclouds.compute.functions.GroupNamingConvention;
-import org.jclouds.domain.Location;
-import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
-import org.jclouds.googlecomputeengine.config.UserProject;
-import org.jclouds.googlecomputeengine.domain.Firewall;
-import org.jclouds.googlecomputeengine.domain.Instance;
-import org.jclouds.googlecomputeengine.domain.Instance.NetworkInterface;
-import org.jclouds.googlecomputeengine.domain.Network;
-import org.jclouds.googlecomputeengine.domain.Operation;
-import org.jclouds.googlecomputeengine.domain.SlashEncodedIds;
-import org.jclouds.googlecomputeengine.domain.internal.NetworkAndAddressRange;
-import org.jclouds.googlecomputeengine.options.FirewallOptions;
-import org.jclouds.googlecomputeengine.options.ListOptions;
-import org.jclouds.googlecomputeengine.options.ListOptions.Builder;
-import org.jclouds.net.domain.IpPermission;
-import org.jclouds.net.domain.IpProtocol;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.base.Supplier;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Multimap;
-import com.google.common.util.concurrent.Atomics;
-
-/**
- * An extension to compute service to allow for the manipulation of {@link org.jclouds.compute.domain.SecurityGroup}s. Implementation
- * is optional by providers.
- */
-public class GoogleComputeEngineSecurityGroupExtension implements SecurityGroupExtension {
-
-   protected final Supplier<String> userProject;
-   protected final GroupNamingConvention.Factory namingConvention;
-   protected final LoadingCache<NetworkAndAddressRange, Network> networkCreator;
-   protected final Function<Network, SecurityGroup> groupConverter;
-   protected final GoogleComputeEngineApi api;
-   protected final Predicate<AtomicReference<Operation>> operationDonePredicate;
-   protected final long operationCompleteCheckInterval;
-   protected final long operationCompleteCheckTimeout;
-
-   @Inject
-   public GoogleComputeEngineSecurityGroupExtension(GoogleComputeEngineApi api,
-                                                    @UserProject Supplier<String> userProject,
-                                                    GroupNamingConvention.Factory namingConvention,
-                                                    LoadingCache<NetworkAndAddressRange, Network> networkCreator,
-                                                    Function<Network, SecurityGroup> groupConverter,
-                                                    @Named("global") Predicate<AtomicReference<Operation>> operationDonePredicate,
-                                                    @Named(OPERATION_COMPLETE_INTERVAL) Long operationCompleteCheckInterval,
-                                                    @Named(OPERATION_COMPLETE_TIMEOUT) Long operationCompleteCheckTimeout) {
-      this.api = checkNotNull(api, "api");
-      this.userProject = checkNotNull(userProject, "userProject");
-      this.namingConvention = checkNotNull(namingConvention, "namingConvention");
-      this.networkCreator = checkNotNull(networkCreator, "networkCreator");
-      this.groupConverter = checkNotNull(groupConverter, "groupConverter");
-      this.operationCompleteCheckInterval = checkNotNull(operationCompleteCheckInterval,
-              "operation completed check interval");
-      this.operationCompleteCheckTimeout = checkNotNull(operationCompleteCheckTimeout,
-              "operation completed check timeout");
-      this.operationDonePredicate = checkNotNull(operationDonePredicate, "operationDonePredicate");
-   }
-
-   @Override
-   public Set<SecurityGroup> listSecurityGroups() {
-      return api.getNetworkApiForProject(userProject.get()).list().concat().transform(groupConverter).toSet();
-   }
-
-   @Override
-   public Set<SecurityGroup> listSecurityGroupsInLocation(final Location location) {
-      return listSecurityGroups();
-   }
-
-   @Override
-   public Set<SecurityGroup> listSecurityGroupsForNode(String id) {
-      SlashEncodedIds slashEncodedIds = SlashEncodedIds.fromSlashEncoded(id);
-
-      Instance instance = api.getInstanceApiForProject(userProject.get()).getInZone(slashEncodedIds.getFirstId(),
-              slashEncodedIds.getSecondId());
-
-      if (instance == null) {
-         return ImmutableSet.of();
-      }
-
-      ImmutableSet.Builder builder = ImmutableSet.builder();
-
-
-      for (NetworkInterface nwInterface : instance.getNetworkInterfaces()) {
-         String networkUrl = nwInterface.getNetwork().getPath();
-         Network nw = api.getNetworkApiForProject(userProject.get()).get(networkUrl.substring(networkUrl.lastIndexOf('/') + 1));
-
-         SecurityGroup grp = groupForTagsInNetwork(nw, instance.getTags().getItems());
-         if (grp != null) {
-            builder.add(grp);
-         }
-      }
-
-      return builder.build();
-   }
-
-   @Override
-   public SecurityGroup getSecurityGroupById(String id) {
-      checkNotNull(id, "id");
-      Network network = api.getNetworkApiForProject(userProject.get()).get(id);
-
-      if (network == null) {
-         return null;
-      }
-
-      return groupConverter.apply(network);
-   }
-
-   @Override
-   public SecurityGroup createSecurityGroup(String name, Location location) {
-      return createSecurityGroup(name);
-   }
-
-   public SecurityGroup createSecurityGroup(String name) {
-      checkNotNull(name, "name");
-
-      NetworkAndAddressRange nAr = new NetworkAndAddressRange(name, DEFAULT_INTERNAL_NETWORK_RANGE, null);
-
-      Network nw = networkCreator.apply(nAr);
-
-      return groupConverter.apply(nw);
-   }
-
-   @Override
-   public boolean removeSecurityGroup(String id) {
-      checkNotNull(id, "id");
-      if (api.getNetworkApiForProject(userProject.get()).get(id) == null) {
-         return false;
-      }
-
-      ListOptions options = new ListOptions.Builder().filter("network eq .*/" + id);
-
-      FluentIterable<Firewall> fws = api.getFirewallApiForProject(userProject.get()).list(options).concat();
-
-      for (Firewall fw : fws) {
-         AtomicReference<Operation> operation = Atomics.newReference(api.getFirewallApiForProject(userProject.get())
-                 .delete(fw.getName()));
-
-         retry(operationDonePredicate, operationCompleteCheckTimeout, operationCompleteCheckInterval,
-                 MILLISECONDS).apply(operation);
-
-         checkState(!operation.get().getHttpError().isPresent(), "Could not delete firewall, operation failed" + operation);
-      }
-
-      AtomicReference<Operation> operation = Atomics.newReference(
-              api.getNetworkApiForProject(userProject.get()).delete(id));
-
-      retry(operationDonePredicate, operationCompleteCheckTimeout, operationCompleteCheckInterval,
-                 MILLISECONDS).apply(operation);
-
-      checkState(!operation.get().getHttpError().isPresent(), "Could not create network, operation failed" + operation);
-
-      return true;
-   }
-
-   @Override
-   public SecurityGroup addIpPermission(IpPermission ipPermission, SecurityGroup group) {
-      checkNotNull(group, "group");
-      checkNotNull(ipPermission, "ipPermission");
-
-      checkNotNull(api.getNetworkApiForProject(userProject.get()).get(group.getId()) == null, "network for group is null");
-
-      ListOptions options = new ListOptions.Builder().filter("network eq .*/" + group.getName());
-
-      if (api.getFirewallApiForProject(userProject.get()).list(options).concat().anyMatch(providesIpPermission(ipPermission))) {
-         // Permission already exists.
-         return group;
-      }
-
-      FirewallOptions fwOptions = new FirewallOptions();
-      String uniqueFwName = namingConvention.createWithoutPrefix().uniqueNameForGroup(group.getName());
-      fwOptions.name(uniqueFwName);
-      fwOptions.network(group.getUri());
-      if (!ipPermission.getGroupIds().isEmpty()) {
-         fwOptions.sourceTags(ipPermission.getGroupIds());
-      }
-      if (!ipPermission.getCidrBlocks().isEmpty()) {
-         fwOptions.sourceRanges(ipPermission.getCidrBlocks());
-      }
-      Firewall.Rule.Builder ruleBuilder = Firewall.Rule.builder();
-      ruleBuilder.IpProtocol(ipPermission.getIpProtocol());
-      if (ipPermission.getFromPort() > 0) {
-         if (ipPermission.getFromPort() == ipPermission.getToPort()) {
-            ruleBuilder.addPort(ipPermission.getToPort());
-         } else {
-            ruleBuilder.addPortRange(ipPermission.getFromPort(), ipPermission.getToPort());
-         }
-      }
-      fwOptions.addAllowedRule(ruleBuilder.build());
-
-      AtomicReference<Operation> operation = Atomics.newReference(api.getFirewallApiForProject(userProject
-              .get()).createInNetwork(
-              uniqueFwName,
-              group.getUri(),
-              fwOptions));
-
-      retry(operationDonePredicate, operationCompleteCheckTimeout, operationCompleteCheckInterval,
-              MILLISECONDS).apply(operation);
-
-      checkState(!operation.get().getHttpError().isPresent(), "Could not create firewall, operation failed" + operation);
-
-      return getSecurityGroupById(group.getId());
-   }
-
-   @Override
-   public SecurityGroup addIpPermission(IpProtocol protocol, int fromPort, int toPort,
-           Multimap<String, String> tenantIdGroupNamePairs, Iterable<String> cidrBlocks,
-           Iterable<String> groupIds, SecurityGroup group) {
-
-      IpPermission.Builder permBuilder = IpPermission.builder();
-      permBuilder.ipProtocol(protocol);
-      permBuilder.fromPort(fromPort);
-      permBuilder.toPort(toPort);
-      permBuilder.groupIds(groupIds);
-      permBuilder.cidrBlocks(cidrBlocks);
-
-      return addIpPermission(permBuilder.build(), group);
-
-   }
-
-   @Override
-   public SecurityGroup removeIpPermission(IpPermission ipPermission, SecurityGroup group) {
-      checkNotNull(group, "group");
-      checkNotNull(ipPermission, "ipPermission");
-
-      checkNotNull(api.getNetworkApiForProject(userProject.get()).get(group.getId()) == null, "network for group is null");
-
-      ListOptions options = new ListOptions.Builder().filter("network eq .*/" + group.getName());
-
-      FluentIterable<Firewall> fws = api.getFirewallApiForProject(userProject.get()).list(options).concat();
-
-      for (Firewall fw : fws) {
-         if (equalsIpPermission(ipPermission).apply(fw)) {
-            AtomicReference<Operation> operation = Atomics.newReference(api.getFirewallApiForProject(userProject.get())
-                    .delete(fw.getName()));
-
-            retry(operationDonePredicate, operationCompleteCheckTimeout, operationCompleteCheckInterval,
-                    MILLISECONDS).apply(operation);
-
-            checkState(!operation.get().getHttpError().isPresent(), "Could not delete firewall, operation failed" + operation);
-         }
-      }
-
-      return getSecurityGroupById(group.getId());
-   }
-
-   @Override
-   public SecurityGroup removeIpPermission(IpProtocol protocol, int fromPort, int toPort,
-                                        Multimap<String, String> tenantIdGroupNamePairs, Iterable<String> cidrBlocks,
-                                        Iterable<String> groupIds, SecurityGroup group) {
-
-      IpPermission.Builder permBuilder = IpPermission.builder();
-      permBuilder.ipProtocol(protocol);
-      permBuilder.fromPort(fromPort);
-      permBuilder.toPort(toPort);
-      permBuilder.groupIds(groupIds);
-      permBuilder.cidrBlocks(cidrBlocks);
-
-      return removeIpPermission(permBuilder.build(), group);
-
-   }
-
-   @Override
-   public boolean supportsTenantIdGroupNamePairs() {
-      return false;
-   }
-
-   @Override
-   public boolean supportsTenantIdGroupIdPairs() {
-      return false;
-   }
-
-   @Override
-   public boolean supportsGroupIds() {
-      return true;
-   }
-
-   @Override
-   public boolean supportsPortRangesForGroups() {
-      return true;
-   }
-
-   private SecurityGroup groupForTagsInNetwork(Network nw, final Set <String> tags) {
-      ListOptions opts = new Builder().filter("network eq .*/" + nw.getName());
-      Set<Firewall> fws = api.getFirewallApiForProject(userProject.get()).list(opts).concat()
-              .filter(new Predicate<Firewall>() {
-                 @Override
-                 public boolean apply(final Firewall input) {
-                    // If any of the targetTags on the firewall apply or the firewall has no target tags...
-                    return Iterables.any(input.getTargetTags(), Predicates.in(tags))
-                            || Predicates.equalTo(0).apply(input.getTargetTags().size());
-                 }
-              }).toSet();
-
-      if (fws.isEmpty()) {
-         return null;
-      }
-
-      return groupConverter.apply(nw);
-   }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/897edde8/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/BuildInstanceMetadata.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/BuildInstanceMetadata.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/BuildInstanceMetadata.java
deleted file mode 100644
index 80b18b1..0000000
--- a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/BuildInstanceMetadata.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.googlecomputeengine.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static java.lang.String.format;
-
-import javax.inject.Singleton;
-
-import org.jclouds.compute.options.TemplateOptions;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
-
-/**
- * Prepares metadata from the provided TemplateOptions
- */
-@Singleton
-public class BuildInstanceMetadata implements Function<TemplateOptions, ImmutableMap.Builder<String, String>> {
-
-   @Override
-   public ImmutableMap.Builder apply(TemplateOptions input) {
-      ImmutableMap.Builder<String, String> builder = ImmutableMap.builder();
-      if (input.getPublicKey() != null) {
-         builder.put("sshKeys", format("%s:%s %s@localhost", checkNotNull(input.getLoginUser(),
-                 "loginUser cannot be null"), input.getPublicKey(), input.getLoginUser()));
-      }
-      builder.putAll(input.getUserMetadata());
-      return builder;
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/897edde8/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/FirewallTagNamingConvention.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/FirewallTagNamingConvention.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/FirewallTagNamingConvention.java
deleted file mode 100644
index 1d2508b..0000000
--- a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/FirewallTagNamingConvention.java
+++ /dev/null
@@ -1,62 +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.googlecomputeengine.compute.functions;
-
-import com.google.common.base.Predicate;
-import org.jclouds.compute.functions.GroupNamingConvention;
-
-import javax.inject.Inject;
-
-/**
- * The convention for naming instance tags that firewall rules recognise.
- */
-public class FirewallTagNamingConvention {
-
-   public static class Factory {
-
-      private final GroupNamingConvention.Factory namingConvention;
-
-      @Inject
-      public Factory(GroupNamingConvention.Factory namingConvention) {
-         this.namingConvention = namingConvention;
-      }
-
-      public FirewallTagNamingConvention get(String groupName) {
-         return new FirewallTagNamingConvention(namingConvention.create().sharedNameForGroup(groupName));
-      }
-   }
-
-   private final String sharedResourceName;
-
-   public FirewallTagNamingConvention(String sharedResourceName) {
-      this.sharedResourceName = sharedResourceName;
-   }
-
-   public String name(int port) {
-      return String.format("%s-port-%s", sharedResourceName, port);
-   }
-
-   public Predicate<? super String> isFirewallTag() {
-      return new Predicate<String>() {
-         @Override
-         public boolean apply(String input) {
-            return input != null && input.startsWith(sharedResourceName + "-port-");
-         }
-      };
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/897edde8/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/FirewallToIpPermission.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/FirewallToIpPermission.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/FirewallToIpPermission.java
deleted file mode 100644
index ea069e0..0000000
--- a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/FirewallToIpPermission.java
+++ /dev/null
@@ -1,87 +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.googlecomputeengine.compute.functions;
-
-import javax.annotation.Resource;
-import javax.inject.Named;
-
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.googlecomputeengine.domain.Firewall;
-import org.jclouds.googlecomputeengine.domain.Firewall.Rule;
-import org.jclouds.logging.Logger;
-import org.jclouds.net.domain.IpPermission;
-import org.jclouds.net.domain.IpProtocol;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Range;
-
-/**
- * A function for transforming a GCE-specific Firewall into a generic
- * IpPermission object.
- */
-public class FirewallToIpPermission implements Function<Firewall, Iterable<IpPermission>> {
-   @Resource
-   @Named(ComputeServiceConstants.COMPUTE_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   public FirewallToIpPermission() {
-   }
-
-
-   @Override
-   public Iterable<IpPermission> apply(Firewall fw) {
-      ImmutableSet.Builder setBuilder = ImmutableSet.builder();
-
-      for (Rule rule : fw.getAllowed()) {
-         if (!rule.getPorts().isEmpty()) {
-            for (Range<Integer> r : rule.getPorts().asRanges()) {
-               IpPermission.Builder builder = populateBuilder(fw, rule.getIpProtocol());
-               builder.fromPort(r.lowerEndpoint());
-               builder.toPort(r.upperEndpoint());
-               setBuilder.add(builder.build());
-            }
-         } else {
-            setBuilder.add(populateBuilder(fw, rule.getIpProtocol()).build());
-         }
-      }
-
-      return setBuilder.build();
-   }
-
-   /**
-    * Convenience method for populating common parts of the IpPermission.
-    * @param fw
-    * @param protocol
-    * @return a pre-populated builder.
-    */
-   private IpPermission.Builder populateBuilder(Firewall fw, IpProtocol protocol) {
-      IpPermission.Builder builder = IpPermission.builder();
-
-      builder.ipProtocol(protocol);
-
-      if (!fw.getSourceRanges().isEmpty()) {
-         builder.cidrBlocks(fw.getSourceRanges());
-      }
-      if (!fw.getSourceTags().isEmpty()) {
-         builder.groupIds(fw.getSourceTags());
-      }
-
-      return builder;
-   }
-}
-

http://git-wip-us.apache.org/repos/asf/stratos/blob/897edde8/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/GoogleComputeEngineImageToImage.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/GoogleComputeEngineImageToImage.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/GoogleComputeEngineImageToImage.java
deleted file mode 100644
index b783fc9..0000000
--- a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/GoogleComputeEngineImageToImage.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.googlecomputeengine.compute.functions;
-
-import static com.google.common.base.Joiner.on;
-import static com.google.common.collect.Iterables.getLast;
-import static com.google.common.collect.Iterables.limit;
-import static com.google.common.collect.Iterables.skip;
-import static org.jclouds.compute.domain.Image.Status;
-
-import java.util.List;
-
-import org.jclouds.compute.domain.ImageBuilder;
-import org.jclouds.compute.domain.OperatingSystem;
-import org.jclouds.compute.domain.OsFamily;
-import org.jclouds.googlecomputeengine.domain.Image;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
-
-/**
- * Transforms a google compute domain specific image to a generic Image object.
- */
-public class GoogleComputeEngineImageToImage implements Function<Image, org.jclouds.compute.domain.Image> {
-
-
-   @Override
-   public org.jclouds.compute.domain.Image apply(Image image) {
-      ImageBuilder builder = new ImageBuilder()
-              .id(image.getName())
-              .name(image.getName())
-              .providerId(image.getId())
-              .description(image.getDescription().orNull())
-              .status(Status.AVAILABLE)
-              .uri(image.getSelfLink());
-
-      List<String> splits = Lists.newArrayList(image.getName().split("-"));
-      OperatingSystem.Builder osBuilder = defaultOperatingSystem(image);
-      if (splits == null || splits.size() == 0 || splits.size() < 3) {
-         return builder.operatingSystem(osBuilder.build()).build();
-      }
-
-      OsFamily family = OsFamily.fromValue(splits.get(0));
-      if (family != OsFamily.UNRECOGNIZED) {
-         osBuilder.family(family);
-      }
-
-      String version = on(".").join(limit(skip(splits, 1), splits.size() - 2));
-      osBuilder.version(version);
-
-      if (image.getDeprecated().isPresent()) {
-         builder.userMetadata(ImmutableMap.of("deprecatedState", image.getDeprecated().get().getState().orNull()));
-      }
-      builder.version(getLast(splits));
-      return builder.operatingSystem(osBuilder.build()).build();
-   }
-
-   private OperatingSystem.Builder defaultOperatingSystem(Image image) {
-      return OperatingSystem.builder()
-              .family(OsFamily.LINUX)
-              .is64Bit(true)
-              .description(image.getName());
-   }
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/897edde8/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadata.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadata.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadata.java
deleted file mode 100644
index c1ddea1..0000000
--- a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/InstanceInZoneToNodeMetadata.java
+++ /dev/null
@@ -1,150 +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.googlecomputeengine.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.compute.util.ComputeServiceUtils.groupFromMapOrName;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GCE_IMAGE_METADATA_KEY;
-
-import java.net.URI;
-import java.util.Map;
-import java.util.Set;
-
-import javax.inject.Inject;
-
-import org.jclouds.collect.Memoized;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.NodeMetadata;
-import org.jclouds.compute.domain.NodeMetadataBuilder;
-import org.jclouds.compute.functions.GroupNamingConvention;
-import org.jclouds.domain.Location;
-import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
-import org.jclouds.googlecomputeengine.config.UserProject;
-import org.jclouds.googlecomputeengine.domain.Instance;
-import org.jclouds.googlecomputeengine.domain.InstanceInZone;
-import org.jclouds.googlecomputeengine.domain.SlashEncodedIds;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicates;
-import com.google.common.base.Supplier;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableSet;
-
-/**
- * Transforms a google compute domain Instance into a generic NodeMetatada object.
- */
-public class InstanceInZoneToNodeMetadata implements Function<InstanceInZone, NodeMetadata> {
-
-   private final Map<Instance.Status, NodeMetadata.Status> toPortableNodeStatus;
-   private final GroupNamingConvention nodeNamingConvention;
-   private final Supplier<Map<URI, ? extends Image>> images;
-   private final Supplier<Map<URI, ? extends Hardware>> hardwares;
-   private final Supplier<Map<URI, ? extends Location>> locations;
-   private final FirewallTagNamingConvention.Factory firewallTagNamingConvention;
-   private final GoogleComputeEngineApi api;
-   private final Supplier<String> userProject;
-
-   @Inject
-   public InstanceInZoneToNodeMetadata(Map<Instance.Status, NodeMetadata.Status> toPortableNodeStatus,
-                                 GroupNamingConvention.Factory namingConvention,
-                                 @Memoized Supplier<Map<URI, ? extends Image>> images,
-                                 @Memoized Supplier<Map<URI, ? extends Hardware>> hardwares,
-                                 @Memoized Supplier<Map<URI, ? extends Location>> locations,
-                                 FirewallTagNamingConvention.Factory firewallTagNamingConvention,
-                                 GoogleComputeEngineApi api,
-                                 @UserProject Supplier<String> userProject) {
-      this.toPortableNodeStatus = toPortableNodeStatus;
-      this.nodeNamingConvention = namingConvention.createWithoutPrefix();
-      this.images = images;
-      this.hardwares = hardwares;
-      this.locations = locations;
-      this.firewallTagNamingConvention = checkNotNull(firewallTagNamingConvention, "firewallTagNamingConvention");
-      this.api = checkNotNull(api, "api");
-      this.userProject = checkNotNull(userProject, "userProject");
-   }
-
-   @Override
-   public NodeMetadata apply(InstanceInZone instanceInZone) {
-      Instance input = instanceInZone.getInstance();
-
-      String group = groupFromMapOrName(input.getMetadata().getItems(),
-                                               input.getName(), nodeNamingConvention);
-      FluentIterable<String> tags = FluentIterable.from(input.getTags().getItems());
-      if (group != null) {
-         tags = tags.filter(Predicates.not(firewallTagNamingConvention.get(group).isFirewallTag()));
-      }
-
-      NodeMetadataBuilder builder = new NodeMetadataBuilder();
-
-      builder.id(SlashEncodedIds.fromTwoIds(checkNotNull(locations.get().get(input.getZone()),
-                                                                "location for %s", input.getZone())
-                                                    .getId(), input.getName()).slashEncode())
-              .name(input.getName())
-              .providerId(input.getId())
-              .hostname(input.getName())
-              .location(checkNotNull(locations.get().get(input.getZone()), "location for %s", input.getZone()))
-              .hardware(hardwares.get().get(input.getMachineType()))
-              .status(toPortableNodeStatus.get(input.getStatus()))
-              .tags(tags)
-              .uri(input.getSelfLink())
-              .userMetadata(input.getMetadata().getItems())
-              .group(group)
-              .privateAddresses(collectPrivateAddresses(input))
-              .publicAddresses(collectPublicAddresses(input));
-
-      if (input.getMetadata().getItems().containsKey(GCE_IMAGE_METADATA_KEY)) {
-         try {
-            URI imageUri = URI.create(input.getMetadata().getItems()
-                                              .get(GCE_IMAGE_METADATA_KEY));
-
-            Map<URI, ? extends Image> imagesMap = images.get();
-
-            Image image = checkNotNull(imagesMap.get(imageUri),
-                                       "no image for %s. images: %s", imageUri,
-                                       imagesMap.values());
-            builder.imageId(image.getId());
-         } catch (IllegalArgumentException e) {
-            // Swallow any exception here - it just means we don't actually have a valid image URI, so we skip it.
-         }
-      }
-
-      return builder.build();
-   }
-
-   private Set<String> collectPrivateAddresses(Instance input) {
-      ImmutableSet.Builder<String> privateAddressesBuilder = ImmutableSet.builder();
-      for (Instance.NetworkInterface networkInterface : input.getNetworkInterfaces()) {
-         if (networkInterface.getNetworkIP().isPresent()) {
-            privateAddressesBuilder.add(networkInterface.getNetworkIP().get());
-         }
-      }
-      return privateAddressesBuilder.build();
-   }
-
-   private Set<String> collectPublicAddresses(Instance input) {
-      ImmutableSet.Builder<String> publicAddressesBuilder = ImmutableSet.builder();
-      for (Instance.NetworkInterface networkInterface : input.getNetworkInterfaces()) {
-         for (Instance.NetworkInterface.AccessConfig accessConfig : networkInterface.getAccessConfigs()) {
-            if (accessConfig.getNatIP().isPresent()) {
-               publicAddressesBuilder.add(accessConfig.getNatIP().get());
-            }
-         }
-      }
-      return publicAddressesBuilder.build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/897edde8/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/MachineTypeInZoneToHardware.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/MachineTypeInZoneToHardware.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/MachineTypeInZoneToHardware.java
deleted file mode 100644
index e12a4a3..0000000
--- a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/MachineTypeInZoneToHardware.java
+++ /dev/null
@@ -1,95 +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.googlecomputeengine.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.Iterables.filter;
-import static com.google.common.collect.Iterables.getOnlyElement;
-
-import java.net.URI;
-import java.util.Map;
-
-import org.jclouds.collect.Memoized;
-import org.jclouds.compute.domain.Hardware;
-import org.jclouds.compute.domain.HardwareBuilder;
-import org.jclouds.compute.domain.Image;
-import org.jclouds.compute.domain.Processor;
-import org.jclouds.compute.domain.Volume;
-import org.jclouds.compute.domain.VolumeBuilder;
-import org.jclouds.domain.Location;
-import org.jclouds.googlecomputeengine.domain.MachineType;
-import org.jclouds.googlecomputeengine.domain.MachineTypeInZone;
-import org.jclouds.googlecomputeengine.domain.SlashEncodedIds;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableSet;
-import com.google.inject.Inject;
-
-/**
- * Transforms a google compute domain specific machine type to a generic Hardware object.
- */
-public class MachineTypeInZoneToHardware implements Function<MachineTypeInZone, Hardware> {
-
-   private final Supplier<Map<URI, ? extends Location>> locations;
-
-   @Inject
-   public MachineTypeInZoneToHardware(@Memoized Supplier<Map<URI, ? extends Location>> locations) {
-      this.locations = locations;
-   }
-
-   @Override
-   public Hardware apply(final MachineTypeInZone input) {
-      Iterable<? extends Location> zonesForMachineType = filter(locations.get().values(), new Predicate<Location>() {
-         @Override
-         public boolean apply(Location l) {
-            return l.getId().equals(input.getMachineType().getZone());
-         }
-      });
-
-      Location location = checkNotNull(getOnlyElement(zonesForMachineType),
-              "location for %s",
-              input.getMachineType().getZone());
-
-      return new HardwareBuilder()
-              .id(SlashEncodedIds.fromTwoIds(input.getMachineType().getZone(), input.getMachineType().getName()).slashEncode())
-              .location(location)
-              .name(input.getMachineType().getName())
-              .hypervisor("kvm")
-              .processor(new Processor(input.getMachineType().getGuestCpus(), 1.0))
-              .providerId(input.getMachineType().getId())
-              .ram(input.getMachineType().getMemoryMb())
-              .uri(input.getMachineType().getSelfLink())
-              .volumes(collectVolumes(input.getMachineType()))
-              .supportsImage(Predicates.<Image>alwaysTrue())
-              .build();
-   }
-
-   private Iterable<Volume> collectVolumes(MachineType input) {
-      ImmutableSet.Builder<Volume> volumes = ImmutableSet.builder();
-      for (MachineType.ScratchDisk disk : input.getScratchDisks()) {
-         volumes.add(new VolumeBuilder()
-                 .type(Volume.Type.LOCAL)
-                 .size(new Integer(disk.getDiskGb()).floatValue())
-                 .bootDevice(true)
-                 .durable(false).build());
-      }
-      return volumes.build();
-   }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/897edde8/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/NetworkToSecurityGroup.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/NetworkToSecurityGroup.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/NetworkToSecurityGroup.java
deleted file mode 100644
index 1a9be54..0000000
--- a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/NetworkToSecurityGroup.java
+++ /dev/null
@@ -1,82 +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.googlecomputeengine.compute.functions;
-
-import javax.annotation.Resource;
-import javax.inject.Inject;
-import javax.inject.Named;
-
-import org.jclouds.compute.domain.SecurityGroup;
-import org.jclouds.compute.domain.SecurityGroupBuilder;
-import org.jclouds.compute.reference.ComputeServiceConstants;
-import org.jclouds.googlecomputeengine.GoogleComputeEngineApi;
-import org.jclouds.googlecomputeengine.config.UserProject;
-import org.jclouds.googlecomputeengine.domain.Firewall;
-import org.jclouds.googlecomputeengine.domain.Network;
-import org.jclouds.googlecomputeengine.options.ListOptions;
-import org.jclouds.logging.Logger;
-import org.jclouds.net.domain.IpPermission;
-
-import com.google.common.base.Function;
-import com.google.common.base.Supplier;
-import com.google.common.collect.ImmutableSet;
-
-/**
- * A function for transforming a GCE-specific Network into a generic
- * SecurityGroup object.
- */
-public class NetworkToSecurityGroup implements Function<Network, SecurityGroup> {
-   @Resource
-   @Named(ComputeServiceConstants.COMPUTE_LOGGER)
-   protected Logger logger = Logger.NULL;
-
-   private final Function<Firewall, Iterable<IpPermission>> firewallToPerms;
-   private final GoogleComputeEngineApi api;
-   private final Supplier<String> project;
-
-   @Inject
-   public NetworkToSecurityGroup(Function<Firewall, Iterable<IpPermission>> firewallToPerms,
-                                 GoogleComputeEngineApi api,
-                                 @UserProject Supplier<String> project) {
-      this.firewallToPerms = firewallToPerms;
-      this.api = api;
-      this.project = project;
-   }
-
-   @Override
-   public SecurityGroup apply(Network network)  {
-      SecurityGroupBuilder builder = new SecurityGroupBuilder();
-
-      builder.id(network.getName());
-      builder.providerId(network.getId());
-      builder.name(network.getName());
-      builder.uri(network.getSelfLink());
-
-      ImmutableSet.Builder permBuilder = ImmutableSet.builder();
-
-      ListOptions options = new ListOptions.Builder().filter("network eq .*/" + network.getName());
-
-      for (Firewall fw : api.getFirewallApiForProject(project.get()).list(options).concat()) {
-         permBuilder.addAll(firewallToPerms.apply(fw));
-      }
-
-      builder.ipPermissions(permBuilder.build());
-
-      return builder.build();
-   }
-}
-

http://git-wip-us.apache.org/repos/asf/stratos/blob/897edde8/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/OrphanedGroupsFromDeadNodes.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/OrphanedGroupsFromDeadNodes.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/OrphanedGroupsFromDeadNodes.java
deleted file mode 100644
index 3301c8f..0000000
--- a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/OrphanedGroupsFromDeadNodes.java
+++ /dev/null
@@ -1,57 +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.googlecomputeengine.compute.functions;
-
-import java.util.Set;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import org.jclouds.compute.domain.NodeMetadata;
-
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Sets;
-
-@Singleton
-public class OrphanedGroupsFromDeadNodes implements Function<Set<? extends NodeMetadata>, Set<String>> {
-
-   private final Predicate<String> isOrphanedGroupPredicate;
-
-   @Inject
-   public OrphanedGroupsFromDeadNodes(Predicate<String> isOrphanedGroupPredicate) {
-      this.isOrphanedGroupPredicate = isOrphanedGroupPredicate;
-   }
-
-
-   @Override
-   public Set<String> apply(Set<? extends NodeMetadata> deadNodes) {
-      Set<String> groups = Sets.newLinkedHashSet();
-      for (NodeMetadata deadNode : deadNodes) {
-         groups.add(deadNode.getGroup());
-      }
-      Set<String> orphanedGroups = Sets.newLinkedHashSet();
-      for (String group : groups) {
-         if (isOrphanedGroupPredicate.apply(group)) {
-            orphanedGroups.add(group);
-         }
-      }
-      return orphanedGroups;
-   }
-
-
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/897edde8/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/RegionToLocation.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/RegionToLocation.java b/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/RegionToLocation.java
deleted file mode 100644
index 2f880de..0000000
--- a/dependencies/jclouds/apis/gce/1.8.1-stratos/src/main/java/org/jclouds/googlecomputeengine/compute/functions/RegionToLocation.java
+++ /dev/null
@@ -1,45 +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.googlecomputeengine.compute.functions;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.jclouds.googlecomputeengine.GoogleComputeEngineConstants.GOOGLE_PROVIDER_LOCATION;
-
-import org.jclouds.domain.Location;
-import org.jclouds.domain.LocationBuilder;
-import org.jclouds.domain.LocationScope;
-import org.jclouds.googlecomputeengine.domain.Region;
-
-import com.google.common.base.Function;
-import com.google.common.collect.ImmutableMap;
-
-/**
- * Transforms a google compute domain specific region to a generic Region object.
- */
-public class RegionToLocation implements Function<Region, Location> {
-
-   @Override
-   public Location apply(Region input) {
-      return new LocationBuilder()
-              .description(input.getDescription().orNull())
-              .metadata(ImmutableMap.of("selfLink", (Object) checkNotNull(input.getSelfLink(), "region URI")))
-              .id(input.getName())
-              .scope(LocationScope.REGION)
-              .parent(GOOGLE_PROVIDER_LOCATION)
-              .build();
-   }
-}