Jclouds vcloud api 1.8.1 clone with custom changes
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/6573fbed Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/6573fbed Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/6573fbed Branch: refs/heads/master Commit: 6573fbed3cb2acab9595ab66a4004546076abc81 Parents: ae5425e Author: R-Rajkumar <[email protected]> Authored: Tue Nov 25 21:08:52 2014 +0530 Committer: R-Rajkumar <[email protected]> Committed: Tue Nov 25 21:08:52 2014 +0530 ---------------------------------------------------------------------- .../apis/vcloud/1.8.1-stratos/README.txt | 6 + .../jclouds/apis/vcloud/1.8.1-stratos/pom.xml | 131 +++ .../vcloud/TaskInErrorStateException.java | 34 + .../vcloud/TaskStillRunningException.java | 34 + .../main/java/org/jclouds/vcloud/VCloudApi.java | 90 ++ .../org/jclouds/vcloud/VCloudApiMetadata.java | 101 +++ .../org/jclouds/vcloud/VCloudMediaType.java | 222 +++++ .../jclouds/vcloud/VCloudResponseException.java | 66 ++ .../java/org/jclouds/vcloud/VCloudToken.java | 34 + .../org/jclouds/vcloud/VCloudVersionsApi.java | 38 + .../binders/BindCPUCountToXmlPayload.java | 74 ++ .../BindCaptureVAppParamsToXmlPayload.java | 119 +++ .../binders/BindCatalogItemToXmlPayload.java | 121 +++ .../binders/BindCloneParamsToXmlPayload.java | 128 +++ .../BindCloneVAppParamsToXmlPayload.java | 60 ++ ...BindCloneVAppTemplateParamsToXmlPayload.java | 55 ++ .../BindDeployVAppParamsToXmlPayload.java | 37 + ...ndGuestCustomizationSectionToXmlPayload.java | 107 +++ ...stantiateVAppTemplateParamsToXmlPayload.java | 216 +++++ .../vcloud/binders/BindMemoryToXmlPayload.java | 75 ++ ...indNetworkConnectionSectionToXmlPayload.java | 101 +++ .../vcloud/binders/BindParamsToXmlPayload.java | 76 ++ .../BindUndeployVAppParamsToXmlPayload.java | 37 + .../OrgNameAndCatalogNameToEndpoint.java | 75 ++ .../binders/OrgNameAndVDCNameToEndpoint.java | 74 ++ .../OrgNameCatalogNameItemNameToEndpoint.java | 73 ++ ...meCatalogNameVAppTemplateNameToEndpoint.java | 86 ++ .../OrgNameVDCNameNetworkNameToEndpoint.java | 50 + ...NameVDCNameResourceEntityNameToEndpoint.java | 50 + .../OrgNameVDCNameResourceNameToEndpoint.java | 77 ++ .../VCloudComputeServiceContextModule.java | 37 + .../VCloudComputeServiceDependenciesModule.java | 150 +++ .../functions/FindLocationForResource.java | 66 ++ .../compute/functions/HardwareForVApp.java | 68 ++ .../functions/HardwareForVAppTemplate.java | 81 ++ .../compute/functions/ImageForVAppTemplate.java | 79 ++ .../compute/functions/VAppToNodeMetadata.java | 111 +++ ...dHardwareBuilderFromResourceAllocations.java | 40 + ...EnvelopeOrThrowIllegalArgumentException.java | 74 ++ .../internal/VCloudTemplateBuilderImpl.java | 45 + .../compute/options/VCloudTemplateOptions.java | 348 +++++++ ...edIntoNameThenCustomizeDeployAndPowerOn.java | 299 ++++++ ...etworkConfigurationForNetworkAndOptions.java | 76 ++ .../strategy/VCloudComputeServiceAdapter.java | 262 ++++++ .../vcloud/compute/util/VCloudComputeUtils.java | 112 +++ .../vcloud/config/DefaultCatalogForOrg.java | 59 ++ .../vcloud/config/DefaultNetworkForVDC.java | 61 ++ .../vcloud/config/DefaultOrgForUser.java | 54 ++ .../vcloud/config/DefaultTasksListForOrg.java | 49 + .../config/DefaultVCloudReferencesModule.java | 161 ++++ .../jclouds/vcloud/config/DefaultVDCForOrg.java | 59 ++ .../vcloud/config/VCloudHttpApiModule.java | 536 +++++++++++ .../jclouds/vcloud/domain/AllocationModel.java | 70 ++ .../org/jclouds/vcloud/domain/Capacity.java | 106 +++ .../java/org/jclouds/vcloud/domain/Catalog.java | 66 ++ .../org/jclouds/vcloud/domain/CatalogItem.java | 34 + .../domain/GuestCustomizationSection.java | 440 +++++++++ .../domain/InstantiateVAppTemplateParams.java | 96 ++ .../vcloud/domain/NetworkConnection.java | 231 +++++ .../vcloud/domain/NetworkConnectionSection.java | 218 +++++ .../java/org/jclouds/vcloud/domain/Org.java | 84 ++ .../jclouds/vcloud/domain/ReferenceType.java | 52 ++ .../java/org/jclouds/vcloud/domain/Status.java | 244 +++++ .../java/org/jclouds/vcloud/domain/Task.java | 72 ++ .../org/jclouds/vcloud/domain/TaskStatus.java | 68 ++ .../org/jclouds/vcloud/domain/TasksList.java | 34 + .../java/org/jclouds/vcloud/domain/VApp.java | 85 ++ .../org/jclouds/vcloud/domain/VAppTemplate.java | 95 ++ .../org/jclouds/vcloud/domain/VCloudError.java | 118 +++ .../jclouds/vcloud/domain/VCloudSession.java | 25 + .../java/org/jclouds/vcloud/domain/VDC.java | 144 +++ .../org/jclouds/vcloud/domain/VDCStatus.java | 57 ++ .../main/java/org/jclouds/vcloud/domain/Vm.java | 106 +++ .../vcloud/domain/internal/CatalogImpl.java | 189 ++++ .../vcloud/domain/internal/CatalogItemImpl.java | 106 +++ .../vcloud/domain/internal/ErrorImpl.java | 114 +++ .../jclouds/vcloud/domain/internal/OrgImpl.java | 168 ++++ .../domain/internal/ReferenceTypeImpl.java | 99 ++ .../vcloud/domain/internal/TaskImpl.java | 160 ++++ .../vcloud/domain/internal/TasksListImpl.java | 78 ++ .../vcloud/domain/internal/VAppImpl.java | 163 ++++ .../domain/internal/VAppTemplateImpl.java | 202 +++++ .../jclouds/vcloud/domain/internal/VDCImpl.java | 289 ++++++ .../jclouds/vcloud/domain/internal/VmImpl.java | 214 +++++ .../vcloud/domain/network/DhcpService.java | 106 +++ .../jclouds/vcloud/domain/network/Features.java | 95 ++ .../vcloud/domain/network/FenceMode.java | 68 ++ .../vcloud/domain/network/FirewallService.java | 86 ++ .../domain/network/IpAddressAllocationMode.java | 50 + .../jclouds/vcloud/domain/network/IpRange.java | 75 ++ .../jclouds/vcloud/domain/network/IpScope.java | 169 ++++ .../vcloud/domain/network/NatService.java | 115 +++ .../vcloud/domain/network/NetworkConfig.java | 163 ++++ .../vcloud/domain/network/OrgNetwork.java | 119 +++ .../domain/network/firewall/FirewallPolicy.java | 53 ++ .../network/firewall/FirewallProtocols.java | 71 ++ .../domain/network/firewall/FirewallRule.java | 124 +++ .../domain/network/internal/OrgNetworkImpl.java | 198 ++++ .../vcloud/domain/network/nat/NatPolicy.java | 53 ++ .../vcloud/domain/network/nat/NatProtocol.java | 46 + .../vcloud/domain/network/nat/NatRule.java | 33 + .../vcloud/domain/network/nat/NatType.java | 59 ++ .../domain/network/nat/rules/MappingMode.java | 53 ++ .../network/nat/rules/OneToOneVmRule.java | 109 +++ .../network/nat/rules/PortForwardingRule.java | 110 +++ .../vcloud/domain/network/nat/rules/VmRule.java | 127 +++ .../EditableResourceAllocationSettingData.java | 298 ++++++ .../vcloud/domain/ovf/VCloudHardDisk.java | 326 +++++++ .../vcloud/domain/ovf/VCloudNetworkAdapter.java | 328 +++++++ .../vcloud/domain/ovf/VCloudNetworkSection.java | 80 ++ .../ovf/VCloudOperatingSystemSection.java | 118 +++ .../ovf/VCloudVirtualHardwareSection.java | 179 ++++ .../org/jclouds/vcloud/endpoints/Catalog.java | 34 + .../org/jclouds/vcloud/endpoints/Network.java | 34 + .../java/org/jclouds/vcloud/endpoints/Org.java | 34 + .../org/jclouds/vcloud/endpoints/OrgList.java | 34 + .../org/jclouds/vcloud/endpoints/TasksList.java | 34 + .../jclouds/vcloud/endpoints/VCloudLogin.java | 36 + .../java/org/jclouds/vcloud/endpoints/VDC.java | 34 + .../org/jclouds/vcloud/features/CatalogApi.java | 143 +++ .../org/jclouds/vcloud/features/NetworkApi.java | 60 ++ .../org/jclouds/vcloud/features/OrgApi.java | 84 ++ .../org/jclouds/vcloud/features/TaskApi.java | 80 ++ .../org/jclouds/vcloud/features/VAppApi.java | 260 ++++++ .../vcloud/features/VAppTemplateApi.java | 179 ++++ .../org/jclouds/vcloud/features/VDCApi.java | 71 ++ .../java/org/jclouds/vcloud/features/VmApi.java | 293 ++++++ ...ddVCloudAuthorizationAndCookieToRequest.java | 60 ++ .../vcloud/functions/CatalogItemsInCatalog.java | 61 ++ .../vcloud/functions/CatalogItemsInOrg.java | 54 ++ .../jclouds/vcloud/functions/CatalogsInOrg.java | 69 ++ .../functions/DefaultNetworkNameInTemplate.java | 47 + .../jclouds/vcloud/functions/NetworksInOrg.java | 54 ++ .../vcloud/functions/OrgNameToEndpoint.java | 53 ++ .../functions/OrgNameToTasksListEndpoint.java | 58 ++ .../vcloud/functions/OrgsForLocations.java | 70 ++ .../jclouds/vcloud/functions/OrgsForNames.java | 53 ++ .../ParseLoginResponseFromHeaders.java | 103 +++ .../functions/VAppTemplatesForCatalogItems.java | 63 ++ .../vcloud/functions/VAppTemplatesInOrg.java | 62 ++ .../org/jclouds/vcloud/functions/VDCsInOrg.java | 54 ++ .../ParseVCloudErrorFromHttpResponse.java | 118 +++ .../http/filters/VCloudBasicAuthentication.java | 58 ++ .../http/filters/VCloudSupportedVersions.java | 35 + .../jclouds/vcloud/internal/VCloudLoginApi.java | 45 + .../org/jclouds/vcloud/loaders/OVFLoader.java | 47 + .../vcloud/loaders/VAppTemplateLoader.java | 47 + .../org/jclouds/vcloud/location/DefaultVDC.java | 74 ++ .../location/OrgAndVDCToLocationSupplier.java | 90 ++ .../vcloud/options/CaptureVAppOptions.java | 46 + .../vcloud/options/CatalogItemOptions.java | 72 ++ .../jclouds/vcloud/options/CloneOptions.java | 48 + .../vcloud/options/CloneVAppOptions.java | 83 ++ .../options/CloneVAppTemplateOptions.java | 37 + .../options/InstantiateVAppTemplateOptions.java | 173 ++++ .../jclouds/vcloud/predicates/TaskSuccess.java | 63 ++ .../vcloud/reference/VCloudConstants.java | 52 ++ .../jclouds/vcloud/reference/package-info.java | 20 + ...thNameMatchingConfigurationKeyOrDefault.java | 95 ++ .../vcloud/suppliers/VAppTemplatesSupplier.java | 83 ++ .../java/org/jclouds/vcloud/util/Utils.java | 67 ++ .../org/jclouds/vcloud/util/VCloudUtils.java | 65 ++ .../org/jclouds/vcloud/xml/CatalogHandler.java | 101 +++ .../jclouds/vcloud/xml/CatalogItemHandler.java | 78 ++ .../org/jclouds/vcloud/xml/ErrorHandler.java | 42 + .../xml/GuestCustomizationSectionHandler.java | 134 +++ .../vcloud/xml/NetworkConnectionHandler.java | 84 ++ .../xml/NetworkConnectionSectionHandler.java | 100 ++ .../java/org/jclouds/vcloud/xml/OrgHandler.java | 109 +++ .../org/jclouds/vcloud/xml/OrgListHandler.java | 51 ++ .../jclouds/vcloud/xml/OrgNetworkHandler.java | 322 +++++++ .../vcloud/xml/SupportedVersionsHandler.java | 57 ++ .../org/jclouds/vcloud/xml/TaskHandler.java | 125 +++ .../jclouds/vcloud/xml/TasksListHandler.java | 71 ++ .../org/jclouds/vcloud/xml/VAppHandler.java | 148 +++ .../jclouds/vcloud/xml/VAppTemplateHandler.java | 149 +++ .../xml/VCloudVirtualHardwareHandler.java | 69 ++ .../java/org/jclouds/vcloud/xml/VDCHandler.java | 164 ++++ .../java/org/jclouds/vcloud/xml/VmHandler.java | 175 ++++ .../xml/ovf/VCloudNetworkSectionHandler.java | 66 ++ .../xml/ovf/VCloudOperatingSystemHandler.java | 78 ++ ...oudResourceAllocationSettingDataHandler.java | 86 ++ .../services/org.jclouds.apis.ApiMetadata | 1 + .../jclouds/vcloud/VCloudApiMetadataTest.java | 28 + .../java/org/jclouds/vcloud/VCloudApiTest.java | 62 ++ .../vcloud/VCloudSessionRefreshLiveTest.java | 39 + .../jclouds/vcloud/VCloudVersionsApiTest.java | 68 ++ .../BindCatalogItemToXmlPayloadTest.java | 51 ++ .../BindCloneVAppParamsToXmlPayloadTest.java | 79 ++ ...CloneVAppTemplateParamsToXmlPayloadTest.java | 87 ++ .../BindDeployVAppParamsToXmlPayloadTest.java | 59 ++ ...tiateVAppTemplateParamsToXmlPayloadTest.java | 177 ++++ ...etworkConnectionSectionToXmlPayloadTest.java | 66 ++ .../BindUndeployVAppParamsToXmlPayloadTest.java | 59 ++ .../BaseVCloudComputeServiceExpectTest.java | 158 ++++ .../compute/VCloudComputeServiceLiveTest.java | 49 + .../functions/FindLocationForResourceTest.java | 62 ++ .../functions/ListImagesInVCloudExpectTest.java | 85 ++ .../functions/VAppToNodeMetadataTest.java | 226 +++++ .../options/VCloudTemplateOptionsTest.java | 195 ++++ ...ThenCustomizeDeployAndPowerOnExpectTest.java | 167 ++++ .../VCloudComputeServiceAdapterTest.java | 89 ++ .../vcloud/features/CatalogApiLiveTest.java | 50 + .../jclouds/vcloud/features/CatalogApiTest.java | 129 +++ .../vcloud/features/NetworkApiLiveTest.java | 26 + .../jclouds/vcloud/features/NetworkApiTest.java | 73 ++ .../jclouds/vcloud/features/OrgApiLiveTest.java | 39 + .../org/jclouds/vcloud/features/OrgApiTest.java | 89 ++ .../vcloud/features/TaskApiLiveTest.java | 26 + .../jclouds/vcloud/features/TaskApiTest.java | 106 +++ .../vcloud/features/VAppApiLiveTest.java | 49 + .../jclouds/vcloud/features/VAppApiTest.java | 313 +++++++ .../features/VAppTemplateApiLiveTest.java | 164 ++++ .../vcloud/features/VAppTemplateApiTest.java | 236 +++++ .../jclouds/vcloud/features/VDCApiLiveTest.java | 26 + .../org/jclouds/vcloud/features/VDCApiTest.java | 100 ++ .../jclouds/vcloud/features/VmApiLiveTest.java | 161 ++++ .../org/jclouds/vcloud/features/VmApiTest.java | 318 +++++++ ...loudAuthorizationAndCookieToRequestTest.java | 51 ++ .../ParseLoginResponseFromHeadersTest.java | 145 +++ .../ParseVCloudErrorFromHttpResponseTest.java | 92 ++ .../vcloud/internal/BasePayloadTest.java | 51 ++ .../vcloud/internal/BaseVCloudApiLiveTest.java | 55 ++ .../vcloud/internal/BaseVCloudApiTest.java | 270 ++++++ .../vcloud/internal/VCloudLoginApiTest.java | 95 ++ .../InstantiateVAppTemplateOptionsTest.java | 72 ++ ...meMatchingConfigurationKeyOrDefaultTest.java | 113 +++ .../org/jclouds/vcloud/utils/TestUtils.java | 30 + .../jclouds/vcloud/xml/CatalogHandlerTest.java | 133 +++ .../vcloud/xml/CatalogItemHandlerTest.java | 84 ++ .../GuestCustomizationSectionHandlerTest.java | 73 ++ .../xml/NetworkConnectionHandlerTest.java | 55 ++ .../NetworkConnectionSectionHandlerTest.java | 61 ++ .../org/jclouds/vcloud/xml/OrgHandlerTest.java | 122 +++ .../jclouds/vcloud/xml/OrgListHandlerTest.java | 55 ++ .../vcloud/xml/OrgNetworkHandlerTest.java | 102 +++ .../xml/SupportedVersionsHandlerTest.java | 51 ++ .../org/jclouds/vcloud/xml/TaskHandlerTest.java | 133 +++ .../vcloud/xml/TasksListHandlerTest.java | 80 ++ .../org/jclouds/vcloud/xml/VAppHandlerTest.java | 75 ++ .../vcloud/xml/VAppTemplateHandlerTest.java | 162 ++++ .../org/jclouds/vcloud/xml/VDCHandlerTest.java | 134 +++ .../org/jclouds/vcloud/xml/VmHandlerTest.java | 77 ++ ...VCloudOperatingSystemSectionHandlerTest.java | 59 ++ ...VCloudVirtualHardwareSectionHandlerTest.java | 151 ++++ .../src/test/resources/captureVApp-default.xml | 1 + .../src/test/resources/captureVApp.xml | 1 + .../src/test/resources/catalog-blank.xml | 7 + .../src/test/resources/catalog-hosting.xml | 25 + .../src/test/resources/catalog.xml | 27 + .../src/test/resources/catalog1.0-vcd15.xml | 9 + ...alogItem-carrenza-with-default-namespace.xml | 8 + ...talogItem-carrenza-with-vcloud-namespace.xml | 8 + .../src/test/resources/catalogItem-hosting.xml | 14 + .../test/resources/catalogItem-terremark.xml | 16 + .../src/test/resources/catalogItem1.0-vcd15.xml | 8 + .../src/test/resources/copyVApp-default.xml | 1 + .../src/test/resources/copyVApp.xml | 1 + .../test/resources/copyVAppTemplate-default.xml | 1 + .../src/test/resources/copyVAppTemplate.xml | 1 + .../src/test/resources/cpuItem.xml | 1 + .../src/test/resources/guestCustomization.xml | 23 + .../resources/guestCustomizationSection.xml | 3 + .../src/test/resources/instantiatedvapp.xml | 13 + .../instantiationparams-description.xml | 1 + .../resources/instantiationparams-network.xml | 1 + .../src/test/resources/instantiationparams.xml | 1 + .../1.8.1-stratos/src/test/resources/log4j.xml | 151 ++++ .../src/test/resources/memoryItem.xml | 1 + .../src/test/resources/moveVApp.xml | 1 + .../src/test/resources/moveVAppTemplate.xml | 1 + .../src/test/resources/networkconnection.xml | 7 + .../test/resources/networkconnectionsection.xml | 18 + .../src/test/resources/org-1.0.xml | 24 + .../src/test/resources/org-hosting.xml | 12 + .../src/test/resources/org-savvis.xml | 13 + .../1.8.1-stratos/src/test/resources/org.xml | 5 + .../src/test/resources/org1.0-vcd15.xml | 11 + .../src/test/resources/orgList1.0-vcd15.xml | 4 + .../src/test/resources/orglist-savvis.xml | 3 + .../src/test/resources/orglist.xml | 3 + .../src/test/resources/orgnetwork-bridged.xml | 20 + .../src/test/resources/orgnetwork-isolated.xml | 31 + .../1.8.1-stratos/src/test/resources/os.xml | 11 + .../src/test/resources/ovf-multi-vm.xml | 285 ++++++ .../src/test/resources/ovf-ubuntu64.xml | 148 +++ .../src/test/resources/task-1.0.xml | 9 + .../src/test/resources/task-error.xml | 9 + .../src/test/resources/task-hosting.xml | 12 + .../src/test/resources/task-self.xml | 11 + .../src/test/resources/task-vcd15.xml | 5 + .../1.8.1-stratos/src/test/resources/task.xml | 8 + .../src/test/resources/taskslist-hosting.xml | 14 + .../src/test/resources/taskslist.xml | 27 + .../resources/template1.0-vcd15-multi-vm.xml | 68 ++ .../src/test/resources/template1.0-vcd15.xml | 72 ++ .../src/test/resources/vAppTemplate-copying.xml | 41 + .../src/test/resources/vAppTemplate.xml | 143 +++ .../vAppTemplate1.0-vcd15_withNewlines.xml | 109 +++ .../src/test/resources/vapp-hosting.xml | 235 +++++ .../src/test/resources/vapp-none.xml | 237 +++++ .../src/test/resources/vapp-pool.xml | 227 +++++ .../src/test/resources/vapp-rhel-off-static.xml | 325 +++++++ .../src/test/resources/vapp-ubuntu-off-dhcp.xml | 213 +++++ .../src/test/resources/vapp-unresolved.xml | 21 + .../src/test/resources/vapp-win-off-static.xml | 219 +++++ .../src/test/resources/vdc-1.0.xml | 49 + .../src/test/resources/vdc-hosting.xml | 60 ++ .../src/test/resources/vdc-nonet.xml | 22 + .../1.8.1-stratos/src/test/resources/vdc.xml | 36 + .../src/test/resources/vdc1.0-vcd15.xml | 47 + .../src/test/resources/versions-vcd15.xml | 906 +++++++++++++++++++ .../src/test/resources/versions.xml | 7 + .../test/resources/virtualhardwaresection.xml | 118 +++ .../src/test/resources/vm-rhel-off-static.xml | 197 ++++ 315 files changed, 29470 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/README.txt ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/README.txt b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/README.txt new file mode 100644 index 0000000..b00a7af --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/README.txt @@ -0,0 +1,6 @@ +# +# The jclouds API for VMware vCloud (http://www.vmware.com/products/vcloud/). +# +# TODO: Implementation status. +# TODO: Supported features. +# TODO: Usage example. http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/pom.xml ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/pom.xml b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/pom.xml new file mode 100644 index 0000000..8357aec --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/pom.xml @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + 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. + +--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.jclouds</groupId> + <artifactId>jclouds-project</artifactId> + <version>1.8.1</version> + </parent> + <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 /> + <test.vcloud.identity>FIXME_IDENTITY</test.vcloud.identity> + <test.vcloud.credential>FIXME_CREDENTIAL</test.vcloud.credential> + <test.vcloud.template /> + <jclouds.osgi.export>org.jclouds.vcloud*;version="${project.version}"</jclouds.osgi.export> + <jclouds.osgi.import> + org.jclouds.compute.internal;version="${jclouds.version}", + org.jclouds.rest.internal;version="${jclouds.version}", + org.jclouds*;version="${jclouds.version}", + * + </jclouds.osgi.import> + </properties> + + <dependencies> + <dependency> + <groupId>com.jamesmurty.utils</groupId> + <artifactId>java-xmlbuilder</artifactId> + <version>0.4</version> + </dependency> + <dependency> + <groupId>org.apache.jclouds</groupId> + <artifactId>jclouds-core</artifactId> + <version>${jclouds.version}</version> + </dependency> + <dependency> + <groupId>org.apache.jclouds</groupId> + <artifactId>jclouds-core</artifactId> + <version>${jclouds.version}</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.jclouds</groupId> + <artifactId>jclouds-compute</artifactId> + <version>${jclouds.version}</version> + </dependency> + <dependency> + <groupId>org.apache.jclouds</groupId> + <artifactId>jclouds-compute</artifactId> + <version>${jclouds.version}</version> + <type>test-jar</type> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.jclouds.driver</groupId> + <artifactId>jclouds-sshj</artifactId> + <version>${jclouds.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.jclouds.driver</groupId> + <artifactId>jclouds-log4j</artifactId> + <version>${jclouds.version}</version> + <scope>test</scope> + </dependency> + </dependencies> + + <profiles> + <profile> + <id>live</id> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <executions> + <execution> + <id>integration</id> + <phase>integration-test</phase> + <goals> + <goal>test</goal> + </goals> + <configuration> + <systemPropertyVariables> + <test.vcloud.endpoint>${test.vcloud.endpoint}</test.vcloud.endpoint> + <test.vcloud.api-version>${test.vcloud.api-version}</test.vcloud.api-version> + <test.vcloud.build-version>${test.vcloud.build-version}</test.vcloud.build-version> + <test.vcloud.identity>${test.vcloud.identity}</test.vcloud.identity> + <test.vcloud.credential>${test.vcloud.credential}</test.vcloud.credential> + <test.vcloud.template>${test.vcloud.template}</test.vcloud.template> + </systemPropertyVariables> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + + <scm> + <tag>4.0.0-rc4</tag> + </scm> +</project> http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/TaskInErrorStateException.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/TaskInErrorStateException.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/TaskInErrorStateException.java new file mode 100644 index 0000000..fb54599 --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/TaskInErrorStateException.java @@ -0,0 +1,34 @@ +/* + * 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; + +import org.jclouds.vcloud.domain.Task; + +public class TaskInErrorStateException extends RuntimeException { + + private final Task task; + + public TaskInErrorStateException(Task task) { + super("error on task: " + task + " error: " + task.getError()); + this.task = task; + } + + public Task getTask() { + return task; + } + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/TaskStillRunningException.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/TaskStillRunningException.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/TaskStillRunningException.java new file mode 100644 index 0000000..64eafbe --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/TaskStillRunningException.java @@ -0,0 +1,34 @@ +/* + * 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; + +import org.jclouds.vcloud.domain.Task; + +public class TaskStillRunningException extends RuntimeException { + + private final Task task; + + public TaskStillRunningException(Task task) { + super("task still running: " + task); + this.task = task; + } + + public Task getTask() { + return task; + } + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudApi.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudApi.java new file mode 100644 index 0000000..1c3b46c --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudApi.java @@ -0,0 +1,90 @@ +/* + * 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; + +import java.io.Closeable; + +import org.jclouds.rest.annotations.Delegate; +import org.jclouds.rest.annotations.RequestFilters; +import org.jclouds.vcloud.features.CatalogApi; +import org.jclouds.vcloud.features.NetworkApi; +import org.jclouds.vcloud.features.OrgApi; +import org.jclouds.vcloud.features.TaskApi; +import org.jclouds.vcloud.features.VAppApi; +import org.jclouds.vcloud.features.VAppTemplateApi; +import org.jclouds.vcloud.features.VDCApi; +import org.jclouds.vcloud.features.VmApi; +import org.jclouds.vcloud.filters.AddVCloudAuthorizationAndCookieToRequest; + +/** + * Provides access to VCloud resources via their REST API. + * <p/> + * + * @see <a href="http://communities.vmware.com/community/developer/forums/vcloudapi" /> + */ +@RequestFilters(AddVCloudAuthorizationAndCookieToRequest.class) +public interface VCloudApi extends Closeable { + /** + * Provides asynchronous access to VApp Template features. + * + */ + @Delegate + VAppTemplateApi getVAppTemplateApi(); + + /** + * Provides synchronous access to VApp features. + */ + @Delegate + VAppApi getVAppApi(); + + /** + * Provides synchronous access to Vm features. + */ + @Delegate + VmApi getVmApi(); + + /** + * Provides synchronous access to Catalog features. + */ + @Delegate + CatalogApi getCatalogApi(); + + /** + * Provides synchronous access to Task features. + */ + @Delegate + TaskApi getTaskApi(); + + /** + * Provides synchronous access to VDC features. + */ + @Delegate + VDCApi getVDCApi(); + + /** + * Provides synchronous access to Network features. + */ + @Delegate + NetworkApi getNetworkApi(); + + /** + * Provides synchronous access to Org features. + */ + @Delegate + OrgApi getOrgApi(); + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudApiMetadata.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudApiMetadata.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudApiMetadata.java new file mode 100644 index 0000000..4c88d8a --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudApiMetadata.java @@ -0,0 +1,101 @@ +/* + * 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; +import static org.jclouds.Constants.PROPERTY_SESSION_INTERVAL; +import static org.jclouds.compute.config.ComputeServiceProperties.TEMPLATE; +import static org.jclouds.reflect.Reflection2.typeToken; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_DEFAULT_FENCEMODE; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_TIMEOUT_TASK_COMPLETED; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_VERSION_SCHEMA; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_SCHEMA; + +import java.net.URI; +import java.util.Properties; + +import org.jclouds.compute.ComputeServiceContext; +import org.jclouds.rest.internal.BaseHttpApiMetadata; +import org.jclouds.vcloud.compute.config.VCloudComputeServiceContextModule; +import org.jclouds.vcloud.config.VCloudHttpApiModule; +import org.jclouds.vcloud.domain.network.FenceMode; + +import com.google.common.collect.ImmutableSet; +import com.google.inject.Module; + +/** + * Implementation of {@link ApiMetadata} for VCloud 1.0 API + */ +public class VCloudApiMetadata extends BaseHttpApiMetadata<VCloudApi> { + + + @Override + public Builder toBuilder() { + return new Builder().fromApiMetadata(this); + } + + public VCloudApiMetadata() { + this(new Builder()); + } + + protected VCloudApiMetadata(Builder builder) { + super(builder); + } + + public static Properties defaultProperties() { + Properties properties = BaseHttpApiMetadata.defaultProperties(); + properties.setProperty(PROPERTY_VCLOUD_VERSION_SCHEMA, "1"); + properties.setProperty(PROPERTY_VCLOUD_XML_NAMESPACE, + String.format("http://www.vmware.com/vcloud/v${%s}", PROPERTY_VCLOUD_VERSION_SCHEMA)); + properties.setProperty(PROPERTY_SESSION_INTERVAL, 8 * 60 + ""); + properties.setProperty(PROPERTY_VCLOUD_XML_SCHEMA, "http://vcloud.safesecureweb.com/ns/vcloud.xsd"); + properties.setProperty("jclouds.dns_name_length_min", "1"); + properties.setProperty("jclouds.dns_name_length_max", "80"); + properties.setProperty(PROPERTY_VCLOUD_DEFAULT_FENCEMODE, FenceMode.BRIDGED.toString()); + // TODO integrate this with the {@link ComputeTimeouts} instead of having + // a single timeout for + // everything. + properties.setProperty(PROPERTY_VCLOUD_TIMEOUT_TASK_COMPLETED, 1200l * 1000l + ""); + properties.setProperty(PROPERTY_SESSION_INTERVAL, 300 + ""); + // CIM ostype does not include version info + properties.setProperty(TEMPLATE, "osFamily=UBUNTU,os64Bit=true"); + return properties; + } + + public static class Builder extends BaseHttpApiMetadata.Builder<VCloudApi, Builder> { + protected Builder() { + id("vcloud") + .name("VCloud 1.0 API") + .identityName("User at Organization (user@org)") + .credentialName("Password") + .documentation(URI.create("http://www.vmware.com/support/pubs/vcd_pubs.html")) + .version("1.0") + .defaultProperties(VCloudApiMetadata.defaultProperties()) + .view(typeToken(ComputeServiceContext.class)) + .defaultModules(ImmutableSet.<Class<? extends Module>>of(VCloudHttpApiModule.class, VCloudComputeServiceContextModule.class)); + } + + @Override + public VCloudApiMetadata build() { + return new VCloudApiMetadata(this); + } + + @Override + protected Builder self() { + return this; + } + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudMediaType.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/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 new file mode 100644 index 0000000..67701fb --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudMediaType.java @@ -0,0 +1,222 @@ +/* + * 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; + +import javax.ws.rs.core.MediaType; + +/** + * Resource Types used in VCloud + * + * @see MediaType + */ +public interface VCloudMediaType { + /** + * "application/vnd.vmware.vcloud.error+xml" + */ + public static final String ERROR_XML = "application/vnd.vmware.vcloud.error+xml"; + + /** + * "application/vnd.vmware.vcloud.error+xml" + */ + public static final MediaType ERROR_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.error+xml"); + + /** + * "application/vnd.vmware.vcloud.vcloud+xml" + */ + public static final String VCLOUD_XML = "application/vnd.vmware.vcloud.vcloud+xml"; + + /** + * "application/vnd.vmware.vcloud.vcloud+xml" + */ + public static final MediaType VCLOUD_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.vcloud+xml"); + /** + * "application/vnd.vmware.vcloud.orgList+xml" + */ + public static final String ORGLIST_XML = "application/vnd.vmware.vcloud.orgList+xml"; + + /** + * "application/vnd.vmware.vcloud.orgList+xml" + */ + public static final MediaType ORGLIST_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.orgList+xml"); + /** + * "application/vnd.vmware.vcloud.org+xml" + */ + public static final String ORG_XML = "application/vnd.vmware.vcloud.org+xml"; + /** + * "application/vnd.vmware.vcloud.org+xml" + */ + public static final MediaType ORG_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.org+xml"); + + /** + * "application/vnd.vmware.vcloud.vdc+xml" + */ + public static final String VDC_XML = "application/vnd.vmware.vcloud.vdc+xml"; + /** + * "application/vnd.vmware.vcloud.vdc+xml" + */ + public static final MediaType VDC_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.vdc+xml"); + + /** + * "application/vnd.vmware.vcloud.catalog+xml" + */ + public static final String CATALOG_XML = "application/vnd.vmware.vcloud.catalog+xml"; + /** + * "application/vnd.vmware.vcloud.catalog+xml" + */ + public static final MediaType CATALOG_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.catalog+xml"); + + /** + * "application/vnd.vmware.vcloud.tasksList+xml" + */ + public static final String TASKSLIST_XML = "application/vnd.vmware.vcloud.tasksList+xml"; + /** + * "application/vnd.vmware.vcloud.tasksList+xml" + */ + public static final MediaType TASKSLIST_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.tasksList+xml"); + + /** + * "application/vnd.vmware.vcloud.catalogItem+xml" + */ + public static final String CATALOGITEM_XML = "application/vnd.vmware.vcloud.catalogItem+xml"; + /** + * "application/vnd.vmware.vcloud.catalogItem+xml" + */ + public static final MediaType CATALOGITEM_XML_TYPE = new MediaType("application", + "vnd.vmware.vcloud.catalogItem+xml"); + /** + * "application/vnd.vmware.vcloud.networkConnectionSection+xml" + */ + public static final String NETWORKCONNECTIONSECTION_XML = "application/vnd.vmware.vcloud.networkConnectionSection+xml"; + /** + * "application/vnd.vmware.vcloud.networkConnectionSection+xml" + */ + public static final MediaType NETWORKCONNECTIONSECTION_XML_TYPE = new MediaType("application", + "vnd.vmware.vcloud.networkConnectionSection+xml"); + /** + * "application/vnd.vmware.vcloud.virtualHardwareSection+xml" + */ + public static final String VIRTUALHARDWARESECTION_XML = "application/vnd.vmware.vcloud.virtualHardwareSection+xml"; + /** + * "application/vnd.vmware.vcloud.virtualHardwareSection+xml" + */ + public static final MediaType VIRTUALHARDWARESECTION_XML_TYPE = new MediaType("application", + "vnd.vmware.vcloud.virtualHardwareSection+xml"); + /** + * "application/vnd.vmware.vcloud.guestCustomizationSection+xml" + */ + public static final String GUESTCUSTOMIZATIONSECTION_XML = "application/vnd.vmware.vcloud.guestCustomizationSection+xml"; + /** + * "application/vnd.vmware.vcloud.guestCustomizationSection+xml" + */ + public static final MediaType GUESTCUSTOMIZATIONSECTION_XML_TYPE = new MediaType("application", + "vnd.vmware.vcloud.guestCustomizationSection+xml"); + + /** + * "application/vnd.vmware.vcloud.networkSection+xml" + */ + public static final String NETWORKSECTION_XML = "application/vnd.vmware.vcloud.networkSection+xml"; + /** + * "application/vnd.vmware.vcloud.networkSection+xml" + */ + public static final MediaType NETWORKSECTION_XML_TYPE = new MediaType("application", + "vnd.vmware.vcloud.networkSection+xml"); + + /** + * "application/vnd.vmware.vcloud.task+xml" + */ + public static final String TASK_XML = "application/vnd.vmware.vcloud.task+xml"; + /** + * "application/vnd.vmware.vcloud.task+xml" + */ + public static final MediaType TASK_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.task+xml"); + + /** + * "application/vnd.vmware.vcloud.undeployVAppParams+xml" + */ + public static final String UNDEPLOYVAPPPARAMS_XML = "application/vnd.vmware.vcloud.undeployVAppParams+xml"; + /** + * "application/vnd.vmware.vcloud.undeployVAppParams+xml" + */ + public static final MediaType UNDEPLOYVAPPPARAMS_XML_TYPE = new MediaType("application", + "vnd.vmware.vcloud.undeployVAppParams+xml"); + + /** + * "application/vnd.vmware.vcloud.deployVAppParams+xml" + */ + public static final String DEPLOYVAPPPARAMS_XML = "application/vnd.vmware.vcloud.deployVAppParams+xml"; + /** + * "application/vnd.vmware.vcloud.deployVAppParams+xml" + */ + public static final MediaType DEPLOYVAPPPARAMS_XML_TYPE = new MediaType("application", + "vnd.vmware.vcloud.deployVAppParams+xml"); + + /** + * "application/vnd.vmware.vcloud.vApp+xml" + */ + public static final String VAPP_XML = "application/vnd.vmware.vcloud.vApp+xml"; + /** + * "application/vnd.vmware.vcloud.vApp+xml" + */ + public static final MediaType VAPP_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.vApp+xml"); + + /** + * "application/vnd.vmware.vcloud.vm+xml" + */ + public static final String VM_XML = "application/vnd.vmware.vcloud.vm+xml"; + /** + * "application/vnd.vmware.vcloud.vm+xml" + */ + public static final MediaType VM_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.vm+xml"); + + /** + * "application/vnd.vmware.vcloud.vAppTemplate+xml" + */ + public static final String VAPPTEMPLATE_XML = "application/vnd.vmware.vcloud.vAppTemplate+xml"; + /** + * "application/vnd.vmware.vcloud.vAppTemplate+xml" + */ + public static final MediaType VAPPTEMPLATE_XML_TYPE = new MediaType("application", + "vnd.vmware.vcloud.vAppTemplate+xml"); + /** + * "application/vnd.vmware.vcloud.network+xml" + */ + public static final String NETWORK_XML = "application/vnd.vmware.vcloud.network+xml"; + /** + * "application/vnd.vmware.vcloud.network+xml" + */ + public static final MediaType NETWORK_XML_TYPE = new MediaType("application", "vnd.vmware.vcloud.network+xml"); + + /** + * "application/vnd.vmware.vcloud.rasdItem+xml" + */ + public static final String RASDITEM_XML = "application/vnd.vmware.vcloud.rasdItem+xml"; + /** + * "application/vnd.vmware.vcloud.rasdItem+xml" + */ + 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"); + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudResponseException.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudResponseException.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudResponseException.java new file mode 100644 index 0000000..ea8d7f8 --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudResponseException.java @@ -0,0 +1,66 @@ +/* + * 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; + +import org.jclouds.http.HttpCommand; +import org.jclouds.http.HttpResponse; +import org.jclouds.http.HttpResponseException; +import org.jclouds.vcloud.domain.VCloudError; + +/** + * Encapsulates an VCloud Error. + */ +public class VCloudResponseException extends HttpResponseException { + + private org.jclouds.vcloud.domain.VCloudError error; + + public VCloudResponseException(HttpCommand command, HttpResponse response, VCloudError error) { + super(String.format("request %s failed with code %s, error: %s", command.getCurrentRequest().getRequestLine(), response + .getStatusCode(), error.toString()), command, response); + this.setError(error); + + } + + public VCloudResponseException(HttpCommand command, HttpResponse response, VCloudError error, Throwable cause) { + super(String.format("request %1$s failed with error: %2$s", command.getCurrentRequest().getRequestLine(), error + .toString()), command, response, cause); + this.setError(error); + + } + + public VCloudResponseException(String message, HttpCommand command, HttpResponse response, VCloudError error) { + super(message, command, response); + this.setError(error); + + } + + public VCloudResponseException(String message, HttpCommand command, HttpResponse response, VCloudError error, + Throwable cause) { + super(message, command, response, cause); + this.setError(error); + + } + + public void setError(VCloudError error) { + this.error = error; + } + + public VCloudError getError() { + return error; + } + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudToken.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudToken.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudToken.java new file mode 100644 index 0000000..2aca7bd --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudToken.java @@ -0,0 +1,34 @@ +/* + * 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; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import javax.inject.Qualifier; + +/** + * A VCloud Session Token + */ +@Retention(value = RetentionPolicy.RUNTIME) +@Target(value = { ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD }) +@Qualifier +public @interface VCloudToken { + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudVersionsApi.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/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 new file mode 100644 index 0000000..b6c46f9 --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/VCloudVersionsApi.java @@ -0,0 +1,38 @@ +/* + * 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; + +import java.io.Closeable; +import java.net.URI; +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 + @XMLResponseParser(SupportedVersionsHandler.class) + @Path("/versions") + SortedMap<String, URI> getSupportedVersions(); +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCPUCountToXmlPayload.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCPUCountToXmlPayload.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCPUCountToXmlPayload.java new file mode 100644 index 0000000..fc757a1 --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCPUCountToXmlPayload.java @@ -0,0 +1,74 @@ +/* + * 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.binders; + +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkNotNull; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_SCHEMA; + +import java.util.Properties; + +import javax.inject.Named; +import javax.inject.Singleton; + +import org.jclouds.cim.ResourceAllocationSettingData.ResourceType; +import org.jclouds.http.HttpRequest; +import org.jclouds.rest.binders.BindToStringPayload; + +import com.google.common.base.Throwables; +import com.google.inject.Inject; +import com.jamesmurty.utils.XMLBuilder; + +@Singleton +public class BindCPUCountToXmlPayload extends BindToStringPayload { + protected final String ns; + protected final String schema; + + @Inject + public BindCPUCountToXmlPayload(BindToStringPayload stringBinder, @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, + @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema) { + this.ns = ns; + this.schema = schema; + } + + private static final String RESOURCE_ALLOCATION_NS = "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData"; + + @Override + public <R extends HttpRequest> R bindToRequest(R request, Object payload) { + checkArgument(checkNotNull(payload, "cpuCount") instanceof Integer, "this binder is only valid for Integers!"); + Integer cpuCount = Integer.class.cast(payload); + XMLBuilder cpuItem; + try { + cpuItem = XMLBuilder.create("Item").a("xmlns", ns).a("xmlns:rasd", RESOURCE_ALLOCATION_NS); + cpuItem.e("rasd:AllocationUnits").t("hertz * 10^6"); + cpuItem.e("rasd:Description").t("Number of Virtual CPUs"); + cpuItem.e("rasd:ElementName").t(cpuCount.toString() + " virtual CPU(s)"); + cpuItem.e("rasd:InstanceID").t("4"); + cpuItem.e("rasd:ResourceType").t(ResourceType.PROCESSOR.value()); + cpuItem.e("rasd:VirtualQuantity").t(cpuCount.toString()); + cpuItem.e("rasd:Weight").t("0"); + Properties outputProperties = new Properties(); + outputProperties.put(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes"); + request = super.bindToRequest(request, cpuItem.asString(outputProperties)); + } catch (Exception e) { + Throwables.propagate(e); + } + return request; + } + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCaptureVAppParamsToXmlPayload.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCaptureVAppParamsToXmlPayload.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCaptureVAppParamsToXmlPayload.java new file mode 100644 index 0000000..8a556be --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCaptureVAppParamsToXmlPayload.java @@ -0,0 +1,119 @@ +/* + * 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.binders; + +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkNotNull; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_SCHEMA; + +import java.util.Map; +import java.util.Properties; + +import javax.inject.Named; +import javax.inject.Singleton; +import javax.xml.parsers.FactoryConfigurationError; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; + +import org.jclouds.http.HttpRequest; +import org.jclouds.rest.MapBinder; +import org.jclouds.rest.binders.BindToStringPayload; +import org.jclouds.rest.internal.GeneratedHttpRequest; +import org.jclouds.vcloud.VCloudMediaType; +import org.jclouds.vcloud.options.CaptureVAppOptions; + +import com.google.inject.Inject; +import com.jamesmurty.utils.XMLBuilder; + +@Singleton +public class BindCaptureVAppParamsToXmlPayload implements MapBinder { + + protected final String ns; + protected final String schema; + private final BindToStringPayload stringBinder; + + @Inject + public BindCaptureVAppParamsToXmlPayload(BindToStringPayload stringBinder, + @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema) { + this.ns = ns; + this.schema = schema; + this.stringBinder = stringBinder; + } + + @Override + public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) { + checkArgument(checkNotNull(request, "request") instanceof GeneratedHttpRequest, + "this binder is only valid for GeneratedHttpRequests!"); + GeneratedHttpRequest gRequest = (GeneratedHttpRequest) request; + String templateName = checkNotNull(postParams.remove("templateName"), "templateName").toString(); + String vApp = checkNotNull(postParams.remove("vApp"), "vApp").toString(); + + CaptureVAppOptions options = findOptionsInArgsOrNull(gRequest); + if (options == null) { + options = new CaptureVAppOptions(); + } + try { + return stringBinder.bindToRequest(request, generateXml(templateName, vApp, options)); + } catch (ParserConfigurationException e) { + throw new RuntimeException(e); + } catch (FactoryConfigurationError e) { + throw new RuntimeException(e); + } catch (TransformerException e) { + throw new RuntimeException(e); + } + + } + + protected String generateXml(String templateName, String vApp, CaptureVAppOptions options) + throws ParserConfigurationException, FactoryConfigurationError, TransformerException { + XMLBuilder rootBuilder = buildRoot(templateName); + if (options.getDescription() != null) + rootBuilder.e("Description").text(options.getDescription()); + rootBuilder.e("Source").a("href", vApp).a("type", VCloudMediaType.VAPP_XML); + Properties outputProperties = new Properties(); + outputProperties.put(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes"); + return rootBuilder.asString(outputProperties); + } + + protected XMLBuilder buildRoot(String name) throws ParserConfigurationException, FactoryConfigurationError { + XMLBuilder rootBuilder = XMLBuilder.create("CaptureVAppParams").a("name", name).a("xmlns", ns) + .a("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance").a("xsi:schemaLocation", ns + " " + schema); + return rootBuilder; + } + + protected CaptureVAppOptions findOptionsInArgsOrNull(GeneratedHttpRequest gRequest) { + for (Object arg : gRequest.getInvocation().getArgs()) { + if (arg instanceof CaptureVAppOptions) { + return (CaptureVAppOptions) arg; + } else if (arg instanceof CaptureVAppOptions[]) { + CaptureVAppOptions[] options = (CaptureVAppOptions[]) arg; + return (options.length > 0) ? options[0] : null; + } + } + return null; + } + + @Override + public <R extends HttpRequest> R bindToRequest(R request, Object input) { + throw new IllegalStateException("CaptureVAppParams is needs parameters"); + } + + protected String ifNullDefaultTo(String value, String defaultValue) { + return value != null ? value : checkNotNull(defaultValue, "defaultValue"); + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCatalogItemToXmlPayload.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCatalogItemToXmlPayload.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCatalogItemToXmlPayload.java new file mode 100644 index 0000000..98c4e3a --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCatalogItemToXmlPayload.java @@ -0,0 +1,121 @@ +/* + * 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.binders; + +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkNotNull; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_SCHEMA; + +import java.net.URI; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Properties; + +import javax.inject.Named; +import javax.inject.Singleton; +import javax.xml.parsers.FactoryConfigurationError; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.TransformerException; + +import org.jclouds.http.HttpRequest; +import org.jclouds.rest.MapBinder; +import org.jclouds.rest.binders.BindToStringPayload; +import org.jclouds.rest.internal.GeneratedHttpRequest; +import org.jclouds.vcloud.options.CatalogItemOptions; + +import com.google.inject.Inject; +import com.jamesmurty.utils.XMLBuilder; + +@Singleton +public class BindCatalogItemToXmlPayload implements MapBinder { + + protected final String ns; + protected final String schema; + private final BindToStringPayload stringBinder; + + @Inject + public BindCatalogItemToXmlPayload(BindToStringPayload stringBinder, + @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema) { + this.ns = ns; + this.schema = schema; + this.stringBinder = stringBinder; + } + + @Override + public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) { + checkArgument(checkNotNull(request, "request") instanceof GeneratedHttpRequest, + "this binder is only valid for GeneratedHttpRequests!"); + GeneratedHttpRequest gRequest = (GeneratedHttpRequest) request; + String name = checkNotNull(postParams.get("name"), "name").toString(); + URI entity = URI.create(checkNotNull(postParams.get("Entity"), "Entity").toString()); + + CatalogItemOptions options = findOptionsInArgsOrNew(gRequest); + try { + return stringBinder.bindToRequest(request, generateXml(name, entity, options)); + } catch (ParserConfigurationException e) { + throw new RuntimeException(e); + } catch (FactoryConfigurationError e) { + throw new RuntimeException(e); + } catch (TransformerException e) { + throw new RuntimeException(e); + } + + } + + protected String generateXml(String templateName, URI entity, CatalogItemOptions options) + throws ParserConfigurationException, FactoryConfigurationError, TransformerException { + XMLBuilder rootBuilder = buildRoot(templateName); + if (options.getDescription() != null) + rootBuilder.e("Description").t(options.getDescription()); + rootBuilder.e("Entity").a("href", entity.toASCIIString()); + for (Entry<String, String> entry : options.getProperties().entrySet()) { + rootBuilder.e("Property").a("key", entry.getKey()).t(entry.getValue()); + } + Properties outputProperties = new Properties(); + outputProperties.put(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes"); + return rootBuilder.asString(outputProperties); + } + + protected XMLBuilder buildRoot(String name) throws ParserConfigurationException, FactoryConfigurationError { + XMLBuilder rootBuilder = XMLBuilder.create("CatalogItem").a("name", name).a("xmlns", ns).a("xmlns:xsi", + "http://www.w3.org/2001/XMLSchema-instance").a("xsi:schemaLocation", ns + " " + schema); + return rootBuilder; + } + + protected CatalogItemOptions findOptionsInArgsOrNew(GeneratedHttpRequest gRequest) { + for (Object arg : gRequest.getInvocation().getArgs()) { + if (arg instanceof CatalogItemOptions) { + return CatalogItemOptions.class.cast(arg); + } else if (arg.getClass().isArray()) { + Object[] array = (Object[]) arg; + if (array.length > 0 && array[0] instanceof CatalogItemOptions) + return CatalogItemOptions.class.cast(array[0]); + } + } + return new CatalogItemOptions(); + } + + @Override + public <R extends HttpRequest> R bindToRequest(R request, Object input) { + throw new IllegalStateException("CatalogItem is needs parameters"); + } + + protected String ifNullDefaultTo(String value, String defaultValue) { + return value != null ? value : checkNotNull(defaultValue, "defaultValue"); + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCloneParamsToXmlPayload.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCloneParamsToXmlPayload.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCloneParamsToXmlPayload.java new file mode 100644 index 0000000..71617bc --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCloneParamsToXmlPayload.java @@ -0,0 +1,128 @@ +/* + * 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.binders; + +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Preconditions.checkNotNull; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_SCHEMA; + +import java.util.Map; +import java.util.Properties; + +import javax.inject.Named; +import javax.inject.Singleton; + +import org.jclouds.http.HttpRequest; +import org.jclouds.rest.MapBinder; +import org.jclouds.rest.binders.BindToStringPayload; +import org.jclouds.rest.internal.GeneratedHttpRequest; +import org.jclouds.vcloud.options.CloneOptions; + +import com.google.common.base.Throwables; +import com.google.inject.Inject; +import com.jamesmurty.utils.XMLBuilder; + +@Singleton +public abstract class BindCloneParamsToXmlPayload<O extends CloneOptions> implements MapBinder { + + protected final String ns; + protected final String schema; + private final BindToStringPayload stringBinder; + + protected abstract String getRootElement(); + protected abstract String getSourceMediaType(); + protected abstract Class<O> getOptionClass(); + + @Inject + public BindCloneParamsToXmlPayload(BindToStringPayload stringBinder, + @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema) { + this.ns = ns; + this.schema = schema; + this.stringBinder = stringBinder; + } + + @Override + public <R extends HttpRequest> R bindToRequest(R request, Map<String, Object> postParams) { + checkArgument(checkNotNull(request, "request") instanceof GeneratedHttpRequest, + "this binder is only valid for GeneratedHttpRequests!"); + GeneratedHttpRequest gRequest = (GeneratedHttpRequest) request; + String name = checkNotNull(postParams.get("name"), "name").toString(); + String source = checkNotNull(postParams.get("Source"), "Source").toString(); + boolean isSourceDelete = Boolean.parseBoolean((String) postParams.get("IsSourceDelete")); + + O options = findOptionsInArgsOrNew(gRequest); + return stringBinder.bindToRequest(request, generateXml(name, source, isSourceDelete, options)); + } + + protected String generateXml(String name, String source, boolean isSourceDelete, O options) { + XMLBuilder rootBuilder = buildRoot(name, options); + addElementsUnderRoot(rootBuilder, source, options, isSourceDelete); + Properties outputProperties = new Properties(); + outputProperties.put(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes"); + try { + return rootBuilder.asString(outputProperties); + } catch (Exception e) { + throw Throwables.propagate(e); + } + } + + protected void addElementsUnderRoot(XMLBuilder rootBuilder, String source, O options, boolean isSourceDelete) { + if (options.getDescription() != null) + rootBuilder.e("Description").text(options.getDescription()); + rootBuilder.e("Source").a("href", source).a("type", getSourceMediaType()); + if (isSourceDelete) + rootBuilder.e("IsSourceDelete").t("true"); + } + + protected XMLBuilder buildRoot(String name, O options) { + try { + return XMLBuilder.create(getRootElement()).a("xmlns", ns).a("xmlns:xsi", + "http://www.w3.org/2001/XMLSchema-instance").a("xsi:schemaLocation", ns + " " + schema).a("name", + name); + } catch (Exception e) { + throw Throwables.propagate(e); + } + } + + @SuppressWarnings("unchecked") + protected O findOptionsInArgsOrNew(GeneratedHttpRequest gRequest) { + for (Object arg : gRequest.getInvocation().getArgs()) { + if (getOptionClass().isInstance(arg)) { + return (O) arg; + } else if (arg.getClass().isArray()) { + Object[] array = (Object[]) arg; + if (array.length > 0 && getOptionClass().isInstance(array[0])) + return (O) array[0]; + } + } + try { + return getOptionClass().newInstance(); + } catch (Exception e) { + throw Throwables.propagate(e); + } + } + + @Override + public <R extends HttpRequest> R bindToRequest(R request, Object input) { + throw new IllegalStateException("CloneParams is needs parameters"); + } + + protected String ifNullDefaultTo(String value, String defaultValue) { + return value != null ? value : checkNotNull(defaultValue, "defaultValue"); + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayload.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayload.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayload.java new file mode 100644 index 0000000..50c3b83 --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppParamsToXmlPayload.java @@ -0,0 +1,60 @@ +/* + * 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.binders; + +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_SCHEMA; + +import javax.inject.Named; +import javax.inject.Singleton; + +import org.jclouds.rest.binders.BindToStringPayload; +import org.jclouds.vcloud.VCloudMediaType; +import org.jclouds.vcloud.options.CloneVAppOptions; + +import com.google.inject.Inject; +import com.jamesmurty.utils.XMLBuilder; + +@Singleton +public class BindCloneVAppParamsToXmlPayload extends BindCloneParamsToXmlPayload<CloneVAppOptions> { + + @Inject + public BindCloneVAppParamsToXmlPayload(BindToStringPayload stringBinder, + @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema) { + super(stringBinder, ns, schema); + } + + @Override + protected Class<CloneVAppOptions> getOptionClass() { + return CloneVAppOptions.class; + } + + @Override + protected String getRootElement() { + return "CloneVAppParams"; + } + + @Override + protected String getSourceMediaType() { + return VCloudMediaType.VAPP_XML; + } + + protected XMLBuilder buildRoot(String name, CloneVAppOptions options) { + return super.buildRoot(name, options).a("deploy", options.isDeploy() + "").a("powerOn", options.isPowerOn() + ""); + } + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppTemplateParamsToXmlPayload.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppTemplateParamsToXmlPayload.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppTemplateParamsToXmlPayload.java new file mode 100644 index 0000000..2323c94 --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindCloneVAppTemplateParamsToXmlPayload.java @@ -0,0 +1,55 @@ +/* + * 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.binders; + +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE; +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_SCHEMA; + +import javax.inject.Named; +import javax.inject.Singleton; + +import org.jclouds.rest.binders.BindToStringPayload; +import org.jclouds.vcloud.VCloudMediaType; +import org.jclouds.vcloud.options.CloneVAppTemplateOptions; + +import com.google.inject.Inject; + +@Singleton +public class BindCloneVAppTemplateParamsToXmlPayload extends BindCloneParamsToXmlPayload<CloneVAppTemplateOptions> { + + @Inject + public BindCloneVAppTemplateParamsToXmlPayload(BindToStringPayload stringBinder, + @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns, @Named(PROPERTY_VCLOUD_XML_SCHEMA) String schema) { + super(stringBinder, schema, schema); + } + + @Override + protected Class<CloneVAppTemplateOptions> getOptionClass() { + return CloneVAppTemplateOptions.class; + } + + @Override + protected String getRootElement() { + return "CloneVAppTemplateParams"; + } + + @Override + protected String getSourceMediaType() { + return VCloudMediaType.VAPPTEMPLATE_XML; + } + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/6573fbed/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindDeployVAppParamsToXmlPayload.java ---------------------------------------------------------------------- diff --git a/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindDeployVAppParamsToXmlPayload.java b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindDeployVAppParamsToXmlPayload.java new file mode 100644 index 0000000..d376222 --- /dev/null +++ b/dependencies/jclouds/apis/vcloud/1.8.1-stratos/src/main/java/org/jclouds/vcloud/binders/BindDeployVAppParamsToXmlPayload.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.binders; + +import static org.jclouds.vcloud.reference.VCloudConstants.PROPERTY_VCLOUD_XML_NAMESPACE; + +import javax.inject.Named; +import javax.inject.Singleton; + +import org.jclouds.rest.binders.BindToStringPayload; + +import com.google.inject.Inject; + +@Singleton +public class BindDeployVAppParamsToXmlPayload extends BindParamsToXmlPayload { + + @Inject + public BindDeployVAppParamsToXmlPayload(BindToStringPayload stringBinder, + @Named(PROPERTY_VCLOUD_XML_NAMESPACE) String ns) { + super("DeployVAppParams", stringBinder, ns); + } + +}
