You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by me...@apache.org on 2014/03/05 06:57:16 UTC
[15/18] Forking jclouds's vcloud API
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/config/VCloudHttpApiModule.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/config/VCloudHttpApiModule.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/config/VCloudHttpApiModule.java
new file mode 100755
index 0000000..d60d311
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/config/VCloudHttpApiModule.java
@@ -0,0 +1,538 @@
+/*
+ * 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.config;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
+import static com.google.common.base.Predicates.notNull;
+import static com.google.common.collect.Iterables.concat;
+import static com.google.common.collect.Iterables.filter;
+import static com.google.common.collect.Iterables.getLast;
+import static com.google.common.collect.Iterables.transform;
+import static com.google.common.collect.Maps.transformValues;
+import static com.google.common.collect.Maps.uniqueIndex;
+import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL;
+import static org.jclouds.rest.config.BinderUtils.bindHttpApi;
+import static org.jclouds.util.Predicates2.retry;
+import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_DEFAULT_FENCEMODE;
+import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_TIMEOUT_TASK_COMPLETED;
+
+import java.net.URI;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.SortedMap;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.atomic.AtomicReference;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.jclouds.cim.xml.ResourceAllocationSettingDataHandler;
+import org.jclouds.domain.Location;
+import org.jclouds.http.HttpErrorHandler;
+import org.jclouds.http.annotation.ClientError;
+import org.jclouds.http.annotation.Redirection;
+import org.jclouds.http.annotation.ServerError;
+import org.jclouds.location.suppliers.ImplicitLocationSupplier;
+import org.jclouds.location.suppliers.LocationsSupplier;
+import org.jclouds.ovf.Envelope;
+import org.jclouds.rest.AuthorizationException;
+import org.jclouds.rest.ConfiguresHttpApi;
+import org.jclouds.rest.annotations.ApiVersion;
+import org.jclouds.rest.config.HttpApiModule;
+import org.jclouds.rest.suppliers.MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier;
+import org.jclouds.vcloud.VCloudApi;
+import org.jclouds.vcloud.VCloudToken;
+import org.jclouds.vcloud.VCloudVersionsApi;
+import org.jclouds.vcloud.compute.functions.FindLocationForResource;
+import org.jclouds.vcloud.compute.functions.ValidateVAppTemplateAndReturnEnvelopeOrThrowIllegalArgumentException;
+import org.jclouds.vcloud.domain.Catalog;
+import org.jclouds.vcloud.domain.CatalogItem;
+import org.jclouds.vcloud.domain.Org;
+import org.jclouds.vcloud.domain.ReferenceType;
+import org.jclouds.vcloud.domain.VAppTemplate;
+import org.jclouds.vcloud.domain.VCloudSession;
+import org.jclouds.vcloud.domain.VDC;
+import org.jclouds.vcloud.domain.network.FenceMode;
+import org.jclouds.vcloud.endpoints.Network;
+import org.jclouds.vcloud.endpoints.OrgList;
+import org.jclouds.vcloud.functions.CatalogItemsInCatalog;
+import org.jclouds.vcloud.functions.CatalogItemsInOrg;
+import org.jclouds.vcloud.functions.CatalogsInOrg;
+import org.jclouds.vcloud.functions.DefaultNetworkNameInTemplate;
+import org.jclouds.vcloud.functions.OrgsForLocations;
+import org.jclouds.vcloud.functions.OrgsForNames;
+import org.jclouds.vcloud.functions.VAppTemplatesForCatalogItems;
+import org.jclouds.vcloud.functions.VDCsInOrg;
+import org.jclouds.vcloud.handlers.ParseVCloudErrorFromHttpResponse;
+import org.jclouds.vcloud.internal.VCloudLoginApi;
+import org.jclouds.vcloud.loaders.OVFLoader;
+import org.jclouds.vcloud.loaders.VAppTemplateLoader;
+import org.jclouds.vcloud.location.DefaultVDC;
+import org.jclouds.vcloud.location.OrgAndVDCToLocationSupplier;
+import org.jclouds.vcloud.predicates.TaskSuccess;
+import org.jclouds.vcloud.xml.ovf.VCloudResourceAllocationSettingDataHandler;
+
+import com.google.common.base.Function;
+import com.google.common.base.Objects;
+import com.google.common.base.Predicate;
+import com.google.common.base.Supplier;
+import com.google.common.base.Suppliers;
+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.common.collect.ImmutableMap.Builder;
+import com.google.common.collect.Lists;
+import com.google.inject.Injector;
+import com.google.inject.Provides;
+import com.google.inject.Scopes;
+import com.google.inject.TypeLiteral;
+
+/**
+ * Configures the VCloud authentication service connection, including logging and http transport.
+ *
+ * @author Adrian Cole
+ */
+@ConfiguresHttpApi
+public class VCloudHttpApiModule extends HttpApiModule<VCloudApi> {
+
+
+ @Provides
+ @Singleton
+ protected Supplier<VCloudSession> provideVCloudTokenCache(@Named(PROPERTY_SESSION_INTERVAL) long seconds,
+ AtomicReference<AuthorizationException> authException, final VCloudLoginApi login) {
+ return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException,
+ new Supplier<VCloudSession>() {
+
+ @Override
+ public VCloudSession get() {
+ return login.login();
+ }
+
+ @Override
+ public String toString() {
+ return Objects.toStringHelper(login).add("method", "login").toString();
+ }
+ }, seconds, TimeUnit.SECONDS);
+ }
+
+ @Override
+ protected void configure() {
+ super.configure();
+ bind(new TypeLiteral<Function<Iterable<CatalogItem>, Iterable<VAppTemplate>>>() {
+ }).to(new TypeLiteral<VAppTemplatesForCatalogItems>() {
+ });
+ bind(ResourceAllocationSettingDataHandler.class).to(VCloudResourceAllocationSettingDataHandler.class);
+ installDefaultVCloudEndpointsModule();
+ bind(new TypeLiteral<Function<ReferenceType, Location>>() {
+ }).to(new TypeLiteral<FindLocationForResource>() {
+ });
+ bind(new TypeLiteral<Function<Org, Iterable<Catalog>>>() {
+ }).to(new TypeLiteral<CatalogsInOrg>() {
+ });
+ bind(new TypeLiteral<Function<Org, Iterable<VDC>>>() {
+ }).to(new TypeLiteral<VDCsInOrg>() {
+ });
+ bind(new TypeLiteral<Function<Iterable<String>, Iterable<Org>>>() {
+ }).to(new TypeLiteral<OrgsForNames>() {
+ });
+ bind(new TypeLiteral<Function<Iterable<Location>, Iterable<Org>>>() {
+ }).to(new TypeLiteral<OrgsForLocations>() {
+ });
+ bind(new TypeLiteral<Function<Catalog, Iterable<CatalogItem>>>() {
+ }).to(new TypeLiteral<CatalogItemsInCatalog>() {
+ });
+ bind(new TypeLiteral<Function<Org, Iterable<CatalogItem>>>() {
+ }).to(new TypeLiteral<CatalogItemsInOrg>() {
+ });
+
+ bindCacheLoaders();
+
+ bind(new TypeLiteral<Function<VAppTemplate, String>>() {
+ }).annotatedWith(Network.class).to(new TypeLiteral<DefaultNetworkNameInTemplate>() {
+ });
+
+ bind(new TypeLiteral<Function<VAppTemplate, Envelope>>() {
+ }).to(new TypeLiteral<ValidateVAppTemplateAndReturnEnvelopeOrThrowIllegalArgumentException>() {
+ });
+ bindHttpApi(binder(), VCloudApi.class);
+ bindHttpApi(binder(), VCloudVersionsApi.class);
+ bindHttpApi(binder(), VCloudLoginApi.class);
+ }
+
+ protected void bindCacheLoaders() {
+ bind(new TypeLiteral<CacheLoader<URI, VAppTemplate>>() {
+ }).to(new TypeLiteral<VAppTemplateLoader>() {
+ });
+
+ bind(new TypeLiteral<CacheLoader<URI, Envelope>>() {
+ }).to(new TypeLiteral<OVFLoader>() {
+ });
+ }
+
+ @Provides
+ @Singleton
+ @org.jclouds.vcloud.endpoints.VDC
+ protected Supplier<Map<String, String>> provideVDCtoORG(Supplier<Map<String, Org>> orgNameToOrgSupplier) {
+ return Suppliers.compose(new Function<Map<String, Org>, Map<String, String>>() {
+
+ @Override
+ public Map<String, String> apply(Map<String, Org> arg0) {
+ Builder<String, String> returnVal = ImmutableMap.builder();
+ for (Entry<String, Org> orgr : arg0.entrySet()) {
+ for (String vdc : orgr.getValue().getVDCs().keySet()) {
+ returnVal.put(vdc, orgr.getKey());
+ }
+ }
+ return returnVal.build();
+ }
+ }, orgNameToOrgSupplier);
+
+ }
+
+ @Provides
+ @Singleton
+ protected Supplier<Map<String, Org>> provideOrgMapCache(@Named(PROPERTY_SESSION_INTERVAL) long seconds,
+ AtomicReference<AuthorizationException> authException, OrgMapSupplier supplier) {
+ return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
+ TimeUnit.SECONDS);
+ }
+
+ @Provides
+ @Singleton
+ @OrgList
+ protected Supplier<URI> provideOrgListURI(Supplier<VCloudSession> sessionSupplier) {
+ return Suppliers.compose(new Function<VCloudSession, URI>() {
+
+ @Override
+ public URI apply(VCloudSession arg0) {
+ return URI.create(getLast(arg0.getOrgs().values()).getHref().toASCIIString().replaceAll("org/.*", "org"));
+ }
+
+ @Override
+ public String toString() {
+ return "orgListURI()";
+ }
+
+ }, sessionSupplier);
+ }
+
+ @Singleton
+ public static class OrgMapSupplier implements Supplier<Map<String, Org>> {
+ protected final Supplier<VCloudSession> sessionSupplier;
+ protected final Function<Iterable<String>, Iterable<Org>> organizationsForNames;
+
+ @Inject
+ protected OrgMapSupplier(Supplier<VCloudSession> sessionSupplier,
+ Function<Iterable<String>, Iterable<Org>> organizationsForNames) {
+ this.sessionSupplier = sessionSupplier;
+ this.organizationsForNames = organizationsForNames;
+ }
+
+ @Override
+ public Map<String, Org> get() {
+ return uniqueIndex(organizationsForNames.apply(sessionSupplier.get().getOrgs().keySet()), name);
+ }
+ }
+
+ protected void installDefaultVCloudEndpointsModule() {
+ install(new DefaultVCloudReferencesModule());
+ }
+
+ @Singleton
+ public static class OrgCatalogSupplier implements
+ Supplier<Map<String, Map<String, Catalog>>> {
+ protected final Supplier<Map<String, Org>> orgSupplier;
+ protected final Function<Org, Iterable<Catalog>> allCatalogsInOrg;
+
+ @Inject
+ protected OrgCatalogSupplier(Supplier<Map<String, Org>> orgSupplier,
+ Function<Org, Iterable<Catalog>> allCatalogsInOrg) {
+ this.orgSupplier = orgSupplier;
+ this.allCatalogsInOrg = allCatalogsInOrg;
+ }
+
+ @Override
+ public Map<String, Map<String, Catalog>> get() {
+ return transformValues(transformValues(orgSupplier.get(), allCatalogsInOrg),
+ new Function<Iterable<? extends Catalog>, Map<String, Catalog>>() {
+
+ @Override
+ public Map<String, Catalog> apply(Iterable<? extends Catalog> from) {
+ return ImmutableMap.copyOf(uniqueIndex(from, name));
+ }
+
+ });
+ }
+ }
+
+ @VCloudToken
+ @Provides
+ @Singleton
+ Supplier<String> provideVCloudToken(Supplier<VCloudSession> cache) {
+ return Suppliers.compose(new Function<VCloudSession, String>() {
+
+ @Override
+ public String apply(VCloudSession input) {
+ return checkNotNull(input.getVCloudToken(), "No token present in session");
+ }
+ }, cache);
+ }
+
+ @Provides
+ @org.jclouds.vcloud.endpoints.Org
+ @Singleton
+ protected Supplier<Map<String, ReferenceType>> provideVDCtoORG(@Named(PROPERTY_SESSION_INTERVAL) long seconds,
+ AtomicReference<AuthorizationException> authException, OrgNameToOrgSupplier supplier) {
+ return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
+ TimeUnit.SECONDS);
+ }
+
+ @Provides
+ @Singleton
+ protected Supplier<Map<URI, VDC>> provideURIToVDC(
+ @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
+ URItoVDC supplier) {
+ return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
+ TimeUnit.SECONDS);
+ }
+
+ @Singleton
+ public static class URItoVDC implements Supplier<Map<URI, VDC>> {
+ private final Supplier<Map<String, Map<String, VDC>>> orgVDCMap;
+
+ @Inject
+ URItoVDC(Supplier<Map<String, Map<String, VDC>>> orgVDCMap) {
+ this.orgVDCMap = orgVDCMap;
+ }
+
+ @Override
+ public Map<URI, VDC> get() {
+ return uniqueIndex(concat(transform(orgVDCMap.get().values(),
+ new Function<Map<String, VDC>, Iterable<VDC>>() {
+
+ @Override
+ public Iterable<VDC> apply(
+ Map<String, VDC> from) {
+ return from.values();
+ }
+
+ })), new Function<VDC, URI>() {
+
+ @Override
+ public URI apply(VDC from) {
+ return from.getHref();
+ }
+
+ });
+ }
+
+ }
+
+ static final Function<ReferenceType, String> name = new Function<ReferenceType, String>() {
+
+ @Override
+ public String apply(ReferenceType from) {
+ return from.getName();
+ }
+
+ };
+
+ @Provides
+ @Singleton
+ @org.jclouds.vcloud.endpoints.VCloudLogin
+ protected Supplier<URI> provideAuthenticationURI(final VCloudVersionsApi versionService,
+ @ApiVersion final String version) {
+ return new Supplier<URI>() {
+
+ @Override
+ public URI get() {
+ SortedMap<String, URI> versions = versionService.getSupportedVersions();
+ checkState(versions.size() > 0, "No versions present");
+ checkState(versions.containsKey(version), "version " + version + " not present in: " + versions);
+ return versions.get(version);
+ }
+
+ public String toString() {
+ return "login()";
+ }
+ };
+ }
+
+ @Singleton
+ private static class OrgNameToOrgSupplier implements Supplier<Map<String, ReferenceType>> {
+ private final Supplier<VCloudSession> sessionSupplier;
+
+ @Inject
+ OrgNameToOrgSupplier(Supplier<VCloudSession> sessionSupplier) {
+ this.sessionSupplier = sessionSupplier;
+ }
+
+ @Override
+ public Map<String, ReferenceType> get() {
+ return sessionSupplier.get().getOrgs();
+ }
+
+ }
+
+ @Provides
+ @Singleton
+ protected Supplier<Org> provideOrg(final Supplier<Map<String, Org>> orgSupplier,
+ @org.jclouds.vcloud.endpoints.Org Supplier<ReferenceType> defaultOrg) {
+ return Suppliers.compose(new Function<ReferenceType, Org>() {
+
+ @Override
+ public Org apply(ReferenceType input) {
+ return orgSupplier.get().get(input.getName());
+
+ }
+ }, defaultOrg);
+ }
+
+ @Provides
+ @Singleton
+ protected Predicate<URI> successTester(Injector injector,
+ @Named(PROPERTY_VCLOUD_TIMEOUT_TASK_COMPLETED) long completed) {
+ return retry(injector.getInstance(TaskSuccess.class), completed);
+ }
+
+ @Provides
+ @Singleton
+ protected Supplier<Map<String, Map<String, Catalog>>> provideOrgCatalogItemMapSupplierCache(
+ @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
+ OrgCatalogSupplier supplier) {
+ return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
+ TimeUnit.SECONDS);
+ }
+
+ @Provides
+ @Singleton
+ protected Supplier<Map<String, Map<String, VDC>>> provideOrgVDCSupplierCache(
+ @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
+ OrgVDCSupplier supplier) {
+ return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
+ TimeUnit.SECONDS);
+ }
+
+ @Singleton
+ public static class OrgVDCSupplier implements Supplier<Map<String, Map<String, VDC>>> {
+ protected final Supplier<Map<String, Org>> orgSupplier;
+ private final Function<Org, Iterable<VDC>> allVDCsInOrg;
+
+ @Inject
+ protected OrgVDCSupplier(Supplier<Map<String, Org>> orgSupplier,
+ Function<Org, Iterable<VDC>> allVDCsInOrg) {
+ this.orgSupplier = orgSupplier;
+ this.allVDCsInOrg = allVDCsInOrg;
+ }
+
+ @Override
+ public Map<String, Map<String, VDC>> get() {
+ return transformValues(transformValues(orgSupplier.get(), allVDCsInOrg),
+ new Function<Iterable<? extends VDC>, Map<String, VDC>>() {
+
+ @Override
+ public Map<String, VDC> apply(
+ Iterable<? extends VDC> from) {
+ return uniqueIndex(Lists.newArrayList(from), name);
+ }
+
+ });
+ }
+ }
+
+ @Singleton
+ public static class OrgCatalogItemSupplier implements
+ Supplier<Map<String, Map<String, Map<String, CatalogItem>>>> {
+ protected final Supplier<Map<String, Map<String, Catalog>>> catalogSupplier;
+ protected final Function<Catalog, Iterable<CatalogItem>> allCatalogItemsInCatalog;
+
+ @Inject
+ protected OrgCatalogItemSupplier(
+ Supplier<Map<String, Map<String, Catalog>>> catalogSupplier,
+ Function<Catalog, Iterable<CatalogItem>> allCatalogItemsInCatalog) {
+ this.catalogSupplier = catalogSupplier;
+ this.allCatalogItemsInCatalog = allCatalogItemsInCatalog;
+ }
+
+ @Override
+ public Map<String, Map<String, Map<String, CatalogItem>>> get() {
+ return transformValues(
+ catalogSupplier.get(),
+ new Function<Map<String, Catalog>, Map<String, Map<String, CatalogItem>>>() {
+
+ @Override
+ public Map<String, Map<String, CatalogItem>> apply(
+ Map<String, Catalog> from) {
+ return transformValues(
+ from,
+ new Function<Catalog, Map<String, CatalogItem>>() {
+
+ @Override
+ public Map<String, CatalogItem> apply(Catalog from) {
+ return uniqueIndex(filter(allCatalogItemsInCatalog.apply(from), notNull()), name);
+ }
+ });
+
+ }
+ });
+ }
+ }
+
+ @Provides
+ @Singleton
+ protected Supplier<Map<String, Map<String, Map<String, CatalogItem>>>> provideOrgCatalogItemSupplierCache(
+ @Named(PROPERTY_SESSION_INTERVAL) long seconds, AtomicReference<AuthorizationException> authException,
+ OrgCatalogItemSupplier supplier) {
+ return MemoizedRetryOnTimeOutButNotOnAuthorizationExceptionSupplier.create(authException, supplier, seconds,
+ TimeUnit.SECONDS);
+ }
+
+ @Provides
+ @Singleton
+ protected FenceMode defaultFenceMode(@Named(PROPERTY_VCLOUD_DEFAULT_FENCEMODE) String fenceMode) {
+ return FenceMode.fromValue(fenceMode);
+ }
+
+ @Provides
+ @Singleton
+ protected LoadingCache<URI, VAppTemplate> vAppTemplates(CacheLoader<URI, VAppTemplate> vAppTemplates) {
+ return CacheBuilder.newBuilder().build(vAppTemplates);
+ }
+
+ @Provides
+ @Singleton
+ protected LoadingCache<URI, Envelope> envelopes(CacheLoader<URI, Envelope> envelopes) {
+ return CacheBuilder.newBuilder().build(envelopes);
+ }
+
+ @Override
+ protected void bindErrorHandlers() {
+ bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(ParseVCloudErrorFromHttpResponse.class);
+ bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(ParseVCloudErrorFromHttpResponse.class);
+ bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(ParseVCloudErrorFromHttpResponse.class);
+ }
+
+ @Override
+ protected void installLocations() {
+ super.installLocations();
+ bind(ImplicitLocationSupplier.class).to(DefaultVDC.class).in(Scopes.SINGLETON);
+ bind(LocationsSupplier.class).to(OrgAndVDCToLocationSupplier.class).in(Scopes.SINGLETON);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/AllocationModel.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/AllocationModel.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/AllocationModel.java
new file mode 100755
index 0000000..aadb475
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/AllocationModel.java
@@ -0,0 +1,70 @@
+/*
+ * 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.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import com.google.common.base.CaseFormat;
+
+/**
+ * The AllocationModel element defines how resources are allocated in a vDC.
+ */
+public enum AllocationModel {
+ /**
+ * Resources are committed to a vDC only when vApps are created in it
+ */
+ ALLOCATION_VAPP,
+ /**
+ * Only a percentage of the resources you allocate are committed to the organization vDC.
+ */
+ ALLOCATION_POOL,
+ /**
+ * All the resources you allocate are committed as a pool to the organization vDC. vApps in vDCs
+ * that support this allocation model can specify values for resource and limit.
+ */
+ RESERVATION_POOL,
+ /**
+ * The VCloud API returned a model unsupported in the version 1.0 spec.
+ */
+ UNRECOGNIZED;
+
+ public String value() {
+ switch (this) {
+ case ALLOCATION_VAPP:
+ return "AllocationVApp";
+ case ALLOCATION_POOL:
+ return "AllocationPool";
+ case RESERVATION_POOL:
+ return "ReservationPool";
+ default:
+ return "UnrecognizedModel";
+ }
+ }
+
+ @Override
+ public String toString() {
+ return value();
+ }
+
+ public static AllocationModel fromValue(String model) {
+ try {
+ return valueOf(CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, checkNotNull(model, "model")));
+ } catch (IllegalArgumentException e) {
+ return UNRECOGNIZED;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Capacity.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Capacity.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Capacity.java
new file mode 100755
index 0000000..076b93b
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Capacity.java
@@ -0,0 +1,108 @@
+/*
+ * 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.domain;
+
+/**
+ * reports storage resource consumption in a vDC.
+ *
+ * @author Adrian Cole
+ */
+public class Capacity {
+
+ private final String units;
+ private final long allocated;
+ private final long limit;
+ private final int used;
+ private final long overhead;
+
+ public Capacity(String units, long allocated, long limit, int used, long overhead) {
+ this.units = units;
+ this.limit = limit;
+ this.allocated = allocated;
+ this.used = used;
+ this.overhead = overhead;
+ }
+
+ public String getUnits() {
+ return units;
+ }
+
+ public long getAllocated() {
+ return allocated;
+ }
+
+ public long getLimit() {
+ return limit;
+ }
+
+ /**
+ * percentage of the allocation in use.
+ */
+ public int getUsed() {
+ return used;
+ }
+
+ /**
+ * number of Units allocated to vShield Manager virtual machines provisioned from this vDC.
+ */
+ public long getOverhead() {
+ return overhead;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (int) (allocated ^ (allocated >>> 32));
+ result = prime * result + (int) (limit ^ (limit >>> 32));
+ result = prime * result + (int) (overhead ^ (overhead >>> 32));
+ result = prime * result + ((units == null) ? 0 : units.hashCode());
+ result = prime * result + used;
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ Capacity other = (Capacity) obj;
+ if (allocated != other.allocated)
+ return false;
+ if (limit != other.limit)
+ return false;
+ if (overhead != other.overhead)
+ return false;
+ if (units == null) {
+ if (other.units != null)
+ return false;
+ } else if (!units.equals(other.units))
+ return false;
+ if (used != other.used)
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "[allocated=" + allocated + ", limit=" + limit + ", overhead=" + overhead + ", units=" + units + ", used="
+ + used + "]";
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Catalog.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Catalog.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Catalog.java
new file mode 100755
index 0000000..a9d98bd
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Catalog.java
@@ -0,0 +1,69 @@
+/*
+ * 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.domain;
+
+import java.util.List;
+import java.util.Map;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.internal.CatalogImpl;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * @author Adrian Cole
+ */
+@org.jclouds.vcloud.endpoints.Catalog
+@ImplementedBy(CatalogImpl.class)
+public interface Catalog extends ReferenceType, Map<String, ReferenceType> {
+ /**
+ * Reference to the org containing this vDC.
+ *
+ * @since vcloud api 1.0
+ * @return org, or null if this is a version before 1.0 where the org isn't present
+ */
+ ReferenceType getOrg();
+
+ /**
+ * optional description
+ *
+ * @since vcloud api 0.8
+ */
+ @Nullable
+ String getDescription();
+
+ /**
+ * read‐only element, true if the catalog is published
+ *
+ * @since vcloud api 1.0
+ */
+ boolean isPublished();
+
+ /**
+ * @return true, if the current user cannot modify the catalog
+ * @since vcloud api 1.0
+ */
+ boolean isReadOnly();
+
+ /**
+ * read‐only container for Task elements. Each element in the container represents a queued,
+ * running, or failed task owned by this object.
+ *
+ * @since vcloud api 1.0
+ */
+ List<Task> getTasks();
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/CatalogItem.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/CatalogItem.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/CatalogItem.java
new file mode 100755
index 0000000..caad3b3
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/CatalogItem.java
@@ -0,0 +1,37 @@
+/*
+ * 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.domain;
+
+import java.util.Map;
+
+import org.jclouds.vcloud.domain.internal.CatalogItemImpl;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * @author Adrian Cole
+ */
+@ImplementedBy(CatalogItemImpl.class)
+public interface CatalogItem extends ReferenceType {
+
+ String getDescription();
+
+ ReferenceType getEntity();
+
+ Map<String, String> getProperties();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/GuestCustomizationSection.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/GuestCustomizationSection.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/GuestCustomizationSection.java
new file mode 100755
index 0000000..b72c8ca
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/GuestCustomizationSection.java
@@ -0,0 +1,440 @@
+/*
+ * 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.domain;
+
+import java.net.URI;
+
+import org.jclouds.vcloud.VCloudMediaType;
+
+/**
+ * The GuestCustomization of a Vm contains customization parameters for the guest operating system
+ * of the virtual machine.
+ */
+public class GuestCustomizationSection {
+ protected final String type;
+ protected final URI href;
+ protected String info;
+ protected Boolean enabled;
+ protected Boolean changeSid;
+ protected String virtualMachineId;
+ protected Boolean joinDomainEnabled;
+ protected Boolean useOrgSettings;
+ protected String domainName;
+ protected String domainUserName;
+ protected String domainUserPassword;
+ protected Boolean adminPasswordEnabled;
+ protected Boolean adminPasswordAuto;
+ protected String adminPassword;
+ protected Boolean resetPasswordRequired;
+ protected String customizationScript;
+ protected String computerName;
+ protected final ReferenceType edit;
+
+ public GuestCustomizationSection(URI href) {
+ this.href = href;
+ this.type = VCloudMediaType.GUESTCUSTOMIZATIONSECTION_XML;
+ this.info = "Specifies Guest OS Customization Settings";
+ this.edit = null;
+ }
+
+ public GuestCustomizationSection(String type, URI href, String info, Boolean enabled, Boolean changeSid,
+ String virtualMachineId, Boolean joinDomainEnabled, Boolean useOrgSettings, String domainName,
+ String domainUserName, String domainUserPassword, Boolean adminPasswordEnabled, Boolean adminPasswordAuto,
+ String adminPassword, Boolean resetPasswordRequired, String customizationScript, String computerName,
+ ReferenceType edit) {
+ this.type = type;
+ this.href = href;
+ this.info = info;
+ this.enabled = enabled;
+ this.changeSid = changeSid;
+ this.virtualMachineId = virtualMachineId;
+ this.joinDomainEnabled = joinDomainEnabled;
+ this.useOrgSettings = useOrgSettings;
+ this.domainName = domainName;
+ this.domainUserName = domainUserName;
+ this.domainUserPassword = domainUserPassword;
+ this.adminPasswordEnabled = adminPasswordEnabled;
+ this.adminPasswordAuto = adminPasswordAuto;
+ this.adminPassword = adminPassword;
+ this.resetPasswordRequired = resetPasswordRequired;
+ this.customizationScript = customizationScript;
+ this.computerName = computerName;
+ this.edit = edit;
+ }
+
+ /**
+ *
+ * @return media type of this section
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ *
+ * @return URL to access this section
+ */
+ public URI getHref() {
+ return href;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String getInfo() {
+ return info;
+ }
+
+ /**
+ *
+ * @return if true, to enable guest customization at power on
+ */
+ public Boolean isEnabled() {
+ return enabled;
+ }
+
+ /**
+ *
+ * @return if true, customization will run sysprep to change the Windows SID for this virtual
+ * machine
+ */
+ public Boolean shouldChangeSid() {
+ return changeSid;
+ }
+
+ /**
+ *
+ * @return unique identifier for this virtual machine
+ */
+ public String getVirtualMachineId() {
+ return virtualMachineId;
+ }
+
+ /**
+ *
+ * @return if true, this virtual machine can join a Windows domain
+ */
+ public Boolean isJoinDomainEnabled() {
+ return joinDomainEnabled;
+ }
+
+ /**
+ *
+ * @return if true, this virtual machine uses the containing organization’s default values for
+ * Windows domain name, domain user name, and domain user password
+ */
+ public Boolean useOrgSettings() {
+ return useOrgSettings;
+ }
+
+ /**
+ *
+ * @return if UseOrgSettings is false, specifies the Windows domain to join
+ */
+ public String getDomainName() {
+ return domainName;
+ }
+
+ /**
+ *
+ * @return if UseOrgSettings is false, specifies the Windows domain user name
+ */
+ public String getDomainUserName() {
+ return domainUserName;
+ }
+
+ /**
+ *
+ * @return if UseOrgSettings is false, specifies the Windows domain user’s password
+ */
+ public String getDomainUserPassword() {
+ return domainUserPassword;
+ }
+
+ /**
+ *
+ * @return true if the guest OS allows use of a local administrator password
+ */
+ public Boolean isAdminPasswordEnabled() {
+ return adminPasswordEnabled;
+ }
+
+ /**
+ *
+ * @return true if the local administrator password should be automatically generated
+ */
+ public Boolean isAdminPasswordAuto() {
+ return adminPasswordAuto;
+ }
+
+ /**
+ *
+ * @return local administrator password for this virtual machine
+ */
+ public String getAdminPassword() {
+ return adminPassword;
+ }
+
+ /**
+ *
+ * @return if true, the local administrator must reset his password on first use
+ */
+ public Boolean isResetPasswordRequired() {
+ return resetPasswordRequired;
+ }
+
+ /**
+ *
+ * @return the customization script to run
+ */
+ public String getCustomizationScript() {
+ return customizationScript;
+ }
+
+ /**
+ *
+ * @return name of this virtual machine in DNS or Windows domain
+ */
+ public String getComputerName() {
+ return computerName;
+ }
+
+ /**
+ *
+ * @return edit link
+ */
+ public ReferenceType getEdit() {
+ return edit;
+ }
+
+ @Override
+ public String toString() {
+ return "[href=" + getHref() + ", type=" + getType() + ", info=" + getInfo() + ", enabled=" + isEnabled() + "]";
+ }
+
+ @Override
+ public int hashCode() {
+ int prime = 31;
+ int result = 1;
+ result = prime * result + ((adminPassword == null) ? 0 : adminPassword.hashCode());
+ result = prime * result + ((adminPasswordAuto == null) ? 0 : adminPasswordAuto.hashCode());
+ result = prime * result + ((adminPasswordEnabled == null) ? 0 : adminPasswordEnabled.hashCode());
+ result = prime * result + ((changeSid == null) ? 0 : changeSid.hashCode());
+ result = prime * result + ((computerName == null) ? 0 : computerName.hashCode());
+ result = prime * result + ((customizationScript == null) ? 0 : customizationScript.hashCode());
+ result = prime * result + ((domainName == null) ? 0 : domainName.hashCode());
+ result = prime * result + ((domainUserName == null) ? 0 : domainUserName.hashCode());
+ result = prime * result + ((domainUserPassword == null) ? 0 : domainUserPassword.hashCode());
+ result = prime * result + ((edit == null) ? 0 : edit.hashCode());
+ result = prime * result + ((enabled == null) ? 0 : enabled.hashCode());
+ result = prime * result + ((href == null) ? 0 : href.hashCode());
+ result = prime * result + ((info == null) ? 0 : info.hashCode());
+ result = prime * result + ((joinDomainEnabled == null) ? 0 : joinDomainEnabled.hashCode());
+ result = prime * result + ((resetPasswordRequired == null) ? 0 : resetPasswordRequired.hashCode());
+ result = prime * result + ((type == null) ? 0 : type.hashCode());
+ result = prime * result + ((useOrgSettings == null) ? 0 : useOrgSettings.hashCode());
+ result = prime * result + ((virtualMachineId == null) ? 0 : virtualMachineId.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ GuestCustomizationSection other = (GuestCustomizationSection) obj;
+ if (adminPassword == null) {
+ if (other.adminPassword != null)
+ return false;
+ } else if (!adminPassword.equals(other.adminPassword))
+ return false;
+ if (adminPasswordAuto == null) {
+ if (other.adminPasswordAuto != null)
+ return false;
+ } else if (!adminPasswordAuto.equals(other.adminPasswordAuto))
+ return false;
+ if (adminPasswordEnabled == null) {
+ if (other.adminPasswordEnabled != null)
+ return false;
+ } else if (!adminPasswordEnabled.equals(other.adminPasswordEnabled))
+ return false;
+ if (changeSid == null) {
+ if (other.changeSid != null)
+ return false;
+ } else if (!changeSid.equals(other.changeSid))
+ return false;
+ if (computerName == null) {
+ if (other.computerName != null)
+ return false;
+ } else if (!computerName.equals(other.computerName))
+ return false;
+ if (customizationScript == null) {
+ if (other.customizationScript != null)
+ return false;
+ } else if (!customizationScript.equals(other.customizationScript))
+ return false;
+ if (domainName == null) {
+ if (other.domainName != null)
+ return false;
+ } else if (!domainName.equals(other.domainName))
+ return false;
+ if (domainUserName == null) {
+ if (other.domainUserName != null)
+ return false;
+ } else if (!domainUserName.equals(other.domainUserName))
+ return false;
+ if (domainUserPassword == null) {
+ if (other.domainUserPassword != null)
+ return false;
+ } else if (!domainUserPassword.equals(other.domainUserPassword))
+ return false;
+ if (edit == null) {
+ if (other.edit != null)
+ return false;
+ } else if (!edit.equals(other.edit))
+ return false;
+ if (enabled == null) {
+ if (other.enabled != null)
+ return false;
+ } else if (!enabled.equals(other.enabled))
+ return false;
+ if (href == null) {
+ if (other.href != null)
+ return false;
+ } else if (!href.equals(other.href))
+ return false;
+ if (info == null) {
+ if (other.info != null)
+ return false;
+ } else if (!info.equals(other.info))
+ return false;
+ if (joinDomainEnabled == null) {
+ if (other.joinDomainEnabled != null)
+ return false;
+ } else if (!joinDomainEnabled.equals(other.joinDomainEnabled))
+ return false;
+ if (resetPasswordRequired == null) {
+ if (other.resetPasswordRequired != null)
+ return false;
+ } else if (!resetPasswordRequired.equals(other.resetPasswordRequired))
+ return false;
+ if (type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!type.equals(other.type))
+ return false;
+ if (useOrgSettings == null) {
+ if (other.useOrgSettings != null)
+ return false;
+ } else if (!useOrgSettings.equals(other.useOrgSettings))
+ return false;
+ if (virtualMachineId == null) {
+ if (other.virtualMachineId != null)
+ return false;
+ } else if (!virtualMachineId.equals(other.virtualMachineId))
+ return false;
+ return true;
+ }
+
+ public void setEnabled(Boolean enabled) {
+ this.enabled = enabled;
+ }
+
+ public Boolean getChangeSid() {
+ return changeSid;
+ }
+
+ public void setChangeSid(Boolean changeSid) {
+ this.changeSid = changeSid;
+ }
+
+ public Boolean getJoinDomainEnabled() {
+ return joinDomainEnabled;
+ }
+
+ public void setJoinDomainEnabled(Boolean joinDomainEnabled) {
+ this.joinDomainEnabled = joinDomainEnabled;
+ }
+
+ public Boolean shouldUseOrgSettings() {
+ return useOrgSettings;
+ }
+
+ public void setUseOrgSettings(Boolean useOrgSettings) {
+ this.useOrgSettings = useOrgSettings;
+ }
+
+ public Boolean getAdminPasswordEnabled() {
+ return adminPasswordEnabled;
+ }
+
+ public void setAdminPasswordEnabled(Boolean adminPasswordEnabled) {
+ this.adminPasswordEnabled = adminPasswordEnabled;
+ }
+
+ public Boolean getAdminPasswordAuto() {
+ return adminPasswordAuto;
+ }
+
+ public void setAdminPasswordAuto(Boolean adminPasswordAuto) {
+ this.adminPasswordAuto = adminPasswordAuto;
+ }
+
+ public Boolean getResetPasswordRequired() {
+ return resetPasswordRequired;
+ }
+
+ public void setResetPasswordRequired(Boolean resetPasswordRequired) {
+ this.resetPasswordRequired = resetPasswordRequired;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public void setVirtualMachineId(String virtualMachineId) {
+ this.virtualMachineId = virtualMachineId;
+ }
+
+ public void setDomainName(String domainName) {
+ this.domainName = domainName;
+ }
+
+ public void setDomainUserName(String domainUserName) {
+ this.domainUserName = domainUserName;
+ }
+
+ public void setDomainUserPassword(String domainUserPassword) {
+ this.domainUserPassword = domainUserPassword;
+ }
+
+ public void setAdminPassword(String adminPassword) {
+ this.adminPassword = adminPassword;
+ }
+
+ public void setCustomizationScript(String customizationScript) {
+ this.customizationScript = customizationScript;
+ }
+
+ public void setComputerName(String computerName) {
+ this.computerName = computerName;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/InstantiateVAppTemplateParams.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/InstantiateVAppTemplateParams.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/InstantiateVAppTemplateParams.java
new file mode 100755
index 0000000..4b024df
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/InstantiateVAppTemplateParams.java
@@ -0,0 +1,96 @@
+/*
+ * 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.domain;
+
+import java.util.Set;
+
+import org.jclouds.cim.ResourceAllocationSettingData;
+import org.jclouds.cim.VirtualSystemSettingData;
+
+import com.google.common.collect.Iterables;
+import com.google.common.collect.Sets;
+
+/**
+ * The InstantiateVAppTemplateParams element forms the body of an instantiateVappTemplate request.
+ */
+public class InstantiateVAppTemplateParams {
+
+ protected final String info;
+ protected final VirtualSystemSettingData virtualSystem;
+ protected final Set<ResourceAllocationSettingData> resourceAllocations = Sets.newLinkedHashSet();
+
+ public InstantiateVAppTemplateParams(String info, VirtualSystemSettingData virtualSystem, Iterable<ResourceAllocationSettingData> resourceAllocations) {
+ this.info = info;
+ this.virtualSystem = virtualSystem;
+ Iterables.addAll(this.resourceAllocations, resourceAllocations);
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public VirtualSystemSettingData getSystem() {
+ return virtualSystem;
+ }
+
+ public Set<ResourceAllocationSettingData> getResourceAllocationSettingDatas() {
+ return resourceAllocations;
+ }
+
+ @Override
+ public String toString() {
+ return "[info=" + getInfo() + ", virtualSystem=" + getSystem() + "]";
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((info == null) ? 0 : info.hashCode());
+ result = prime * result + ((resourceAllocations == null) ? 0 : resourceAllocations.hashCode());
+ result = prime * result + ((virtualSystem == null) ? 0 : virtualSystem.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ InstantiateVAppTemplateParams other = (InstantiateVAppTemplateParams) obj;
+ if (info == null) {
+ if (other.info != null)
+ return false;
+ } else if (!info.equals(other.info))
+ return false;
+ if (resourceAllocations == null) {
+ if (other.resourceAllocations != null)
+ return false;
+ } else if (!resourceAllocations.equals(other.resourceAllocations))
+ return false;
+ if (virtualSystem == null) {
+ if (other.virtualSystem != null)
+ return false;
+ } else if (!virtualSystem.equals(other.virtualSystem))
+ return false;
+ return true;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/NetworkConnection.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/NetworkConnection.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/NetworkConnection.java
new file mode 100755
index 0000000..fed82dc
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/NetworkConnection.java
@@ -0,0 +1,233 @@
+/*
+ * 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.domain;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.network.IpAddressAllocationMode;
+
+/**
+ * describes a single network connection.
+ *
+ * @author Adrian Cole
+ */
+public class NetworkConnection {
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public static class Builder {
+
+ private String network;
+ private int networkConnectionIndex;
+ private String ipAddress;
+ private String externalIpAddress;
+ private boolean connected;
+ private String MACAddress;
+ private IpAddressAllocationMode ipAddressAllocationMode;
+
+ public Builder network(String network) {
+ this.network = network;
+ return this;
+ }
+
+ public Builder networkConnectionIndex(int networkConnectionIndex) {
+ this.networkConnectionIndex = networkConnectionIndex;
+ return this;
+ }
+
+ public Builder ipAddress(String ipAddress) {
+ this.ipAddress = ipAddress;
+ return this;
+ }
+
+ public Builder externalIpAddress(String externalIpAddress) {
+ this.externalIpAddress = externalIpAddress;
+ return this;
+ }
+
+ public Builder connected(boolean connected) {
+ this.connected = connected;
+ return this;
+ }
+
+ public Builder MACAddress(String MACAddress) {
+ this.MACAddress = MACAddress;
+ return this;
+ }
+
+ public Builder ipAddressAllocationMode(IpAddressAllocationMode ipAddressAllocationMode) {
+ this.ipAddressAllocationMode = ipAddressAllocationMode;
+ return this;
+ }
+
+ public NetworkConnection build() {
+ return new NetworkConnection(network, networkConnectionIndex, ipAddress, externalIpAddress, connected,
+ MACAddress, ipAddressAllocationMode);
+ }
+
+ public static Builder fromNetworkConnection(NetworkConnection in) {
+ return new Builder().network(in.getNetwork()).networkConnectionIndex(in.getNetworkConnectionIndex())
+ .ipAddress(in.getIpAddress()).externalIpAddress(in.getExternalIpAddress()).connected(in.isConnected())
+ .MACAddress(in.getMACAddress()).ipAddressAllocationMode(in.getIpAddressAllocationMode());
+ }
+ }
+
+ private final String network;
+ private final int networkConnectionIndex;
+ @Nullable
+ private final String ipAddress;
+ @Nullable
+ private final String externalIpAddress;
+ private final boolean connected;
+ @Nullable
+ private final String MACAddress;
+ private final IpAddressAllocationMode ipAddressAllocationMode;
+
+ public NetworkConnection(String network, int networkConnectionIndex, @Nullable String ipAddress,
+ @Nullable String externalIpAddress, boolean connected, @Nullable String MACAddress,
+ IpAddressAllocationMode ipAddressAllocationMode) {
+ this.network = network;
+ this.networkConnectionIndex = networkConnectionIndex;
+ this.ipAddress = ipAddress;
+ this.externalIpAddress = externalIpAddress;
+ this.connected = connected;
+ this.MACAddress = MACAddress;
+ this.ipAddressAllocationMode = ipAddressAllocationMode;
+ }
+
+ /**
+ * @return The name of the network to which this connection connects.
+ */
+ public String getNetwork() {
+ return network;
+ }
+
+ /**
+ * @return The value in the rasd:AddressOnParent element of the device supporting this
+ * connection.
+ */
+ public int getNetworkConnectionIndex() {
+ return networkConnectionIndex;
+ }
+
+ /**
+ * @return IP address of this connection
+ */
+ @Nullable
+ public String getIpAddress() {
+ return ipAddress;
+ }
+
+ /**
+ * @return If the network that the NIC is connected to has NAT or port mapping, the external
+ * address is populated in this element.
+ */
+ @Nullable
+ public String getExternalIpAddress() {
+ return externalIpAddress;
+ }
+
+ /**
+ * @return If the vApp is deployed, specifies the current state of its connection. If the vApp is
+ * undeployed, specifies whether this connection should be connected at deployment time.
+ */
+ public boolean isConnected() {
+ return connected;
+ }
+
+ /**
+ * @return MAC address of this connection
+ */
+ @Nullable
+ public String getMACAddress() {
+ return MACAddress;
+ }
+
+ /**
+ * @return specifies how an IP address is allocated to this connection
+ */
+ public IpAddressAllocationMode getIpAddressAllocationMode() {
+ return ipAddressAllocationMode;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((MACAddress == null) ? 0 : MACAddress.hashCode());
+ result = prime * result + (connected ? 1231 : 1237);
+ result = prime * result + ((externalIpAddress == null) ? 0 : externalIpAddress.hashCode());
+ result = prime * result + ((ipAddress == null) ? 0 : ipAddress.hashCode());
+ result = prime * result + ((ipAddressAllocationMode == null) ? 0 : ipAddressAllocationMode.hashCode());
+ result = prime * result + ((network == null) ? 0 : network.hashCode());
+ result = prime * result + networkConnectionIndex;
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ NetworkConnection other = (NetworkConnection) obj;
+ if (MACAddress == null) {
+ if (other.MACAddress != null)
+ return false;
+ } else if (!MACAddress.equals(other.MACAddress))
+ return false;
+ if (connected != other.connected)
+ return false;
+ if (externalIpAddress == null) {
+ if (other.externalIpAddress != null)
+ return false;
+ } else if (!externalIpAddress.equals(other.externalIpAddress))
+ return false;
+ if (ipAddress == null) {
+ if (other.ipAddress != null)
+ return false;
+ } else if (!ipAddress.equals(other.ipAddress))
+ return false;
+ if (ipAddressAllocationMode == null) {
+ if (other.ipAddressAllocationMode != null)
+ return false;
+ } else if (!ipAddressAllocationMode.equals(other.ipAddressAllocationMode))
+ return false;
+ if (network == null) {
+ if (other.network != null)
+ return false;
+ } else if (!network.equals(other.network))
+ return false;
+ if (networkConnectionIndex != other.networkConnectionIndex)
+ return false;
+ return true;
+ }
+
+ public Builder toBuilder() {
+ return Builder.fromNetworkConnection(this);
+ }
+
+ @Override
+ public String toString() {
+ return "[network=" + network + ", connected=" + connected + ", ipAddress=" + ipAddress + ", externalIpAddress="
+ + externalIpAddress + ", networkConnectionIndex=" + networkConnectionIndex + ", ipAddressAllocationMode="
+ + ipAddressAllocationMode + ", MACAddress=" + MACAddress + "]";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/NetworkConnectionSection.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/NetworkConnectionSection.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/NetworkConnectionSection.java
new file mode 100755
index 0000000..c6f5f37
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/NetworkConnectionSection.java
@@ -0,0 +1,218 @@
+/*
+ * 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.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import java.net.URI;
+import java.util.Set;
+
+import com.google.common.collect.ImmutableSet;
+
+/**
+ * The NetworkConnectionSection element specifies how a Vm is connected to a vApp network. It
+ * extends the ovf:NetworkConnection element.
+ * <p/>
+ * NOTE The OVF NetworkSection element and the vCloud API NetworkConnectionSection element specify
+ * many of the same parameters for a network connection. If both are present in a Vm body, the
+ * values specified in the NetworkConnectionSection override those specified in the NetworkSection.
+ */
+public class NetworkConnectionSection {
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public static class Builder {
+ protected String type;
+ protected URI href;
+ protected String info;
+ protected Integer primaryNetworkConnectionIndex;
+ protected Set<NetworkConnection> connections = ImmutableSet.of();
+ protected ReferenceType edit;
+
+ public Builder type(String type) {
+ this.type = type;
+ return this;
+ }
+
+ public Builder href(URI href) {
+ this.href = href;
+ return this;
+ }
+
+ public Builder info(String info) {
+ this.info = info;
+ return this;
+ }
+
+ public Builder primaryNetworkConnectionIndex(Integer primaryNetworkConnectionIndex) {
+ this.primaryNetworkConnectionIndex = primaryNetworkConnectionIndex;
+ return this;
+ }
+
+ public Builder connections(Iterable<NetworkConnection> connections) {
+ this.connections = ImmutableSet.copyOf(checkNotNull(connections, "connections"));
+ return this;
+ }
+
+ public Builder edit(ReferenceType edit) {
+ this.edit = edit;
+ return this;
+ }
+
+ public NetworkConnectionSection build() {
+ return new NetworkConnectionSection(type, href, info, primaryNetworkConnectionIndex, connections, edit);
+ }
+
+ public static Builder fromNetworkConnectionSection(NetworkConnectionSection in) {
+ return new Builder().type(in.getType()).href(in.getHref()).info(in.getInfo())
+ .primaryNetworkConnectionIndex(in.getPrimaryNetworkConnectionIndex()).connections(in.getConnections())
+ .edit(in.getEdit());
+ }
+ }
+
+ protected final String type;
+ protected final URI href;
+ protected final String info;
+ protected final Integer primaryNetworkConnectionIndex;
+ protected final Set<NetworkConnection> connections;
+ protected final ReferenceType edit;
+
+ public NetworkConnectionSection(String type, URI href, String info, Integer primaryNetworkConnectionIndex,
+ Iterable<NetworkConnection> connections, ReferenceType edit) {
+ this.type = type;
+ this.href = href;
+ this.info = info;
+ this.primaryNetworkConnectionIndex = primaryNetworkConnectionIndex;
+ this.connections = ImmutableSet.copyOf(checkNotNull(connections, "connections"));
+ this.edit = edit;
+ }
+
+ /**
+ *
+ * @return media type of this section
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ *
+ * @return URL to access this section
+ */
+ public URI getHref() {
+ return href;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String getInfo() {
+ return info;
+ }
+
+ /**
+ *
+ * @return The value of the rasd:AddressOnParent element of the device (NIC) supporting the
+ * primary network connection to the containing virtual machine.
+ */
+ public Integer getPrimaryNetworkConnectionIndex() {
+ return primaryNetworkConnectionIndex;
+ }
+
+ /**
+ *
+ */
+ public Set<NetworkConnection> getConnections() {
+ return connections;
+ }
+
+ /**
+ *
+ */
+ public ReferenceType getEdit() {
+ return edit;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((connections == null) ? 0 : connections.hashCode());
+ result = prime * result + ((edit == null) ? 0 : edit.hashCode());
+ result = prime * result + ((href == null) ? 0 : href.hashCode());
+ result = prime * result + ((info == null) ? 0 : info.hashCode());
+ result = prime * result
+ + ((primaryNetworkConnectionIndex == null) ? 0 : primaryNetworkConnectionIndex.hashCode());
+ result = prime * result + ((type == null) ? 0 : type.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ NetworkConnectionSection other = (NetworkConnectionSection) obj;
+ if (connections == null) {
+ if (other.connections != null)
+ return false;
+ } else if (!connections.equals(other.connections))
+ return false;
+ if (edit == null) {
+ if (other.edit != null)
+ return false;
+ } else if (!edit.equals(other.edit))
+ return false;
+ if (href == null) {
+ if (other.href != null)
+ return false;
+ } else if (!href.equals(other.href))
+ return false;
+ if (info == null) {
+ if (other.info != null)
+ return false;
+ } else if (!info.equals(other.info))
+ return false;
+ if (primaryNetworkConnectionIndex == null) {
+ if (other.primaryNetworkConnectionIndex != null)
+ return false;
+ } else if (!primaryNetworkConnectionIndex.equals(other.primaryNetworkConnectionIndex))
+ return false;
+ if (type == null) {
+ if (other.type != null)
+ return false;
+ } else if (!type.equals(other.type))
+ return false;
+ return true;
+ }
+
+ public Builder toBuilder() {
+ return Builder.fromNetworkConnectionSection(this);
+ }
+
+ @Override
+ public String toString() {
+ return "[href=" + href + ", connections=" + connections + ", primaryNetworkConnectionIndex="
+ + primaryNetworkConnectionIndex + "]";
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Org.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Org.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Org.java
new file mode 100755
index 0000000..a71ad2f
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Org.java
@@ -0,0 +1,86 @@
+/*
+ * 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.domain;
+
+import java.util.List;
+import java.util.Map;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.internal.OrgImpl;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * A vCloud organization is a high-level abstraction that provides a unit of administration for
+ * objects and resources. As viewed by a user, an organization (represented by an Org element) can
+ * contain Catalog, Network, and vDC elements. If there are any queued, running, or recently
+ * completed tasks owned by a member of the organization, it also contains a TasksList element. As
+ * viewed by an administrator, an organization also contains users, groups, and other information
+ *
+ * @author Adrian Cole
+ */
+@ImplementedBy(OrgImpl.class)
+public interface Org extends ReferenceType {
+ /**
+ * optional description
+ *
+ * @since vcloud api 0.8
+ */
+ @Nullable
+ String getDescription();
+
+ /**
+ * full name of the organization
+ *
+ * @since vcloud api 1.0
+ */
+ @Nullable
+ String getFullName();
+
+ /**
+ * @since vcloud api 0.8
+ */
+ Map<String, ReferenceType> getCatalogs();
+
+ /**
+ * @since vcloud api 0.8
+ */
+ Map<String, ReferenceType> getVDCs();
+
+ /**
+ * If there are any queued, running, or recently completed tasks owned by a member of the
+ * organization, it also contains a TasksList.
+ *
+ * @since vcloud api 0.8
+ */
+ @Nullable
+ ReferenceType getTasksList();
+
+ /**
+ * @since vcloud api 1.0
+ */
+ Map<String, ReferenceType> getNetworks();
+
+ /**
+ * read‐only container for Task elements. Each element in the container represents a queued,
+ * running, or failed task owned by this object.
+ *
+ * @since vcloud api 1.0
+ */
+ List<Task> getTasks();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/ReferenceType.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/ReferenceType.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/ReferenceType.java
new file mode 100755
index 0000000..c99a1ef
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/ReferenceType.java
@@ -0,0 +1,51 @@
+/*
+ * 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.domain;
+
+import java.net.URI;
+
+import org.jclouds.vcloud.domain.internal.ReferenceTypeImpl;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * Many container elements are populated with references to contained objects. Each reference
+ * consists of a hyperlink, an optional media type, and a name.
+ *
+ * @author Adrian Cole
+ *
+ */
+@ImplementedBy(ReferenceTypeImpl.class)
+public interface ReferenceType extends Comparable<ReferenceType> {
+ /**
+ * @return hyperlink to the referenced object
+ */
+ URI getHref();
+
+ /**
+ * @return name of the referenced object.
+ *
+ */
+ String getName();
+
+ /**
+ * @return object type, expressed as the media type of the XML representing of the object
+ * @see VCloudMediaType
+ */
+ String getType();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Status.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Status.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Status.java
new file mode 100755
index 0000000..d215126
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Status.java
@@ -0,0 +1,246 @@
+/*
+ * 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.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Objects such as vAppTemplate, vApp, and Vm have a status attribute whose value indicates the
+ * state of the object. Status for an object, such as a vAppTemplate or vApp, whose Children (Vm
+ * objects) each have a status of their own, is computed from the status of the Children.
+ *
+ * <h2>NOTE</h2>
+ * <p/>
+ * The deployment status of an object is indicated by the value of its deployed attribute.
+ *
+ * @since vcloud api 0.8
+ *
+ * @author Adrian Cole
+ */
+public enum Status {
+ /**
+ * The {@link VAppTemplate}, {@link VApp}, or {@link Vm} could not be created.
+ *
+ * @since vcloud api 1.0
+ */
+ ERROR,
+ /**
+ * The {@link VAppTemplate}, {@link VApp}, or {@link Vm} is unresolved.
+ *
+ * @since vcloud api 0.8
+ */
+ UNRESOLVED,
+ /**
+ * The {@link VAppTemplate}, {@link VApp}, or {@link Vm} is resolved.
+ *
+ * @since vcloud api 0.8
+ */
+ RESOLVED,
+ /**
+ * The object is deployed.
+ * <p/>
+ * note that the documentation does not reference use of this.
+ *
+ * @since vcloud api 1.0
+ */
+ DEPLOYED,
+ /**
+ * The {@link VApp} or {@link Vm} is suspended.
+ *
+ * @since vcloud api 0.8
+ */
+ SUSPENDED,
+ /**
+ * The {@link VApp} or {@link Vm} is powered on
+ *
+ * @since vcloud api 0.8
+ */
+ ON,
+ /**
+ * The {@link VApp} or {@link Vm} waiting for user input.
+ *
+ * @since vcloud api 1.0
+ */
+ WAITING_FOR_INPUT,
+ /**
+ * The {@link VAppTemplate}, {@link VApp}, or {@link Vm} is in an unknown state.
+ *
+ * @since vcloud api 1.0
+ */
+ UNKNOWN,
+ /**
+ * The {@link VAppTemplate}, {@link VApp}, or {@link Vm} is in an unrecognized state.
+ *
+ * @since vcloud api 1.0
+ */
+ UNRECOGNIZED,
+ /**
+ * The {@link VAppTemplate}, {@link VApp}, or {@link Vm} is off.
+ *
+ * @since vcloud api 0.8
+ */
+ OFF,
+ /**
+ * The {@link VApp} or {@link Vm} is in an inconsistent state.
+ *
+ * @since vcloud api 1.0
+ */
+ INCONSISTENT,
+ /**
+ * The {@link VAppTemplate} or {@link VApp} have children do not all have the same status.
+ *
+ * @since vcloud api 1.0
+ */
+ MIXED,
+ /**
+ * The {@link VAppTemplate} Upload initiated, OVF descriptor pending
+ *
+ * @since vcloud api 1.0
+ */
+ PENDING_DESCRIPTOR,
+ /**
+ * The {@link VAppTemplate} Upload initiated, copying contents
+ *
+ * @since vcloud api 1.0
+ */
+ COPYING,
+ /**
+ * The {@link VAppTemplate} Upload initiated, disk contents pending
+ *
+ * @since vcloud api 1.0
+ */
+ PENDING_CONTENTS,
+ /**
+ * The {@link VAppTemplate} Upload has been quarantined
+ *
+ * @since vcloud api 1.0
+ */
+ QUARANTINED,
+ /**
+ * The {@link VAppTemplate} Upload quarantine period has expired
+ *
+ * @since vcloud api 1.0
+ */
+ QUARANTINE_EXPIRED,
+ /**
+ * The {@link VAppTemplate} rejected
+ *
+ * @since vcloud api 1.0
+ */
+ REJECTED,
+ /**
+ * The {@link VAppTemplate} transfer timeout
+ *
+ * @since vcloud api 1.0
+ */
+ TRANSFER_TIMEOUT;
+
+ public String value() {
+ switch (this) {
+ case UNRESOLVED:
+ return "0";
+ case RESOLVED:
+ return "1";
+ case DEPLOYED:
+ return "2";
+ case SUSPENDED:
+ return "3";
+ case ON:
+ return "4";
+ case WAITING_FOR_INPUT:
+ return "5";
+ case UNKNOWN:
+ return "6";
+ case UNRECOGNIZED:
+ return "7";
+ case OFF:
+ return "8";
+ case INCONSISTENT:
+ return "9";
+ case MIXED:
+ return "10";
+ case PENDING_DESCRIPTOR:
+ return "11";
+ case COPYING:
+ return "12";
+ case PENDING_CONTENTS:
+ return "13";
+ case QUARANTINED:
+ return "14";
+ case QUARANTINE_EXPIRED:
+ return "15";
+ case REJECTED:
+ return "16";
+ case TRANSFER_TIMEOUT:
+ return "17";
+ default:
+ return "7";
+ }
+ }
+
+ public static Status fromValue(String status) {
+ try {
+ return fromValue(Integer.parseInt(checkNotNull(status, "status")));
+ } catch (IllegalArgumentException e) {
+ return UNRECOGNIZED;
+ }
+ }
+
+ public static Status fromValue(int v) {
+ switch (v) {
+ case 0:
+ return UNRESOLVED;
+ case 1:
+ return RESOLVED;
+ case 2:
+ return DEPLOYED;
+ case 3:
+ return SUSPENDED;
+ case 4:
+ return ON;
+ case 5:
+ return WAITING_FOR_INPUT;
+ case 6:
+ return UNKNOWN;
+ case 7:
+ return UNRECOGNIZED;
+ case 8:
+ return OFF;
+ case 9:
+ return INCONSISTENT;
+ case 10:
+ return MIXED;
+ case 11:
+ return PENDING_DESCRIPTOR;
+ case 12:
+ return COPYING;
+ case 13:
+ return PENDING_CONTENTS;
+ case 14:
+ return QUARANTINED;
+ case 15:
+ return QUARANTINE_EXPIRED;
+ case 16:
+ return REJECTED;
+ case 17:
+ return TRANSFER_TIMEOUT;
+ default:
+ return UNRECOGNIZED;
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Task.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Task.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Task.java
new file mode 100755
index 0000000..82585d6
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/Task.java
@@ -0,0 +1,72 @@
+/*
+ * 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.domain;
+
+import java.util.Date;
+
+import org.jclouds.javax.annotation.Nullable;
+import org.jclouds.vcloud.domain.internal.TaskImpl;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * Whenever the result of a request cannot be returned immediately, the server creates a Task
+ * object. Tasks owned by an object such as a vApp or vDC are contained in the Tasks element of the
+ * object’s XML representation. This element is read‐only.
+ */
+@ImplementedBy(TaskImpl.class)
+public interface Task extends ReferenceType {
+ /**
+ * The current status of the task.
+ */
+ String getOperation();
+
+ /**
+ * The current status of the task.
+ */
+ TaskStatus getStatus();
+
+ /**
+ * date and time when the task was started.
+ */
+ Date getStartTime();
+
+ /**
+ * date and time when the task completed. Does not appear for running tasks.
+ */
+ Date getEndTime();
+
+ /**
+ * date and time at which the task expires. By default, tasks expire 24 hours after their start
+ * time. Expired tasks cannot be queried.
+ */
+ Date getExpiryTime();
+
+ /**
+ * A link to the object that owns the task. For copy operations, the owner is the copy that is
+ * being created. For delete operations, the owner is the deleted object, so this element is not
+ * included. For all other operations, the owner is the object to which the request was made.
+ */
+ ReferenceType getOwner();
+
+ /**
+ * error message or related information returned by the task
+ */
+ @Nullable
+ VCloudError getError();
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/TaskStatus.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/TaskStatus.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/TaskStatus.java
new file mode 100755
index 0000000..f2ab975
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/TaskStatus.java
@@ -0,0 +1,71 @@
+/*
+ * 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.domain;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * @author Adrian Cole
+ */
+public enum TaskStatus {
+ /**
+ * The task has completed and returned a value indicating success.
+ */
+ SUCCESS,
+ /**
+ * The task is running.
+ */
+ RUNNING,
+
+ /**
+ * The task has been queued for execution.
+ */
+ QUEUED,
+ /**
+ * The task has completed and returned a value indicating an error.
+ */
+ ERROR,
+ /**
+ * not an official status, temporarily in.
+ */
+ CANCELLED, UNRECOGNIZED;
+ public String value() {
+ return name().toLowerCase();
+ }
+
+ @Override
+ public String toString() {
+ return value();
+ }
+
+ public static TaskStatus fromValue(String status) {
+ if ("CANCELED".equals(status.toUpperCase())) {
+ // TODO: ecloud hack
+ status = "CANCELLED";
+ } else if ("FAILED".equals(status.toUpperCase())) {
+ status = "ERROR";
+ } else if ("COMPLETED".equals(status.toUpperCase())) {
+ status = "SUCCESS";
+ }
+ try {
+ return valueOf(checkNotNull(status, "status").toUpperCase());
+ } catch (IllegalArgumentException e) {
+ return UNRECOGNIZED;
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/4cbbd29e/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/TasksList.java
----------------------------------------------------------------------
diff --git a/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/TasksList.java b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/TasksList.java
new file mode 100755
index 0000000..9d41fbc
--- /dev/null
+++ b/dependencies/jclouds/vcloud/1.7.1-stratos/src/main/java/org/jclouds/vcloud/domain/TasksList.java
@@ -0,0 +1,37 @@
+/*
+ * 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.domain;
+
+import java.net.URI;
+import java.util.SortedSet;
+
+import org.jclouds.vcloud.domain.internal.TasksListImpl;
+
+import com.google.inject.ImplementedBy;
+
+/**
+ * @author Adrian Cole
+ */
+@org.jclouds.vcloud.endpoints.TasksList
+@ImplementedBy(TasksListImpl.class)
+public interface TasksList {
+
+ URI getLocation();
+
+ SortedSet<Task> getTasks();
+
+}