http://git-wip-us.apache.org/repos/asf/stratos/blob/66f92f79/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java index 354e9c9..0067d37 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java @@ -22,8 +22,15 @@ package org.apache.stratos.rest.endpoint.bean.util.converter; import org.apache.commons.logging.LogFactory; import org.apache.commons.lang.StringUtils; import org.apache.stratos.cloud.controller.stub.pojo.*; +import org.apache.stratos.cloud.controller.stub.pojo.application.*; +import org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition; +import org.apache.stratos.manager.composite.application.beans.GroupDefinition; +import org.apache.stratos.manager.composite.application.beans.SubscribableDefinition; +import org.apache.stratos.manager.composite.application.beans.SubscribableInfo; import org.apache.stratos.manager.deploy.service.Service; +import org.apache.stratos.manager.grouping.definitions.DependencyDefinitions; import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition; +import org.apache.stratos.manager.grouping.definitions.StartupOrderDefinition; import org.apache.stratos.manager.subscription.SubscriptionDomain; import org.apache.stratos.messaging.domain.topology.Cluster; import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.Partition; @@ -664,6 +671,127 @@ public class PojoConverter { } private static Log log = LogFactory.getLog(PojoConverter.class); + + public static ApplicationContext convertApplicationBeanToApplicationContext (CompositeAppDefinition compositeAppDefinition) { + + ApplicationContext applicationContext = new ApplicationContext(); + applicationContext.setApplicationId(compositeAppDefinition.getApplicationId()); + applicationContext.setAlias(compositeAppDefinition.getAlias()); + + // convert and set components + if (compositeAppDefinition.getComponents() != null) { + ComponentContext componentContext = new ComponentContext(); + // top level subscribables + if (compositeAppDefinition.getComponents().getSubscribables() != null) { + componentContext.setSubscribableContexts(getSubscribableContextArrayFromSubscribableDefinitions( + compositeAppDefinition.getComponents().getSubscribables())); + } + // top level Groups + if (compositeAppDefinition.getComponents().getGroups() != null) { + componentContext.setGroupContexts(getgroupContextArrayFromGroupDefinitions(compositeAppDefinition.getComponents().getGroups())); + } + // top level dependency information + if (compositeAppDefinition.getComponents().getDependencies() != null) { + componentContext.setDependencyContext(getDependencyContextFromDependencyDefinition(compositeAppDefinition.getComponents().getDependencies())); + } + + applicationContext.setComponents(componentContext); + } + + // subscribable information + applicationContext.setSubscribableInfoContext(getSubscribableInfoContextArrFromSubscribableInfoDefinition(compositeAppDefinition.getSubscribableInfo())); + + return applicationContext; + } + + private static SubscribableInfoContext[] getSubscribableInfoContextArrFromSubscribableInfoDefinition (List<SubscribableInfo> subscribableInfos) { + + SubscribableInfoContext[] subscribableInfoContexts = new SubscribableInfoContext[subscribableInfos.size()]; + int i = 0; + for (SubscribableInfo subscribableInfo : subscribableInfos) { + SubscribableInfoContext subscribableInfoContext = new SubscribableInfoContext(); + subscribableInfoContext.setAlias(subscribableInfo.getAlias()); + subscribableInfoContext.setAutoscalingPolicy(subscribableInfo.getAutoscalingPolicy()); + subscribableInfoContext.setDeploymentPolicy(subscribableInfo.getDeploymentPolicy()); + subscribableInfoContext.setRepoUrl(subscribableInfo.getRepoUrl()); + subscribableInfoContext.setPrivateRepo(subscribableInfo.isPrivateRepo()); + subscribableInfoContext.setRepoUsername(subscribableInfo.getRepoUsername()); + subscribableInfoContext.setRepoPassword(subscribableInfo.getRepoPassword()); + subscribableInfoContexts[i++] = subscribableInfoContext; + } + + return subscribableInfoContexts; + } + + private static DependencyContext getDependencyContextFromDependencyDefinition (DependencyDefinitions dependencyDefinitions) { + + DependencyContext dependencyContext = new DependencyContext(); + dependencyContext.setKillBehaviour(dependencyDefinitions.getKillBehaviour()); + if (dependencyDefinitions.getStartupOrder() != null) { + dependencyContext.setStartupOrderContext(getStartupOrderContextArrFromStartupDefinition(dependencyDefinitions.getStartupOrder())); + } + + return dependencyContext; + } + + private static StartupOrderContext[] getStartupOrderContextArrFromStartupDefinition (List<StartupOrderDefinition> startupOrderDefinitions) { + + StartupOrderContext[] startupOrderContexts = new StartupOrderContext[startupOrderDefinitions.size()]; + int i = 0; + for (StartupOrderDefinition startupOrderDefinition : startupOrderDefinitions) { + StartupOrderContext startupOrderContext = new StartupOrderContext(); + startupOrderContext.setStart(startupOrderDefinition.getStart()); + startupOrderContext.setAfter(startupOrderDefinition.getAfter()); + startupOrderContexts[i++] = startupOrderContext; + } + + return startupOrderContexts; + } + + private static GroupContext[] getgroupContextArrayFromGroupDefinitions (List<GroupDefinition> groupDefinitions) { + + GroupContext[] groupContexts = new GroupContext[groupDefinitions.size()]; + int i = 0; + for (GroupDefinition groupDefinition : groupDefinitions) { + GroupContext groupContext = new GroupContext(); + groupContext.setName(groupDefinition.getName()); + groupContext.setAlias(groupDefinition.getAlias()); + groupContext.setDeploymentPolicy(groupDefinition.getDeploymentPolicy()); + groupContext.setAutoscalingPolicy(groupDefinition.getAutoscalingPolicy()); + // nested Subscribables + if (groupDefinition.getSubscribables() != null) { + groupContext.setSubscribableContexts(getSubscribableContextArrayFromSubscribableDefinitions(groupDefinition.getSubscribables())); + } + // nested Groups + if (groupDefinition.getSubGroups() != null) { + groupContext.setGroupContexts(getgroupContextArrayFromGroupDefinitions(groupDefinition.getSubGroups())); + } + groupContexts[i++] = groupContext; + } + + return groupContexts; + } + + private static SubscribableContext [] getSubscribableContextArrayFromSubscribableDefinitions(List<SubscribableDefinition> subscribableDefinitions) { + + SubscribableContext[] subscribableContexts = new SubscribableContext[subscribableDefinitions.size()]; + int i = 0; + for (SubscribableDefinition subscribableDefinition : subscribableDefinitions) { + SubscribableContext subscribableContext = new SubscribableContext(); + subscribableContext.setType(subscribableDefinition.getType()); + subscribableContext.setAlias(subscribableDefinition.getAlias()); + subscribableContexts[i++] = subscribableContext; + } + + return subscribableContexts; + } + + private static SubscribableContext getSubscribableContextFromSubscribableDefinition (SubscribableDefinition subscribableDefinition) { + + SubscribableContext subscribableContext = new SubscribableContext(); + subscribableContext.setType(subscribableDefinition.getType()); + return subscribableContext; + } /* public static ConfigCompositeApplication convertToCompositeApplication(CompositeApplicationDefinitionBean appBean) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/66f92f79/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java index 10d4865..69d09e0 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java @@ -24,14 +24,10 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy; -import org.apache.stratos.cloud.controller.stub.CloudControllerServiceUnregisteredCartridgeExceptionException; -import org.apache.stratos.cloud.controller.stub.pojo.CompositeApplicationDefinition; +import org.apache.stratos.cloud.controller.stub.pojo.application.ApplicationContext; +import org.apache.stratos.cloud.controller.stub.*; import org.apache.stratos.autoscaler.stub.AutoScalerServiceInvalidPartitionExceptionException; import org.apache.stratos.autoscaler.stub.AutoScalerServiceInvalidPolicyExceptionException; -import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeDefinitionExceptionException; -import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCartridgeTypeExceptionException; -import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidCompositeApplicationDefinitionExceptionException; -import org.apache.stratos.cloud.controller.stub.CloudControllerServiceInvalidIaasProviderExceptionException; import org.apache.stratos.cloud.controller.stub.pojo.CartridgeConfig; import org.apache.stratos.cloud.controller.stub.pojo.CartridgeInfo; import org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition; @@ -51,7 +47,6 @@ import org.apache.stratos.manager.repository.RepositoryNotification; import org.apache.stratos.manager.subscription.CartridgeSubscription; import org.apache.stratos.manager.subscription.DataCartridgeSubscription; import org.apache.stratos.manager.subscription.SubscriptionData; -import org.apache.stratos.manager.subscription.SubscriptionDomain; import org.apache.stratos.manager.topology.model.TopologyClusterInformationModel; import org.apache.stratos.manager.utils.ApplicationManagementUtil; import org.apache.stratos.manager.utils.CartridgeConstants; @@ -61,7 +56,6 @@ import org.apache.stratos.messaging.domain.topology.MemberStatus; import org.apache.stratos.messaging.message.receiver.topology.TopologyManager; import org.apache.stratos.messaging.util.Constants; import org.apache.stratos.rest.endpoint.bean.CartridgeInfoBean; -import org.apache.stratos.rest.endpoint.bean.StratosAdminResponse; import org.apache.stratos.rest.endpoint.bean.SubscriptionDomainRequest; import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.Partition; import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.PartitionGroup; @@ -73,7 +67,6 @@ import org.apache.stratos.rest.endpoint.bean.repositoryNotificationInfoBean.Payl import org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean; import org.apache.stratos.rest.endpoint.bean.util.converter.PojoConverter; import org.apache.stratos.rest.endpoint.exception.RestAPIException; -import org.apache.stratos.cloud.controller.stub.pojo.*; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; @@ -199,7 +192,7 @@ public class ServiceUtils { log.debug("deployeing composite app in cloud controller"); } - ServiceUtils.deployCompositeApplicationDefinition(applicationDefinitionBean, ctxt, userName, tenantDomain); + ServiceUtils.deployApplicationDefinition(applicationDefinitionBean, ctxt, userName, tenantDomain); if (log.isDebugEnabled()) { log.debug("done deployeing composite app in cloud controller"); @@ -210,7 +203,7 @@ public class ServiceUtils { return stratosAdminResponse; } */ /* - static StratosAdminResponse deployCompositeApplicationDefinition (CompositeApplicationDefinitionBean compositeApplicationDefinition, ConfigurationContext ctxt, + static StratosAdminResponse deployApplicationDefinition (CompositeApplicationDefinitionBean compositeApplicationDefinition, ConfigurationContext ctxt, String userName, String tenantDomain) throws RestAPIException { log.info("Starting to deploy composite application definition "+ compositeApplicationDefinition); @@ -223,7 +216,7 @@ public class ServiceUtils { if (cloudControllerServiceClient != null) { // call CC try { - cloudControllerServiceClient.deployCompositeApplicationDefinition(appConfig); + cloudControllerServiceClient.deployApplicationDefinition(appConfig); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); @@ -256,17 +249,32 @@ public class ServiceUtils { static void deployCompositeApplicationDefintion (CompositeAppDefinition compositeAppDefinition, ConfigurationContext ctxt, String userName, String tenantDomain) throws RestAPIException { - - int tenantId = ApplicationManagementUtil.getTenantId(ctxt); +// +// int tenantId = ApplicationManagementUtil.getTenantId(ctxt); +// +// try { +// compositeApplicationManager.deployCompositeApplication(compositeAppDefinition, tenantId, tenantDomain, userName); +// +// } catch (CompositeApplicationDefinitionException e) { +// throw new RestAPIException(e); +// } catch (PersistenceManagerException e) { +// throw new RestAPIException(e); +// } catch (CompositeApplicationException e) { +// throw new RestAPIException(e); +// } + + ApplicationContext applicationContext = PojoConverter.convertApplicationBeanToApplicationContext(compositeAppDefinition); try { - compositeApplicationManager.deployCompositeApplication(compositeAppDefinition, tenantId, tenantDomain, userName); + CloudControllerServiceClient.getServiceClient().deployApplicationDefinition(applicationContext); - } catch (CompositeApplicationDefinitionException e) { + } catch (RemoteException e) { + throw new RestAPIException(e); + } catch (CloudControllerServiceInvalidCompositeApplicationDefinitionExceptionException e) { throw new RestAPIException(e); - } catch (PersistenceManagerException e) { + } catch (CloudControllerServiceInvalidIaasProviderExceptionException e) { throw new RestAPIException(e); - } catch (CompositeApplicationException e) { + } catch (CloudControllerServiceApplicationDefinitionExceptionException e) { throw new RestAPIException(e); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/66f92f79/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java index 5c86c50..e9ed346 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java @@ -133,7 +133,7 @@ public class StratosAdmin extends AbstractAdmin { public StratosAdminResponse deployApplicationDefinition(CompositeApplicationDefinitionBean applicationDefinitionBean) throws RestAPIException { - return ServiceUtils.deployCompositeApplicationDefinition(applicationDefinitionBean, getConfigContext(), getUsername(), + return ServiceUtils.deployApplicationDefinition(applicationDefinitionBean, getConfigContext(), getUsername(), getTenantDomain()); } http://git-wip-us.apache.org/repos/asf/stratos/blob/66f92f79/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml index ac758b7..c7d5009 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml +++ b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/cxf-servlet.xml @@ -33,11 +33,11 @@ </jaxrs:serviceBeans> <jaxrs:providers> - <ref bean="throwableExceptionHandler"/> - <ref bean="genericExceptionHandler"/> + <!--ref bean="throwableExceptionHandler"/> + <ref bean="genericExceptionHandler"/--> <ref bean="badRequestExceptionHandler"/> <ref bean="jsonProvider"/> - <ref bean="exceptionHandler"/> + <!--ref bean="exceptionHandler"/--> <ref bean="basicAuthenticationFilter"/> <ref bean="sessionAuthenticationFilter"/> <ref bean="authorizationFilter"/> @@ -61,7 +61,7 @@ <property name="oauthValidationEndpoint" value="https://localhost:9443/services/"/> </bean> <bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider"> - <property name="schemaHandler" ref="schemaHolder"/> + <!--property name="schemaHandler" ref="schemaHolder"/--> <property name="supportUnwrapped" value="true"/> <property name="serializeAsArray" value="true"/> <property name="arrayKeys"> http://git-wip-us.apache.org/repos/asf/stratos/blob/66f92f79/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml ---------------------------------------------------------------------- diff --git a/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml b/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml index 23efdf6..45e61e9 100644 --- a/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml +++ b/features/cloud-controller/org.apache.stratos.cloud.controller.feature/pom.xml @@ -200,6 +200,11 @@ <artifactId>andes-client</artifactId> <version>0.13.wso2v8</version> </dependency> + <dependency> + <groupId>com.jcraft</groupId> + <artifactId>jsch.agentproxy.usocket-nc</artifactId> + <version>0.0.7</version> + </dependency> </dependencies> <build> @@ -276,7 +281,7 @@ </bundleDef> <bundleDef>com.jcraft:jsch.agentproxy.connector-factory:0.0.7</bundleDef> <bundleDef>com.jcraft:jsch.agentproxy.sshagent:0.0.7</bundleDef> - <bundleDef>com.jcraft:jsch.agentproxy.usocket-jna:0.0.7</bundleDef> + <bundleDef>com.jcraft:jsch.agentproxy.usocket-nc:0.0.7</bundleDef> <bundleDef>com.jcraft:jsch.agentproxy.core:0.0.7</bundleDef> <bundleDef>net.java.dev.jna:jna:4.1.0</bundleDef> <bundleDef> http://git-wip-us.apache.org/repos/asf/stratos/blob/66f92f79/service-stubs/org.apache.stratos.cloud.controller.service.stub/pom.xml ---------------------------------------------------------------------- diff --git a/service-stubs/org.apache.stratos.cloud.controller.service.stub/pom.xml b/service-stubs/org.apache.stratos.cloud.controller.service.stub/pom.xml index e527dd4..7aff966 100644 --- a/service-stubs/org.apache.stratos.cloud.controller.service.stub/pom.xml +++ b/service-stubs/org.apache.stratos.cloud.controller.service.stub/pom.xml @@ -46,7 +46,7 @@ <configuration> <tasks> <java classname="org.apache.axis2.wsdl.WSDL2Java" fork="true"> - <arg line="-uri src/main/resources/CloudControllerService.wsdl -u -uw -o target/generated-code -p org.apache.stratos.cloud.controller.stub -ns2p http://policy.deployment.controller.cloud.stratos.apache.org/xsd=org.apache.stratos.cloud.controller.stub.deployment.policy,http://partition.deployment.controller.cloud.stratos.apache.org/xsd=org.apache.stratos.cloud.controller.stub.deployment.partition,http://exception.controller.cloud.stratos.apache.org/xsd=org.apache.stratos.cloud.controller.stub.exception,http://pojo.controller.cloud.stratos.apache.org/xsd=org.apache.stratos.cloud.controller.stub.pojo,http://impl.controller.cloud.stratos.apache.org=org.apache.stratos.cloud.controller.stub.impl" /> + <arg line="-uri src/main/resources/CloudControllerService.wsdl -u -uw -o target/generated-code -p org.apache.stratos.cloud.controller.stub -ns2p http://policy.deployment.controller.cloud.stratos.apache.org/xsd=org.apache.stratos.cloud.controller.stub.deployment.policy,http://partition.deployment.controller.cloud.stratos.apache.org/xsd=org.apache.stratos.cloud.controller.stub.deployment.partition,http://exception.controller.cloud.stratos.apache.org/xsd=org.apache.stratos.cloud.controller.stub.exception,http://pojo.controller.cloud.stratos.apache.org/xsd=org.apache.stratos.cloud.controller.stub.pojo,,http://application.pojo.controller.cloud.stratos.apache.org/xsd=org.apache.stratos.cloud.controller.stub.pojo.application,http://impl.controller.cloud.stratos.apache.org=org.apache.stratos.cloud.controller.stub.impl" /> <classpath refid="maven.dependency.classpath" /> <classpath refid="maven.compile.classpath" /> <classpath refid="maven.runtime.classpath" /> @@ -89,6 +89,7 @@ org.apache.stratos.cloud.controller.stub.exception.*; version=${project.version}, org.apache.stratos.cloud.controller.stub.deployment.partition.*; version=${project.version}, org.apache.stratos.cloud.controller.stub.pojo.*; version=${project.version}, + org.apache.stratos.cloud.controller.stub.pojo.application.*; version=${project.version}, org.apache.stratos.cloud.controller.stub.impl.*; version=${project.version}, org.apache.stratos.cloud.controller.stub.*; version=${project.version} </Export-Package>
