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 2014/12/25 13:04:12 UTC

stratos git commit: Readme - why vcloud api is forked?

Repository: stratos
Updated Branches:
  refs/heads/master 11bacbd48 -> d85b5042a


Readme - why vcloud api is forked?


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/d85b5042
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/d85b5042
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/d85b5042

Branch: refs/heads/master
Commit: d85b5042a91d79fd61ce931d2374a51b355ee489
Parents: 11bacbd
Author: R-Rajkumar <rr...@gmail.com>
Authored: Thu Dec 25 17:33:47 2014 +0530
Committer: R-Rajkumar <rr...@gmail.com>
Committed: Thu Dec 25 17:33:47 2014 +0530

----------------------------------------------------------------------
 dependencies/jclouds/apis/vcloud/Readme.md | 636 ++++++++++++++++++++++++
 1 file changed, 636 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/d85b5042/dependencies/jclouds/apis/vcloud/Readme.md
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/apis/vcloud/Readme.md b/dependencies/jclouds/apis/vcloud/Readme.md
new file mode 100644
index 0000000..43cfbdc
--- /dev/null
+++ b/dependencies/jclouds/apis/vcloud/Readme.md
@@ -0,0 +1,636 @@
+Why vcloud api forked?
+=====================
+
+We have implemented support for vCloud 1.5 in jclouds
+
+Custom changes
+==============
+
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/pom.xml b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/pom.xml
+index 4eb34f9..8357aec 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/pom.xml
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/pom.xml
+@@ -23,15 +23,16 @@
+     <groupId>org.apache.jclouds</groupId>
+     <artifactId>jclouds-project</artifactId>
+     <version>1.8.1</version>
+-    <relativePath>../../project/pom.xml</relativePath>
+   </parent>
+-  <groupId>org.apache.jclouds.api</groupId>
++  <groupId>org.apache.stratos</groupId>
+   <artifactId>vcloud</artifactId>
++  <version>1.8.1-stratos</version>
+   <name>jclouds vcloud api</name>
+   <description>jclouds components to access an implementation of VMWare vCloud</description>
+   <packaging>bundle</packaging>
+ 
+   <properties>
++    <jclouds.version>1.8.1</jclouds.version>
+     <test.vcloud.endpoint>FIXME_ENDPOINT</test.vcloud.endpoint>
+     <test.vcloud.api-version>1.0</test.vcloud.api-version>
+     <test.vcloud.build-version />
+@@ -40,9 +41,9 @@
+     <test.vcloud.template />
+     <jclouds.osgi.export>org.jclouds.vcloud*;version="${project.version}"</jclouds.osgi.export>
+     <jclouds.osgi.import>
+-      org.jclouds.compute.internal;version="${project.version}",
+-      org.jclouds.rest.internal;version="${project.version}",
+-      org.jclouds*;version="${project.version}",
++      org.jclouds.compute.internal;version="${jclouds.version}",
++      org.jclouds.rest.internal;version="${jclouds.version}",
++      org.jclouds*;version="${jclouds.version}",
+       *
+     </jclouds.osgi.import>
+   </properties>
+@@ -56,37 +57,37 @@
+     <dependency>
+       <groupId>org.apache.jclouds</groupId>
+       <artifactId>jclouds-core</artifactId>
+-      <version>${project.version}</version>
++      <version>${jclouds.version}</version>
+     </dependency>
+     <dependency>
+       <groupId>org.apache.jclouds</groupId>
+       <artifactId>jclouds-core</artifactId>
+-      <version>${project.version}</version>
++      <version>${jclouds.version}</version>
+       <type>test-jar</type>
+       <scope>test</scope>
+     </dependency>
+     <dependency>
+       <groupId>org.apache.jclouds</groupId>
+       <artifactId>jclouds-compute</artifactId>
+-      <version>${project.version}</version>
++      <version>${jclouds.version}</version>
+     </dependency>
+     <dependency>
+       <groupId>org.apache.jclouds</groupId>
+       <artifactId>jclouds-compute</artifactId>
+-      <version>${project.version}</version>
++      <version>${jclouds.version}</version>
+       <type>test-jar</type>
+       <scope>test</scope>
+     </dependency>
+     <dependency>
+       <groupId>org.apache.jclouds.driver</groupId>
+       <artifactId>jclouds-sshj</artifactId>
+-      <version>${project.version}</version>
++      <version>${jclouds.version}</version>
+       <scope>test</scope>
+     </dependency>
+     <dependency>
+       <groupId>org.apache.jclouds.driver</groupId>
+       <artifactId>jclouds-log4j</artifactId>
+-      <version>${project.version}</version>
++      <version>${jclouds.version}</version>
+       <scope>test</scope>
+     </dependency>
+   </dependencies>
+@@ -124,5 +125,7 @@
+     </profile>
+   </profiles>
+ 
+-
++  <scm>
++    <tag>4.0.0-rc4</tag>
++  </scm>
+ </project>
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/VCloudMediaType.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudMediaType.java
+index f698b3e..67701fb 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/VCloudMediaType.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudMediaType.java
+@@ -209,4 +209,14 @@ public interface VCloudMediaType {
+     */
+    public static final MediaType RASDITEM_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.rasdItem+xml");
+ 
++   /**
++    * "application/vnd.vmware.vcloud.session+xml"
++    */
++   public static final String SESSION_XML = "application/vnd.vmware.vcloud.session+xml";
++
++   /**
++    * "application/vnd.vmware.vcloud.session+xml"
++    */
++   public static final MediaType SESSION_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.session+xml");
++
+ }
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/VCloudVersionsApi.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudVersionsApi.java
+index 01ec045..b6c46f9 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/VCloudVersionsApi.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudVersionsApi.java
+@@ -23,9 +23,12 @@ import java.util.SortedMap;
+ import javax.ws.rs.GET;
+ import javax.ws.rs.Path;
+ 
++import org.jclouds.rest.annotations.RequestFilters;
+ import org.jclouds.rest.annotations.XMLResponseParser;
++import org.jclouds.vcloud.http.filters.VCloudSupportedVersions;
+ import org.jclouds.vcloud.xml.SupportedVersionsHandler;
+ 
++@RequestFilters(VCloudSupportedVersions.class)
+ public interface VCloudVersionsApi extends Closeable {
+ 
+    @GET
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/domain/ReferenceType.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/ReferenceType.java
+index 108c139..d36343d 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/domain/ReferenceType.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/ReferenceType.java
+@@ -45,4 +45,8 @@ public interface ReferenceType extends Comparable<ReferenceType> {
+     */
+    String getType();
+ 
++   /**
++    * @return relationship to the referenced object.
++    */
++   String getRelationship();
+ }
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/domain/internal/CatalogImpl.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/CatalogImpl.java
+index 37dfb10..03d1532 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/domain/internal/CatalogImpl.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/CatalogImpl.java
+@@ -182,4 +182,8 @@ public class CatalogImpl extends LinkedHashMap<String, ReferenceType> implements
+       return (this == o) ? 0 : getHref().compareTo(o.getHref());
+    }
+ 
++   @Override
++   public String getRelationship() {
++      throw new UnsupportedOperationException();
++   }
+ }
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/domain/internal/ReferenceTypeImpl.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/ReferenceTypeImpl.java
+index 4519eba..fa128f9 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/domain/internal/ReferenceTypeImpl.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/domain/internal/ReferenceTypeImpl.java
+@@ -32,11 +32,20 @@ public class ReferenceTypeImpl implements ReferenceType {
+    private final String name;
+    private final String type;
+    private final URI href;
++   private final String relationship;
+ 
+    public ReferenceTypeImpl(String name, String type, URI href) {
+       this.name = name;
+       this.type = type;
+       this.href = href;
++	  this.relationship = null;
++   }
++
++   public ReferenceTypeImpl(String name, String type, URI href, String relationship) {
++      this.name = name;
++      this.type = type;
++      this.href = href;
++      this.relationship = relationship;
+    }
+ 
+    @Override
+@@ -80,6 +89,11 @@ public class ReferenceTypeImpl implements ReferenceType {
+    }
+ 
+    protected ToStringHelper string() {
+-      return Objects.toStringHelper("").omitNullValues().add("href", href).add("name", name).add("type", type);
++      return Objects.toStringHelper("").omitNullValues().add("href", href).add("name", name).add("type", type).add("relationship", relationship);
++   }
++
++   @Override
++   public String getRelationship() {
++      return relationship;
+    }
+ }
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/filters/AddVCloudAuthorizationAndCookieToRequest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/filters/AddVCloudAuthorizationAndCookieToRequest.java
+index 9d2953f..1d3ba5d 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/filters/AddVCloudAuthorizationAndCookieToRequest.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/filters/AddVCloudAuthorizationAndCookieToRequest.java
+@@ -22,6 +22,7 @@ import javax.inject.Singleton;
+ import org.jclouds.http.HttpException;
+ import org.jclouds.http.HttpRequest;
+ import org.jclouds.http.HttpRequestFilter;
++import org.jclouds.rest.annotations.ApiVersion;
+ import org.jclouds.vcloud.VCloudToken;
+ 
+ import com.google.common.base.Supplier;
+@@ -34,19 +35,26 @@ import com.google.common.net.HttpHeaders;
+ @Singleton
+ public class AddVCloudAuthorizationAndCookieToRequest implements HttpRequestFilter {
+    private Supplier<String> vcloudTokenProvider;
++   private final String apiVersion;
+ 
+    @Inject
+-   public AddVCloudAuthorizationAndCookieToRequest(@VCloudToken Supplier<String> authTokenProvider) {
++   public AddVCloudAuthorizationAndCookieToRequest(@VCloudToken Supplier<String> authTokenProvider,  @ApiVersion final String apiVersion) {
+       this.vcloudTokenProvider = authTokenProvider;
++      this.apiVersion = apiVersion;
+    }
+ 
+    @Override
+    public HttpRequest filter(HttpRequest request) throws HttpException {
+-      String token = vcloudTokenProvider.get();
+-      return request
+-               .toBuilder()
+-               .replaceHeaders(
+-                        ImmutableMultimap.of("x-vcloud-authorization", token, HttpHeaders.COOKIE, "vcloud-token="
+-                                 + token)).build();
++       String token = vcloudTokenProvider.get();
++       String acceptType = request.getFirstHeaderOrNull(HttpHeaders.ACCEPT) == null
++               ? "application/*+xml"
++               : request.getFirstHeaderOrNull(HttpHeaders.ACCEPT);
++       String version = ";version=" + apiVersion;
++       String acceptHeader = acceptType + version;
++       return request.toBuilder()
++               .replaceHeaders(ImmutableMultimap.of(HttpHeaders.ACCEPT,
++                       acceptHeader, "x-vcloud-authorization", token,
++                       HttpHeaders.COOKIE, "vcloud-token=" +
++                               token)).build();
+    }
+ }
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/functions/CatalogsInOrg.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/functions/CatalogsInOrg.java
+index 15be6c7..917f651 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/functions/CatalogsInOrg.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/functions/CatalogsInOrg.java
+@@ -22,6 +22,9 @@ import javax.annotation.Resource;
+ import javax.inject.Inject;
+ import javax.inject.Singleton;
+ 
++import com.google.common.base.Predicate;
++import com.google.common.collect.Collections2;
++import com.google.common.collect.ImmutableSet;
+ import org.jclouds.logging.Logger;
+ import org.jclouds.vcloud.VCloudApi;
+ import org.jclouds.vcloud.domain.Catalog;
+@@ -30,6 +33,8 @@ import org.jclouds.vcloud.domain.ReferenceType;
+ 
+ import com.google.common.base.Function;
+ 
++import java.util.Collection;
++
+ @Singleton
+ public class CatalogsInOrg implements Function<Org, Iterable<Catalog>> {
+    @Resource
+@@ -44,7 +49,18 @@ public class CatalogsInOrg implements Function<Org, Iterable<Catalog>> {
+ 
+    @Override
+    public Iterable<Catalog> apply(final Org org) {
+-      return transform(org.getCatalogs().values(), new Function<ReferenceType, Catalog>() {
++       Collection<ReferenceType> filtered = Collections2.filter(
++               org.getCatalogs().values(), new Predicate<ReferenceType>() {
++                   @Override
++                   public boolean apply(ReferenceType type) {
++                       if (type == null) {
++                           return false;
++                       }
++                       return !ImmutableSet.of("add", "remove").contains(type.getRelationship());
++                   }
++               });
++
++       return transform(filtered, new Function<ReferenceType, Catalog>() {
+          public Catalog apply(ReferenceType from) {
+             return aclient.getCatalogApi().getCatalog(from.getHref());
+          }
+diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/http/filters/VCloudBasicAuthentication.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/http/filters/VCloudBasicAuthentication.java
+new file mode 100644
+index 0000000..a333874
+--- /dev/null
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/http/filters/VCloudBasicAuthentication.java
+@@ -0,0 +1,58 @@
++/*
++  * 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.vcloud.http.filters;
++
++import com.google.common.base.Preconditions;
++import com.google.common.base.Supplier;
++import javax.inject.Inject;
++import javax.inject.Singleton;
++import org.jclouds.domain.Credentials;
++import org.jclouds.http.HttpException;
++import org.jclouds.http.HttpRequest;
++import org.jclouds.http.HttpRequest.Builder;
++import org.jclouds.http.HttpRequestFilter;
++import org.jclouds.http.filters.BasicAuthentication;
++import org.jclouds.location.Provider;
++import org.jclouds.rest.annotations.ApiVersion;
++
++@Singleton
++public class VCloudBasicAuthentication implements HttpRequestFilter
++{
++  private final Supplier<Credentials> creds;
++  private final String apiVersion;
++
++  @Inject
++  public VCloudBasicAuthentication(@Provider Supplier<Credentials> creds, @ApiVersion String apiVersion)
++  {
++    this.creds = ((Supplier)Preconditions.checkNotNull(creds, "creds"));
++    this.apiVersion = apiVersion;
++  }
++
++  public HttpRequest filter(HttpRequest request) throws HttpException
++  {
++    Credentials currentCreds = (Credentials)Preconditions.checkNotNull(this.creds.get(), "credential supplier returned null");
++    String acceptType = request.getFirstHeaderOrNull("Accept") == null ? "application/*+xml" : request.getFirstHeaderOrNull("Accept");
++
++    String version = ";version=" + this.apiVersion;
++    String acceptHeader = acceptType + version;
++
++    request = ((HttpRequest.Builder)request.toBuilder().replaceHeader("Accept", new String[] { acceptHeader })).build();
++
++    return ((HttpRequest.Builder)request.toBuilder().replaceHeader("Authorization", new String[] { BasicAuthentication.basic(currentCreds.identity, currentCreds.credential) })).build();
++  }
++}
+diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/http/filters/VCloudSupportedVersions.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/http/filters/VCloudSupportedVersions.java
+new file mode 100644
+index 0000000..3769fda
+--- /dev/null
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/http/filters/VCloudSupportedVersions.java
+@@ -0,0 +1,35 @@
++/*
++  * 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.vcloud.http.filters;
++
++import javax.inject.Singleton;
++
++import org.jclouds.http.HttpException;
++import org.jclouds.http.HttpRequest;
++import org.jclouds.http.HttpRequestFilter;
++
++@Singleton
++public class VCloudSupportedVersions implements HttpRequestFilter
++{
++  @SuppressWarnings("rawtypes")
++public HttpRequest filter(HttpRequest request)
++    throws HttpException
++  {
++    return ((HttpRequest.Builder)request.toBuilder().replaceHeader("Accept", new String[] { "*/*" })).build();
++  }
++}
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/internal/VCloudLoginApi.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/internal/VCloudLoginApi.java
+index acf77c5..74a7be4 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/internal/VCloudLoginApi.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/internal/VCloudLoginApi.java
+@@ -28,9 +28,10 @@ import org.jclouds.rest.annotations.ResponseParser;
+ import org.jclouds.vcloud.VCloudMediaType;
+ import org.jclouds.vcloud.domain.VCloudSession;
+ import org.jclouds.vcloud.functions.ParseLoginResponseFromHeaders;
++import org.jclouds.vcloud.http.filters.VCloudBasicAuthentication;
+ 
+ @Endpoint(org.jclouds.vcloud.endpoints.VCloudLogin.class)
+-@RequestFilters(BasicAuthentication.class)
++@RequestFilters(VCloudBasicAuthentication.class)
+ public interface VCloudLoginApi extends Closeable {
+ 
+    /**
+@@ -39,6 +40,6 @@ public interface VCloudLoginApi extends Closeable {
+     */
+    @POST
+    @ResponseParser(ParseLoginResponseFromHeaders.class)
+-   @Consumes(VCloudMediaType.ORGLIST_XML)
++   @Consumes({VCloudMediaType.SESSION_XML,VCloudMediaType.ORGLIST_XML})
+    VCloudSession login();
+ }
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/util/Utils.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/util/Utils.java
+index 8bd10f1..623ee08 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/util/Utils.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/util/Utils.java
+@@ -30,9 +30,10 @@ public class Utils {
+    public static ReferenceType newReferenceType(Map<String, String> attributes, String defaultType) {
+       String uri = attributes.get("href");
+       String type = attributes.get("type");
++	  String relationship = attributes.get("rel");
+       // savvis org has null href
+       URI href = (uri != null) ? URI.create(uri) : null;
+-      return new ReferenceTypeImpl(attributes.get("name"), type != null ? type : defaultType, href);
++      return new ReferenceTypeImpl(attributes.get("name"), type != null ? type : defaultType, href, relationship);
+    }
+ 
+    public static ReferenceType newReferenceType(Map<String, String> attributes) {
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/xml/OrgListHandler.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/xml/OrgListHandler.java
+index 9088842..5176165 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/main/java/org/jclouds/vcloud/xml/OrgListHandler.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/xml/OrgListHandler.java
+@@ -39,7 +39,7 @@ public class OrgListHandler extends ParseSax.HandlerWithResult<Map<String, Refer
+    @Override
+    public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException {
+       Map<String, String> attributes = SaxUtils.cleanseAttributes(attrs);
+-      if (qName.endsWith("Org")) {
++      if (qName.endsWith("Link") || qName.endsWith("Org")) {
+          String type = attributes.get("type");
+          if (type != null) {
+             if (type.indexOf("org+xml") != -1) {
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/test/java/org/jclouds/vcloud/VCloudVersionsApiTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/VCloudVersionsApiTest.java
+index 6095e1d..37ae52b 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/test/java/org/jclouds/vcloud/VCloudVersionsApiTest.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/VCloudVersionsApiTest.java
+@@ -57,7 +57,7 @@ public class VCloudVersionsApiTest extends BaseRestAnnotationProcessingTest<VClo
+ 
+    @Override
+    protected void checkFilters(HttpRequest request) {
+-      assertEquals(request.getFilters().size(), 0);
++      assertEquals(request.getFilters().size(), 1);
+    }
+ 
+    @Override
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/test/java/org/jclouds/vcloud/compute/BaseVCloudComputeServiceExpectTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/compute/BaseVCloudComputeServiceExpectTest.java
+index f343d6e..e938600 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/test/java/org/jclouds/vcloud/compute/BaseVCloudComputeServiceExpectTest.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/compute/BaseVCloudComputeServiceExpectTest.java
+@@ -40,7 +40,7 @@ public abstract class BaseVCloudComputeServiceExpectTest extends BaseRestApiExpe
+    protected static final String ENDPOINT = "https://zone.myvcloud.com/api";
+ 
+    protected HttpRequest versionsRequest = HttpRequest.builder().method("GET").endpoint(
+-            URI.create(ENDPOINT + "/versions")).build();
++            URI.create(ENDPOINT + "/versions")).addHeader(HttpHeaders.ACCEPT, "*/*").build();
+ 
+    protected HttpResponse versionsResponseFromVCD1_5 = HttpResponse.builder().statusCode(200)
+             .message("HTTP/1.1 200 OK").payload(payloadFromResourceWithContentType("/versions-vcd15.xml", "text/xml"))
+@@ -48,7 +48,7 @@ public abstract class BaseVCloudComputeServiceExpectTest extends BaseRestApiExpe
+ 
+    // initial auth is using basic
+    protected HttpRequest version1_0LoginRequest = HttpRequest.builder().method("POST").endpoint(ENDPOINT + "/v1.0/login")
+-            .addHeader(HttpHeaders.ACCEPT, VCloudMediaType.ORGLIST_XML)
++            .addHeader(HttpHeaders.ACCEPT, "application/vnd.vmware.vcloud.session+xml;version=1.0")
+             .addHeader(HttpHeaders.AUTHORIZATION, "Basic aWRlbnRpdHk6Y3JlZGVudGlhbA==").build();
+ 
+    protected String sessionToken = "AtatAgvJMrwOc9pDQq4RRCRLazThpnTKJDxSVH9oB2I=";
+@@ -64,7 +64,7 @@ public abstract class BaseVCloudComputeServiceExpectTest extends BaseRestApiExpe
+    protected String orgId = "c076f90a-397a-49fa-89b8-b294c1599cd0";
+    
+    protected HttpRequest version1_0GetOrgRequest = HttpRequest.builder().method("GET").endpoint(ENDPOINT + "/v1.0/org/" + orgId)
+-            .addHeader(HttpHeaders.ACCEPT, VCloudMediaType.ORG_XML)
++            .addHeader(HttpHeaders.ACCEPT, VCloudMediaType.ORG_XML+";version=1.0")
+             .addHeader("x-vcloud-authorization", sessionToken)
+             .addHeader(HttpHeaders.COOKIE, "vcloud-token=" + sessionToken).build();
+    
+@@ -76,7 +76,7 @@ public abstract class BaseVCloudComputeServiceExpectTest extends BaseRestApiExpe
+    protected String vdcId = "e9cd3387-ac57-4d27-a481-9bee75e0690f";
+ 
+    protected HttpRequest version1_0GetCatalogRequest = HttpRequest.builder().method("GET").endpoint(ENDPOINT + "/v1.0/catalog/" + catalogId)
+-            .addHeader(HttpHeaders.ACCEPT, VCloudMediaType.CATALOG_XML)
++            .addHeader(HttpHeaders.ACCEPT, VCloudMediaType.CATALOG_XML +";version=1.0")
+             .addHeader("x-vcloud-authorization", sessionToken)
+             .addHeader(HttpHeaders.COOKIE, "vcloud-token=" + sessionToken).build();
+    
+@@ -87,7 +87,7 @@ public abstract class BaseVCloudComputeServiceExpectTest extends BaseRestApiExpe
+    protected String catalogItemId = "ceb369f7-1d07-4e32-9dbd-ebb5aa6ca55c";
+    
+    protected HttpRequest version1_0GetCatalogItemRequest = HttpRequest.builder().method("GET").endpoint(ENDPOINT + "/v1.0/catalogItem/" + catalogItemId)
+-            .addHeader(HttpHeaders.ACCEPT, VCloudMediaType.CATALOGITEM_XML)
++            .addHeader(HttpHeaders.ACCEPT, VCloudMediaType.CATALOGITEM_XML +";version=1.0")
+             .addHeader("x-vcloud-authorization", sessionToken)
+             .addHeader(HttpHeaders.COOKIE, "vcloud-token=" + sessionToken).build();
+    
+@@ -99,7 +99,7 @@ public abstract class BaseVCloudComputeServiceExpectTest extends BaseRestApiExpe
+    protected String templateId = "vappTemplate-51891b97-c5dd-47dc-a687-aabae354f728";
+ 
+    protected HttpRequest version1_0GetVDCRequest = HttpRequest.builder().method("GET").endpoint(ENDPOINT + "/v1.0/vdc/" + vdcId)
+-            .addHeader(HttpHeaders.ACCEPT, VCloudMediaType.VDC_XML)
++            .addHeader(HttpHeaders.ACCEPT, VCloudMediaType.VDC_XML +";version=1.0")
+             .addHeader("x-vcloud-authorization", sessionToken)
+             .addHeader(HttpHeaders.COOKIE, "vcloud-token=" + sessionToken).build();
+             
+@@ -110,7 +110,7 @@ public abstract class BaseVCloudComputeServiceExpectTest extends BaseRestApiExpe
+    protected String networkId = "b466c0c5-8a5c-4335-b703-a2e2e6b5f3e1";
+    
+    protected HttpRequest version1_0GetVAppTemplateRequest = HttpRequest.builder().method("GET").endpoint(ENDPOINT + "/v1.0/vAppTemplate/" + templateId)
+-            .addHeader(HttpHeaders.ACCEPT, VCloudMediaType.VAPPTEMPLATE_XML)
++            .addHeader(HttpHeaders.ACCEPT, VCloudMediaType.VAPPTEMPLATE_XML +";version=1.0")
+             .addHeader("x-vcloud-authorization", sessionToken)
+             .addHeader(HttpHeaders.COOKIE, "vcloud-token=" + sessionToken).build();
+    
+@@ -123,7 +123,7 @@ public abstract class BaseVCloudComputeServiceExpectTest extends BaseRestApiExpe
+             .build();   
+ 
+    protected HttpRequest version1_0GetOVFForVAppTemplateRequest = HttpRequest.builder().method("GET").endpoint(ENDPOINT + "/v1.0/vAppTemplate/" + templateId + "/ovf")
+-            .addHeader(HttpHeaders.ACCEPT, MediaType.TEXT_XML)
++            .addHeader(HttpHeaders.ACCEPT, MediaType.TEXT_XML +";version=1.0")
+             .addHeader("x-vcloud-authorization", sessionToken)
+             .addHeader(HttpHeaders.COOKIE, "vcloud-token=" + sessionToken).build();
+    
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/test/java/org/jclouds/vcloud/compute/strategy/InstantiateVAppTemplateWithGroupEncodedIntoNameThenCustomizeDeployAndPowerOnExpectTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/compute/strategy/InstantiateVAppTemplateWithGroupEncodedIntoNameThenCustomizeDeployAndPowerOnExpectTest.java
+index 9f05f74..2608021 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/test/java/org/jclouds/vcloud/compute/strategy/InstantiateVAppTemplateWithGroupEncodedIntoNameThenCustomizeDeployAndPowerOnExpectTest.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/compute/strategy/InstantiateVAppTemplateWithGroupEncodedIntoNameThenCustomizeDeployAndPowerOnExpectTest.java
+@@ -82,7 +82,7 @@ public class InstantiateVAppTemplateWithGroupEncodedIntoNameThenCustomizeDeployA
+      
+       HttpRequest version1_0InstantiateWithNetworkNamedSameAsOrgNetwork = HttpRequest.builder().method("POST")
+                                                                            .endpoint(ENDPOINT + "/v1.0/vdc/" + vdcId + "/action/instantiateVAppTemplate")
+-                                                                           .addHeader(HttpHeaders.ACCEPT, "application/vnd.vmware.vcloud.vApp+xml")
++                                                                           .addHeader(HttpHeaders.ACCEPT, "application/vnd.vmware.vcloud.vApp+xml;version=1.0")
+                                                                            .addHeader("x-vcloud-authorization", sessionToken)
+                                                                            .addHeader(HttpHeaders.COOKIE, "vcloud-token=" + sessionToken)
+                                                                            .payload(payloadFromStringWithContentType(instantiateXML, "application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml")).build();
+@@ -139,7 +139,7 @@ public class InstantiateVAppTemplateWithGroupEncodedIntoNameThenCustomizeDeployA
+      
+       HttpRequest version1_0InstantiateWithCustomizedNetwork = HttpRequest.builder().method("POST")
+                                                                           .endpoint(ENDPOINT + "/v1.0/vdc/" + vdcId + "/action/instantiateVAppTemplate")
+-                                                                          .addHeader(HttpHeaders.ACCEPT, "application/vnd.vmware.vcloud.vApp+xml")
++                                                                          .addHeader(HttpHeaders.ACCEPT, "application/vnd.vmware.vcloud.vApp+xml;version=1.0")
+                                                                           .addHeader("x-vcloud-authorization", sessionToken)
+                                                                           .addHeader(HttpHeaders.COOKIE, "vcloud-token=" + sessionToken)
+                                                                           .payload(payloadFromStringWithContentType(instantiateXML, "application/vnd.vmware.vcloud.instantiateVAppTemplateParams+xml")).build();
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/test/java/org/jclouds/vcloud/filters/AddVCloudAuthorizationAndCookieToRequestTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/filters/AddVCloudAuthorizationAndCookieToRequestTest.java
+index b2e4687..40d1fd5 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/test/java/org/jclouds/vcloud/filters/AddVCloudAuthorizationAndCookieToRequestTest.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/filters/AddVCloudAuthorizationAndCookieToRequestTest.java
+@@ -32,18 +32,18 @@ public class AddVCloudAuthorizationAndCookieToRequestTest {
+ 
+    @BeforeTest
+    void setUp() {
+-      filter = new AddVCloudAuthorizationAndCookieToRequest(new Supplier<String>() {
+-         public String get() {
+-            return "token";
+-         }
+-      });
++       filter = new AddVCloudAuthorizationAndCookieToRequest(new Supplier<String>() {
++           public String get() {
++               return "token";
++           }
++       }, "1.0");
+    }
+ 
+    @Test
+    public void testApply() {
+       HttpRequest request = HttpRequest.builder().method("GET").endpoint("http://localhost").build();
+       request = filter.filter(request);
+-      assertEquals(request.getHeaders().size(), 2);
++      assertEquals(request.getHeaders().size(), 3);
+       assertEquals(request.getFirstHeaderOrNull(HttpHeaders.COOKIE), "vcloud-token=token");
+       assertEquals(request.getFirstHeaderOrNull("x-vcloud-authorization"), "token");
+    }
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/test/java/org/jclouds/vcloud/internal/VCloudLoginApiTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/VCloudLoginApiTest.java
+index c2896dc..b97cdf0 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/test/java/org/jclouds/vcloud/internal/VCloudLoginApiTest.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/internal/VCloudLoginApiTest.java
+@@ -31,6 +31,7 @@ import org.jclouds.rest.internal.BaseRestAnnotationProcessingTest;
+ import org.jclouds.rest.internal.GeneratedHttpRequest;
+ import org.jclouds.vcloud.endpoints.VCloudLogin;
+ import org.jclouds.vcloud.functions.ParseLoginResponseFromHeaders;
++import org.jclouds.vcloud.http.filters.VCloudBasicAuthentication;
+ import org.testng.annotations.Test;
+ 
+ import com.google.common.base.Supplier;
+@@ -52,7 +53,7 @@ public class VCloudLoginApiTest extends BaseRestAnnotationProcessingTest<VCloudL
+       GeneratedHttpRequest request = processor.createRequest(method, ImmutableList.of());
+ 
+       assertEquals(request.getRequestLine(), "POST http://localhost:8080/login HTTP/1.1");
+-      assertNonPayloadHeadersEqual(request, HttpHeaders.ACCEPT + ": application/vnd.vmware.vcloud.orgList+xml\n");
++      assertNonPayloadHeadersEqual(request, HttpHeaders.ACCEPT + ": application/vnd.vmware.vcloud.orgList+xml\n" + HttpHeaders.ACCEPT + ": application/vnd.vmware.vcloud.session+xml\n");
+       assertPayloadEquals(request, null, null, false);
+ 
+       assertResponseParserClassEquals(method, request, ParseLoginResponseFromHeaders.class);
+@@ -65,7 +66,7 @@ public class VCloudLoginApiTest extends BaseRestAnnotationProcessingTest<VCloudL
+    @Override
+    protected void checkFilters(HttpRequest request) {
+       assertEquals(request.getFilters().size(), 1);
+-      assertEquals(request.getFilters().get(0).getClass(), BasicAuthentication.class);
++      assertEquals(request.getFilters().get(0).getClass(), VCloudBasicAuthentication.class);
+    }
+ 
+    @Override
+diff --git a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/test/java/org/jclouds/vcloud/xml/ovf/VCloudVirtualHardwareSectionHandlerTest.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/ovf/VCloudVirtualHardwareSectionHandlerTest.java
+index 8e480de..72be94a 100644
+--- a/home/rajkumar/workspace/apache/jclouds/jclouds-jclouds-1.8.1/apis/vcloud/src/test/java/org/jclouds/vcloud/xml/ovf/VCloudVirtualHardwareSectionHandlerTest.java
++++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/test/java/org/jclouds/vcloud/xml/ovf/VCloudVirtualHardwareSectionHandlerTest.java
+@@ -125,7 +125,7 @@ public class VCloudVirtualHardwareSectionHandlerTest extends BaseHandlerTest {
+                                           null,
+                                           "application/vnd.vmware.vcloud.rasdItem+xml",
+                                           URI
+-                                                   .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/vm-2087535248/virtualHardwareSection/cpu")))
++                                                   .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/vm-2087535248/virtualHardwareSection/cpu"),"edit"))
+                         .build().toString());
+ 
+       assertEquals(
+@@ -145,7 +145,7 @@ public class VCloudVirtualHardwareSectionHandlerTest extends BaseHandlerTest {
+                                           null,
+                                           "application/vnd.vmware.vcloud.rasdItem+xml",
+                                           URI
+-                                                   .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/vm-2087535248/virtualHardwareSection/memory")))
++                                                   .create("https://vcenterprise.bluelock.com/api/v1.0/vApp/vm-2087535248/virtualHardwareSection/memory"),"edit"))
+                         .build().toString());
+    }
+ }