Updated Carrenza provider

This commit is contained in:
Andrew Donald Kennedy 2012-04-12 12:04:02 +01:00
parent 190a28ba16
commit ee9a659b7e
26 changed files with 95 additions and 90 deletions

View File

@ -42,6 +42,12 @@
<test.carrenza-vcloud-director.image-id></test.carrenza-vcloud-director.image-id>
<test.carrenza-vcloud-director.image.login-user></test.carrenza-vcloud-director.image.login-user>
<test.carrenza-vcloud-director.image.authenticate-sudo></test.carrenza-vcloud-director.image.authenticate-sudo>
<test.carrenza-vcloud-director.catalog-id></test.carrenza-vcloud-director.catalog-id>
<test.carrenza-vcloud-director.media-id></test.carrenza-vcloud-director.media-id>
<test.carrenza-vcloud-director.vapptemplate-id></test.carrenza-vcloud-director.vapptemplate-id>
<test.carrenza-vcloud-director.network-name></test.carrenza-vcloud-director.network-name>
<test.carrenza-vcloud-director.network-id></test.carrenza-vcloud-director.network-id>
<test.carrenza-vcloud-director.vdc-id></test.carrenza-vcloud-director.vdc-id>
</properties>
<dependencies>
@ -52,7 +58,7 @@
</dependency>
<dependency>
<groupId>org.jclouds.labs</groupId>
<artifactId>vcloud-director-director</artifactId>
<artifactId>vcloud-director</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
@ -110,6 +116,12 @@
<test.carrenza-vcloud-director.image-id>${test.carrenza-vcloud-director.image-id}</test.carrenza-vcloud-director.image-id>
<test.carrenza-vcloud-director.image.login-user>${test.carrenza-vcloud-director.image.login-user}</test.carrenza-vcloud-director.image.login-user>
<test.carrenza-vcloud-director.image.authenticate-sudo>${test.carrenza-vcloud-director.image.authenticate-sudo}</test.carrenza-vcloud-director.image.authenticate-sudo>
<test.carrenza-vcloud-director.catalog-id>${test.carrenza-vcloud-director.catalog-id}</test.carrenza-vcloud-director.catalog-id>
<test.carrenza-vcloud-director.media-id>${test.carrenza-vcloud-director.media-id}</test.carrenza-vcloud-director.media-id>
<test.carrenza-vcloud-director.vapptemplate-id>${test.carrenza-vcloud-director.vapptemplate-id}</test.carrenza-vcloud-director.vapptemplate-id>
<test.carrenza-vcloud-director.network-id>${test.carrenza-vcloud-director.network-id}</test.carrenza-vcloud-director.network-id>
<test.carrenza-vcloud-director.vdc-id>${test.carrenza-vcloud-director.vdc-id}</test.carrenza-vcloud-director.vdc-id>
<test.carrenza-vcloud-director.user-id>${test.carrenza-vcloud-director.user-id}</test.carrenza-vcloud-director.user-id>
</systemPropertyVariables>
</configuration>
</execution>
@ -128,7 +140,7 @@
<configuration>
<instructions>
<Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Export-Package>org.jclouds.carrenza.vcloud-director*;version="${project.version}"</Export-Package>
<Export-Package>org.jclouds.carrenza.vcloud.director*;version="${project.version}"</Export-Package>
<Import-Package>
org.jclouds.compute.internal;version="${project.version}",
org.jclouds.rest.internal;version="${project.version}",

View File

@ -19,6 +19,7 @@
package org.jclouds.carrenza.vcloud.director;
import static org.jclouds.Constants.PROPERTY_BUILD_VERSION;
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorConstants.*;
import java.net.URI;
import java.util.Properties;
@ -33,9 +34,10 @@ import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import com.google.common.reflect.TypeToken;
/**
* Implementation of {@link org.jclouds.types.ProviderMetadata} for StratoGen VMware hosting
* Implementation of {@link org.jclouds.types.ProviderMetadata} for Carrenza vCloud hosting
*
* @author Adrian Cole
* @author grkvlt@apache.org
*/
public class CarrenzaVCloudDirectorProviderMetadata
extends
@ -60,19 +62,20 @@ public class CarrenzaVCloudDirectorProviderMetadata
protected static Properties defaultProperties() {
Properties properties = new Properties();
properties.setProperty(PROPERTY_BUILD_VERSION, "???"); //FIXME
// properties.setProperty(PROPERTY_VCLOUD_DEFAULT_NETWORK, "orgNet-.*-External"); FIXME: needed?
properties.setProperty(PROPERTY_BUILD_VERSION, "1.5.0.464915");
properties.setProperty(PROPERTY_VCLOUD_DIRECTOR_DEFAULT_NETWORK, "orgNet-.*-External");
return properties;
}
public static class Builder extends BaseProviderMetadata.Builder<VCloudDirectorClient, VCloudDirectorAsyncClient, VCloudDirectorContext, VCloudDirectorApiMetadata> {
protected Builder(){
protected Builder() {
id("carrenza-vcloud-director")
.name("Carrenza vCloud Director")
.apiMetadata(new VCloudDirectorApiMetadata().toBuilder()
.buildVersion("1.5.0.464915")
.contextBuilder(TypeToken.of(CarrenzaVCloudDirectorContextBuilder.class)).build())
.contextBuilder(TypeToken.of(CarrenzaVCloudDirectorContextBuilder.class))
.build())
.homepage(URI.create("http://carrenza.com/"))
.console(URI.create("https://myvdc.carrenza.net/cloud/org/YOUR_ORG_HERE"))
.iso3166Codes("GB-LND")

View File

@ -1 +1 @@
org.jclouds.carrenza.element.vcloud.CarrenzaElementVCloudProviderMetadata
org.jclouds.carrenza.vcloud.director.CarrenzaVCloudDirectorProviderMetadata

View File

@ -22,14 +22,15 @@ import org.jclouds.vcloud.director.v1_5.HttpClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorNonClientOperationsLiveTest")
public class CarrenzaVCloudDirectorNonClientOperationsLiveTest extends HttpClientLiveTest {
@Test(groups = { "live", "user" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorHttpClientLiveTest")
public class CarrenzaVCloudDirectorHttpClientLiveTest extends HttpClientLiveTest {
public CarrenzaVCloudDirectorNonClientOperationsLiveTest() {
public CarrenzaVCloudDirectorHttpClientLiveTest() {
provider = "carrenza-vcloud-director";
}
}

View File

@ -21,11 +21,12 @@ package org.jclouds.carrenza.vcloud.director.compute;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorComputeServiceLiveTest")
@Test(groups = { "live", "compute" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorComputeServiceLiveTest")
public class CarrenzaVCloudDirectorComputeServiceLiveTest { // FIXME: enable when compute service done
// extends VCloudDirectorComputeServiceLiveTest {
//

View File

@ -21,45 +21,16 @@ package org.jclouds.carrenza.vcloud.director.compute;
import org.testng.annotations.Test;
/**
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", testName = "CarrenzaVCloudDirectorTemplateBuilderLiveTest")
@Test(groups = { "live", "compute" }, testName = "CarrenzaVCloudDirectorTemplateBuilderLiveTest")
public class CarrenzaVCloudDirectorTemplateBuilderLiveTest {
// BaseTemplateBuilderLiveTest<VCloudDirectorClient, VCloudDirectorAsyncClient, VCloudDirectorContext> {
//
// public CarrenzaVCloudDirectorTemplateBuilderLiveTest() {
// provider = "carrenza-vcloud-director";
// }
//
// @Override
// protected Predicate<OsFamilyVersion64Bit> defineUnsupportedOperatingSystems() {
// return new Predicate<OsFamilyVersion64Bit>() {
//
// @Override
// public boolean apply(OsFamilyVersion64Bit input) {
// switch (input.family) {
// case UBUNTU:
// return !input.version.equals("") || !input.is64Bit;
// default:
// return true;
// }
// }
//
// };
// }
//
// @Override
// public void testDefaultTemplateBuilder() throws IOException {
// Template defaultTemplate = context.getComputeService().templateBuilder().build();
// assertEquals(defaultTemplate.getImage().getOperatingSystem().getVersion(), "");
// assertEquals(defaultTemplate.getImage().getOperatingSystem().is64Bit(), true);
// assertEquals(defaultTemplate.getImage().getOperatingSystem().getFamily(), OsFamily.UBUNTU);
// assertEquals(getCores(defaultTemplate.getHardware()), 1.0d);
// }
//
// @Override
// protected Set<String> getIso3166Codes() {
// return ImmutableSet.<String> of("GB-LND");
// }
}

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.CatalogClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorCatalogClientLiveTest")
@Test(groups = { "live", "user" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorCatalogClientLiveTest")
public class CarrenzaVCloudDirectorCatalogClientLiveTest extends CatalogClientLiveTest {
public CarrenzaVCloudDirectorCatalogClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.MediaClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorMediaClientLiveTest")
@Test(groups = { "live", "user" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorMediaClientLiveTest")
public class CarrenzaVCloudDirectorMediaClientLiveTest extends MediaClientLiveTest {
public CarrenzaVCloudDirectorMediaClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.NetworkClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorNetworkClientLiveTest")
@Test(groups = { "live", "user" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorNetworkClientLiveTest")
public class CarrenzaVCloudDirectorNetworkClientLiveTest extends NetworkClientLiveTest {
public CarrenzaVCloudDirectorNetworkClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.OrgClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorOrgClientLiveTest")
@Test(groups = { "live", "user" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorOrgClientLiveTest")
public class CarrenzaVCloudDirectorOrgClientLiveTest extends OrgClientLiveTest {
public CarrenzaVCloudDirectorOrgClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.QueryClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorQueryClientLiveTest")
@Test(groups = { "live", "user" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorQueryClientLiveTest")
public class CarrenzaVCloudDirectorQueryClientLiveTest extends QueryClientLiveTest {
public CarrenzaVCloudDirectorQueryClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.TaskClientLiveTest;
import org.testng.annotations.Test;
/**
* {@inheritDoc}
*
*
* @author Adrian Cole
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorTaskClientLiveTest")
@Test(groups = { "live", "user" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorTaskClientLiveTest")
public class CarrenzaVCloudDirectorTaskClientLiveTest extends TaskClientLiveTest {
public CarrenzaVCloudDirectorTaskClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.UploadClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorUploadClientLiveTest")
@Test(groups = { "live", "user" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorUploadClientLiveTest")
public class CarrenzaVCloudDirectorUploadClientLiveTest extends UploadClientLiveTest {
public CarrenzaVCloudDirectorUploadClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.VAppClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorVAppClientLiveTest")
@Test(groups = { "live", "user" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorVAppClientLiveTest")
public class CarrenzaVCloudDirectorVAppClientLiveTest extends VAppClientLiveTest {
public CarrenzaVCloudDirectorVAppClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.VAppTemplateClientLiveTest;
import org.testng.annotations.Test;
/**
* {@inheritDoc}
*
*
* @author Adrian Cole
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorVAppTemplateClientLiveTest")
@Test(groups = { "live", "user" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorVAppTemplateClientLiveTest")
public class CarrenzaVCloudDirectorVAppTemplateClientLiveTest extends VAppTemplateClientLiveTest {
public CarrenzaVCloudDirectorVAppTemplateClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.VdcClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorVDCClientLiveTest")
@Test(groups = { "live", "user" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorVDCClientLiveTest")
public class CarrenzaVCloudDirectorVdcClientLiveTest extends VdcClientLiveTest {
public CarrenzaVCloudDirectorVdcClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.admin.AdminCatalogClientLiveTes
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorAdminCatalogClientLiveTest")
@Test(groups = { "live", "admin" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorAdminCatalogClientLiveTest")
public class CarrenzaVCloudDirectorAdminCatalogClientLiveTest extends AdminCatalogClientLiveTest {
public CarrenzaVCloudDirectorAdminCatalogClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.admin.AdminNetworkClientLiveTes
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorAdminNetworkClientLiveTest")
@Test(groups = { "live", "admin" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorAdminNetworkClientLiveTest")
public class CarrenzaVCloudDirectorAdminNetworkClientLiveTest extends AdminNetworkClientLiveTest {
public CarrenzaVCloudDirectorAdminNetworkClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.admin.AdminOrgClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorOrgClientLiveTest")
@Test(groups = { "live", "admin" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorOrgClientLiveTest")
public class CarrenzaVCloudDirectorAdminOrgClientLiveTest extends AdminOrgClientLiveTest {
public CarrenzaVCloudDirectorAdminOrgClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.admin.AdminQueryClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorAdminQueryClientLiveTest")
@Test(groups = { "live", "admin" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorAdminQueryClientLiveTest")
public class CarrenzaVCloudDirectorAdminQueryClientLiveTest extends AdminQueryClientLiveTest {
public CarrenzaVCloudDirectorAdminQueryClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.admin.AdminVdcClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorAdminVdcClientLiveTest")
@Test(groups = { "live", "admin" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorAdminVdcClientLiveTest")
public class CarrenzaVCloudDirectorAdminVdcClientLiveTest extends AdminVdcClientLiveTest {
public CarrenzaVCloudDirectorAdminVdcClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.admin.GroupClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorGroupClientLiveTest")
@Test(groups = { "live", "admin" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorGroupClientLiveTest")
public class CarrenzaVCloudDirectorGroupClientLiveTest extends GroupClientLiveTest {
public CarrenzaVCloudDirectorGroupClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.features.admin.UserClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorUserClientLiveTest")
@Test(groups = { "live", "admin" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorUserClientLiveTest")
public class CarrenzaVCloudDirectorUserClientLiveTest extends UserClientLiveTest {
public CarrenzaVCloudDirectorUserClientLiveTest() {

View File

@ -22,11 +22,12 @@ import org.jclouds.vcloud.director.v1_5.login.SessionClientLiveTest;
import org.testng.annotations.Test;
/**
*
* {@inheritDoc}
*
* @author danikov
* @author grkvlt
*/
@Test(groups = "live", enabled = true, singleThreaded = true, testName = "CarrenzaVCloudDirectorSessionClientLiveTest")
@Test(groups = { "live", "user" }, singleThreaded = true, testName = "CarrenzaVCloudDirectorSessionClientLiveTest")
public class CarrenzaVCloudDirectorSessionClientLiveTest extends SessionClientLiveTest {
public CarrenzaVCloudDirectorSessionClientLiveTest() {

View File

@ -40,5 +40,6 @@
<module>aws-elb</module>
<module>savvis-symphonyvpdc</module>
<module>dmtf</module>
<module>carrenza-vcloud-director</module>
</modules>
</project>

View File

@ -29,7 +29,7 @@
</parent>
<groupId>org.jclouds.labs</groupId>
<artifactId>vcloud-director</artifactId>
<name>jcloud vcloud-director api</name>
<name>jclouds vcloud-director api</name>
<description>jclouds components to access an implementation of VMware vCloud Director 1.5+</description>
<packaging>bundle</packaging>
@ -42,13 +42,12 @@
<test.vcloud-director.image-id></test.vcloud-director.image-id>
<test.vcloud-director.image.login-user></test.vcloud-director.image.login-user>
<test.vcloud-director.image.authenticate-sudo></test.vcloud-director.image.authenticate-sudo>
<test.vcloud-director.catalog-name>Public</test.vcloud-director.catalog-name>
<test.vcloud-director.catalog-id></test.vcloud-director.catalog-id>
<test.vcloud-director.media-id></test.vcloud-director.media-id>
<test.vcloud-director.vapptemplate-id></test.vcloud-director.vapptemplate-id>
<test.vcloud-director.network-name></test.vcloud-director.network-name>
<test.vcloud-director.network-id></test.vcloud-director.network-id>
<test.vcloud-director.vdc-id></test.vcloud-director.vdc-id>
<test.vcloud-director.user-id></test.vcloud-director.user-id>
</properties>
<dependencies>
@ -122,12 +121,11 @@
<test.vcloud-director.image.login-user>${test.vcloud-director.image.login-user}</test.vcloud-director.image.login-user>
<test.vcloud-director.image.authenticate-sudo>${test.vcloud-director.image.authenticate-sudo}</test.vcloud-director.image.authenticate-sudo>
<test.vcloud-director.catalog-id>${test.vcloud-director.catalog-id}</test.vcloud-director.catalog-id>
<test.vcloud-director.catalog-name>${test.vcloud-director.catalog-name}</test.vcloud-director.catalog-name>
<test.vcloud-director.media-id>${test.vcloud-director.media-id}</test.vcloud-director.media-id>
<test.vcloud-director.vapptemplate-id>${test.vcloud-director.vapptemplate-id}</test.vcloud-director.vapptemplate-id>
<test.vcloud-director.network-name>${test.vcloud-director.network-name}</test.vcloud-director.network-name>
<test.vcloud-director.network-id>${test.vcloud-director.network-id}</test.vcloud-director.network-id>
<test.vcloud-director.vdc-id>${test.vcloud-director.vdc-id}</test.vcloud-director.vdc-id>
<test.vcloud-director.user-id>${test.vcloud-director.user-id}</test.vcloud-director.user-id>
</systemPropertyVariables>
</configuration>
</execution>