Repository: stratos Updated Branches: refs/heads/4.0.0-grouping 04fa25e6e -> 8db36808b
fixing STRATOS-805 and implementing a dumb application undeploy method Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/8db36808 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/8db36808 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/8db36808 Branch: refs/heads/4.0.0-grouping Commit: 8db36808bd82dc08da00464e86a33d927a4e954d Parents: 04fa25e Author: Isuru Haththotuwa <[email protected]> Authored: Thu Sep 18 14:06:32 2014 +0530 Committer: Isuru Haththotuwa <[email protected]> Committed: Thu Sep 18 14:06:32 2014 +0530 ---------------------------------------------------------------------- .../impl/CloudControllerServiceImpl.java | 6 + .../interfaces/CloudControllerService.java | 10 +- .../controller/topology/TopologyBuilder.java | 50 ++++++- .../topology/TopologyEventPublisher.java | 10 ++ .../client/CloudControllerServiceClient.java | 7 +- .../messaging/domain/topology/Application.java | 4 + .../domain/topology/DependencyOrder.java | 3 +- .../messaging/domain/topology/Group.java | 4 + .../domain/topology/ParentBehavior.java | 2 + .../messaging/domain/topology/StartupOrder.java | 4 +- .../messaging/domain/topology/Topology.java | 4 + .../ApplicationCreatedMessageProcessor.java | 7 +- .../topology/ClusterActivatedProcessor.java | 7 +- .../topology/GroupActivatedProcessor.java | 7 +- .../rest/endpoint/services/ServiceUtils.java | 47 ++---- .../rest/endpoint/services/StratosAdmin.java | 8 +- .../main/resources/CloudControllerService.wsdl | 150 ++++++++++++------- 17 files changed, 216 insertions(+), 114 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java index 4d20c82..f9dc925 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java @@ -1432,6 +1432,12 @@ public class CloudControllerServiceImpl implements CloudControllerService { TopologyBuilder.handleApplicationDeployed(applicationDataHolder); } + @Override + public void unDeployApplicationDefinition(String applicationId) throws ApplicationDefinitionException { + + TopologyBuilder.handleApplicationUndeployed(applicationId); + } + private List<ConfigCompositeApplication> restoreConfigCompositeApplication () { List<ConfigCompositeApplication> apps = this.dataHolder.getConfigCompositeApplication(); if (apps == null) { http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java index ff36c83..be98bf1 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/interfaces/CloudControllerService.java @@ -169,11 +169,19 @@ public interface CloudControllerService { public ClusterContext getClusterContext (String clusterId); /** - * deployed an Application Definition + * deploys an Application Definition * * @param applicationContext {@link org.apache.stratos.cloud.controller.pojo.application.ApplicationContext} object * @throws ApplicationDefinitionException if an error is encountered */ public void deployApplicationDefinition (ApplicationContext applicationContext) throws ApplicationDefinitionException; + /** + * undeploys an Application Definition + * + * @param applicationId Id of the Application to be undeployed + * @throws ApplicationDefinitionException if an error is encountered + */ + public void unDeployApplicationDefinition (String applicationId) throws ApplicationDefinitionException; + } http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java index 2b827be..55b9d2c 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java @@ -22,10 +22,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.stratos.cloud.controller.exception.InvalidCartridgeTypeException; import org.apache.stratos.cloud.controller.exception.InvalidMemberException; -import org.apache.stratos.cloud.controller.impl.CloudControllerServiceImpl; import org.apache.stratos.cloud.controller.pojo.Cartridge; import org.apache.stratos.cloud.controller.pojo.ClusterContext; -import org.apache.stratos.cloud.controller.pojo.CompositeApplicationDefinition; import org.apache.stratos.cloud.controller.pojo.PortMapping; import org.apache.stratos.cloud.controller.pojo.Registrant; import org.apache.stratos.cloud.controller.pojo.*; @@ -41,10 +39,8 @@ import org.apache.stratos.messaging.event.instance.status.InstanceStartedEvent; import org.apache.stratos.messaging.event.topology.MemberActivatedEvent; import org.apache.stratos.messaging.event.topology.MemberMaintenanceModeEvent; import org.apache.stratos.messaging.event.topology.MemberReadyToShutdownEvent; -import org.apache.stratos.messaging.util.Util; import org.apache.stratos.messaging.util.Constants; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Properties; @@ -626,10 +622,19 @@ public class TopologyBuilder { for (Cluster cluster : applicationDataHolder.getClusters()) { String cartridgeType = cluster.getServiceName(); - topology.getService(cartridgeType).addCluster(cluster); - log.info("Added Cluster " + cluster.toString() + " to Topology for Application with id: " + applicationDataHolder.getApplication().getId()); + Service service = topology.getService(cartridgeType); + if (service != null) { + topology.getService(cartridgeType).addCluster(cluster); + log.info("Added Cluster " + cluster.toString() + " to Topology for Application with id: " + applicationDataHolder.getApplication().getId()); + } else { + log.error("Service " + cartridgeType + " not found"); + return; + } } + // add to Topology and update + topology.addApplication(applicationDataHolder.getApplication()); TopologyManager.updateTopology(topology); + log.info("Application with id [ " + applicationDataHolder.getApplication().getId() + " ] added to Topology successfully"); TopologyEventPublisher.sendApplicationCreatedEvent(applicationDataHolder.getApplication()); @@ -638,6 +643,39 @@ public class TopologyBuilder { } } + public static void handleApplicationUndeployed (String applicationId) { + + Topology topology = TopologyManager.getTopology(); + + try { + TopologyManager.acquireWriteLock(); + + if (!topology.applicationExists(applicationId)) { + log.warn("Application with id [ " + applicationId + " ] doesn't exist in Topology"); + + } else { + Application application = topology.getApplication(applicationId); + // remove clusters + for (Map.Entry<String,String> clusterIdMapEntry : application.getClusterIdMap().entrySet()) { + Service service = topology.getService(clusterIdMapEntry.getKey()); + service.removeCluster(clusterIdMapEntry.getValue()); + } + + // remove application + topology.removeApplication(applicationId); + + TopologyManager.updateTopology(topology); + + log.info("Removed application [ " + applicationId + " ] from Topology"); + + TopologyEventPublisher.sendApplicationRemovedEvent(applicationId); + } + + } finally { + TopologyManager.releaseWriteLock(); + } + } + public static void handleCompositeApplicationCreated(ConfigCompositeApplication messConfigApp) { Topology topology = TopologyManager.getTopology(); http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java index ee10f9d..a80ddd4 100644 --- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java +++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyEventPublisher.java @@ -36,6 +36,7 @@ import org.apache.stratos.messaging.event.Event; import org.apache.stratos.messaging.event.instance.status.InstanceStartedEvent; import org.apache.stratos.messaging.event.topology.*; import org.apache.stratos.messaging.util.Constants; +import org.apache.wml.WMLStrongElement; import java.util.List; import java.util.Properties; @@ -99,6 +100,15 @@ public class TopologyEventPublisher { publishEvent(new ApplicationCreatedEvent(application)); } + public static void sendApplicationRemovedEvent(String applicationId) { + + if(log.isInfoEnabled()) { + log.info("Publishing Application removed event: " + applicationId); + } + + publishEvent(new ApplicationRemovedEvent(applicationId)); + } + public static void sendClusterRemovedEvent(ClusterContext ctxt, String deploymentPolicy) { ClusterRemovedEvent clusterRemovedEvent = new ClusterRemovedEvent(ctxt.getCartridgeType(), ctxt.getClusterId(), deploymentPolicy, ctxt.isLbCluster()); http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/CloudControllerServiceClient.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/CloudControllerServiceClient.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/CloudControllerServiceClient.java index fb8075d..e1e29d6 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/CloudControllerServiceClient.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/client/CloudControllerServiceClient.java @@ -138,7 +138,12 @@ public class CloudControllerServiceClient { stub.deployApplicationDefinition(applicationContext); } - + + public void undeployApplicationDefinition (String applicationId) throws CloudControllerServiceApplicationDefinitionExceptionException, + RemoteException { + + stub.unDeployApplicationDefinition(applicationId); + } public void unDeployCompositeApplicationDefinition(String appAlias) throws RemoteException, CloudControllerServiceInvalidCompositeApplicationDefinitionExceptionException, CloudControllerServiceInvalidIaasProviderExceptionException { stub.unDeployCompositeApplicationDefinition(appAlias); http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java index 3902947..34e7a9d 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java @@ -128,6 +128,10 @@ public class Application implements ParentBehavior { return clusterIdMap.values(); } + public Map<String, String> getClusterIdMap () { + return clusterIdMap; + } + public String getId() { return id; } http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java index b5992ad..5fb694a 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java @@ -19,10 +19,11 @@ package org.apache.stratos.messaging.domain.topology; +import java.io.Serializable; import java.util.HashSet; import java.util.Set; -public class DependencyOrder { +public class DependencyOrder implements Serializable { private Set<StartupOrder> startupOrders; http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java index 8640aca..072e55d 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java @@ -124,6 +124,10 @@ public class Group implements ParentBehavior { return clusterIdMap.values(); } + public Map<String, String> getClusterIdMap () { + return clusterIdMap; + } + public String getName() { return name; } http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java index 99a626b..a21f8ee 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java @@ -46,4 +46,6 @@ public interface ParentBehavior extends Serializable { public String getClusterId (String serviceName); public Collection<String> getClusterIds (); + + public Map<String, String> getClusterIdMap (); } http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/StartupOrder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/StartupOrder.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/StartupOrder.java index 33a0625..ba2cc2e 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/StartupOrder.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/StartupOrder.java @@ -19,7 +19,9 @@ package org.apache.stratos.messaging.domain.topology; -public class StartupOrder { +import java.io.Serializable; + +public class StartupOrder implements Serializable { private String start; http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java index a27dd8e..f8b535f 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Topology.java @@ -60,6 +60,10 @@ public class Topology implements Serializable { return applicationMap.get(applicationId); } + public void removeApplication (String applicationId) { + applicationMap.remove(applicationId); + } + public Collection<Application> getApplications () { return applicationMap.values(); } http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationCreatedMessageProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationCreatedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationCreatedMessageProcessor.java index 6f86839..5525e7a 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationCreatedMessageProcessor.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationCreatedMessageProcessor.java @@ -68,11 +68,12 @@ public class ApplicationCreatedMessageProcessor extends MessageProcessor { // check if an Application with same name exists in topology if (topology.applicationExists(appCreatedEvent.getApplication().getId())) { log.warn("Application with id [ " + appCreatedEvent.getApplication().getId() + " ] already exists in Topology"); - return false; + + } else { + // add to Topology + topology.addApplication(appCreatedEvent.getApplication()); } - // add to Topology - topology.addApplication(appCreatedEvent.getApplication()); notifyEventListeners(appCreatedEvent); return true; http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterActivatedProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterActivatedProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterActivatedProcessor.java index 9c8ebf5..02f1b8b 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterActivatedProcessor.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ClusterActivatedProcessor.java @@ -24,13 +24,16 @@ import org.apache.stratos.messaging.message.processor.MessageProcessor; * This processor will act upon the cluster activated event */ public class ClusterActivatedProcessor extends MessageProcessor { + + private MessageProcessor nextProcessor; + @Override public void setNext(MessageProcessor nextProcessor) { - + this.nextProcessor = nextProcessor; } @Override public boolean process(String type, String message, Object object) { - return false; + return nextProcessor.process(type, message, object); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/GroupActivatedProcessor.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/GroupActivatedProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/GroupActivatedProcessor.java index c2455c4..13ea2e7 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/GroupActivatedProcessor.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/GroupActivatedProcessor.java @@ -24,13 +24,16 @@ import org.apache.stratos.messaging.message.processor.MessageProcessor; * This processor will act upon the Group activation events */ public class GroupActivatedProcessor extends MessageProcessor { + + private MessageProcessor nextProcessor; + @Override public void setNext(MessageProcessor nextProcessor) { - + this.nextProcessor = nextProcessor; } @Override public boolean process(String type, String message, Object object) { - return false; + return nextProcessor.process(type, message, object); } } http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/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 887dbfd..368552f 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 @@ -282,45 +282,18 @@ public class ServiceUtils { } } - static void unDeployApplication(String configCompositeApplicationAlias, ConfigurationContext ctxt, + static void unDeployApplication(String appId, ConfigurationContext ctxt, String userName, String tenantDomain) throws RestAPIException { - log.info("Starting to undeploy a composite application definition " + configCompositeApplicationAlias); - - CloudControllerServiceClient cloudControllerServiceClient = getCloudControllerServiceClient(); - - if (cloudControllerServiceClient != null) { - try { - if (log.isDebugEnabled()) { - log.debug("trying to undeploy composite application definition " + configCompositeApplicationAlias); - } - cloudControllerServiceClient.unDeployCompositeApplicationDefinition(configCompositeApplicationAlias); - } catch (RemoteException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - String message = "Remote ExceptionException"; - log.error(message, e); - throw new RestAPIException(message, e); - } catch (CloudControllerServiceInvalidCompositeApplicationDefinitionExceptionException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - String message = "CloudControllerServiceInvalidCompositeApplicationDefinitionExceptionException"; - log.error(message, e); - throw new RestAPIException(message, e); - } catch (CloudControllerServiceInvalidIaasProviderExceptionException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - String message = "CloudControllerServiceInvalidIaasProviderExceptionException"; - log.error(message, e); - throw new RestAPIException(message, e); - } - } else { - if (log.isDebugEnabled()) { - log.debug("cloud controller client is null while trying to undeploy composite application definition"); - } - } - - log.info(String.format("[type] %s", configCompositeApplicationAlias)); + try { + CloudControllerServiceClient.getServiceClient().undeployApplicationDefinition(appId); + + } catch (CloudControllerServiceApplicationDefinitionExceptionException e) { + throw new RestAPIException(e); + } catch (RemoteException e) { + throw new RestAPIException(e); + } + } @SuppressWarnings("unused") http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/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 e9ed346..1972a1b 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 @@ -168,17 +168,17 @@ public class StratosAdmin extends AbstractAdmin { } */ - @POST - @Path("/application/definition/undeploy") + @DELETE + @Path("/application/definition/{applicationId}") @Produces("application/json") @Consumes("application/json") @AuthorizationAction("/permission/protected/manage/monitor/tenants") @SuperTenantService(true) // Grouping - public Response unDeployApplicationDefinition(String alias) + public Response unDeployApplicationDefinition(@PathParam("applicationId") String applicationId) throws RestAPIException { - ServiceUtils.unDeployApplication(alias, getConfigContext(), getUsername(), + ServiceUtils.unDeployApplication(applicationId, getConfigContext(), getUsername(), getTenantDomain()); return Response.noContent().build(); } http://git-wip-us.apache.org/repos/asf/stratos/blob/8db36808/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl ---------------------------------------------------------------------- diff --git a/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl b/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl index f723677..d685bda 100644 --- a/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl +++ b/service-stubs/org.apache.stratos.cloud.controller.service.stub/src/main/resources/CloudControllerService.wsdl @@ -91,27 +91,27 @@ <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element> </xs:sequence> </xs:complexType> - <xs:complexType name="InvalidMemberException"> + <xs:complexType name="ApplicationDefinitionException"> <xs:sequence> <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element> </xs:sequence> </xs:complexType> - <xs:complexType name="InvalidClusterException"> + <xs:complexType name="InvalidMemberException"> <xs:sequence> <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element> </xs:sequence> </xs:complexType> - <xs:complexType name="UnregisteredCartridgeException"> + <xs:complexType name="InvalidClusterException"> <xs:sequence> <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element> </xs:sequence> </xs:complexType> - <xs:complexType name="InvalidCartridgeDefinitionException"> + <xs:complexType name="UnregisteredCartridgeException"> <xs:sequence> <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element> </xs:sequence> </xs:complexType> - <xs:complexType name="ApplicationDefinitionException"> + <xs:complexType name="InvalidCartridgeDefinitionException"> <xs:sequence> <xs:element minOccurs="0" name="message" nillable="true" type="xs:string"></xs:element> </xs:sequence> @@ -221,6 +221,20 @@ </xs:sequence> </xs:complexType> </xs:element> + <xs:element name="CloudControllerServiceApplicationDefinitionException"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" name="ApplicationDefinitionException" nillable="true" type="ax219:ApplicationDefinitionException"></xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="unDeployApplicationDefinition"> + <xs:complexType> + <xs:sequence> + <xs:element minOccurs="0" name="applicationId" nillable="true" type="xs:string"></xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> <xs:element name="CloudControllerServiceInvalidMemberException"> <xs:complexType> <xs:sequence> @@ -408,13 +422,6 @@ </xs:sequence> </xs:complexType> </xs:element> - <xs:element name="CloudControllerServiceApplicationDefinitionException"> - <xs:complexType> - <xs:sequence> - <xs:element minOccurs="0" name="ApplicationDefinitionException" nillable="true" type="ax219:ApplicationDefinitionException"></xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> <xs:element name="deployApplicationDefinition"> <xs:complexType> <xs:sequence> @@ -692,6 +699,12 @@ <wsdl:message name="CloudControllerServiceUnregisteredCartridgeException"> <wsdl:part name="parameters" element="ns:CloudControllerServiceUnregisteredCartridgeException"></wsdl:part> </wsdl:message> + <wsdl:message name="unDeployApplicationDefinitionRequest"> + <wsdl:part name="parameters" element="ns:unDeployApplicationDefinition"></wsdl:part> + </wsdl:message> + <wsdl:message name="CloudControllerServiceApplicationDefinitionException"> + <wsdl:part name="parameters" element="ns:CloudControllerServiceApplicationDefinitionException"></wsdl:part> + </wsdl:message> <wsdl:message name="getServiceGroupDependenciesRequest"> <wsdl:part name="parameters" element="ns:getServiceGroupDependencies"></wsdl:part> </wsdl:message> @@ -731,9 +744,6 @@ <wsdl:message name="deployApplicationDefinitionRequest"> <wsdl:part name="parameters" element="ns:deployApplicationDefinition"></wsdl:part> </wsdl:message> - <wsdl:message name="CloudControllerServiceApplicationDefinitionException"> - <wsdl:part name="parameters" element="ns:CloudControllerServiceApplicationDefinitionException"></wsdl:part> - </wsdl:message> <wsdl:message name="unregisterServiceRequest"> <wsdl:part name="parameters" element="ns:unregisterService"></wsdl:part> </wsdl:message> @@ -806,6 +816,10 @@ <wsdl:output message="ns:registerServiceResponse" wsaw:Action="urn:registerServiceResponse"></wsdl:output> <wsdl:fault message="ns:CloudControllerServiceUnregisteredCartridgeException" name="CloudControllerServiceUnregisteredCartridgeException" wsaw:Action="urn:registerServiceCloudControllerServiceUnregisteredCartridgeException"></wsdl:fault> </wsdl:operation> + <wsdl:operation name="unDeployApplicationDefinition"> + <wsdl:input message="ns:unDeployApplicationDefinitionRequest" wsaw:Action="urn:unDeployApplicationDefinition"></wsdl:input> + <wsdl:fault message="ns:CloudControllerServiceApplicationDefinitionException" name="CloudControllerServiceApplicationDefinitionException" wsaw:Action="urn:unDeployApplicationDefinitionCloudControllerServiceApplicationDefinitionException"></wsdl:fault> + </wsdl:operation> <wsdl:operation name="getServiceGroupDependencies"> <wsdl:input message="ns:getServiceGroupDependenciesRequest" wsaw:Action="urn:getServiceGroupDependencies"></wsdl:input> <wsdl:output message="ns:getServiceGroupDependenciesResponse" wsaw:Action="urn:getServiceGroupDependenciesResponse"></wsdl:output> @@ -945,16 +959,13 @@ <soap:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"></soap:fault> </wsdl:fault> </wsdl:operation> - <wsdl:operation name="getServiceGroup"> - <soap:operation soapAction="urn:getServiceGroup" style="document"></soap:operation> + <wsdl:operation name="unDeployApplicationDefinition"> + <soap:operation soapAction="urn:unDeployApplicationDefinition" style="document"></soap:operation> <wsdl:input> <soap:body use="literal"></soap:body> </wsdl:input> - <wsdl:output> - <soap:body use="literal"></soap:body> - </wsdl:output> - <wsdl:fault name="CloudControllerServiceInvalidServiceGroupException"> - <soap:fault use="literal" name="CloudControllerServiceInvalidServiceGroupException"></soap:fault> + <wsdl:fault name="CloudControllerServiceApplicationDefinitionException"> + <soap:fault use="literal" name="CloudControllerServiceApplicationDefinitionException"></soap:fault> </wsdl:fault> </wsdl:operation> <wsdl:operation name="getServiceGroupDependencies"> @@ -969,20 +980,20 @@ <soap:fault use="literal" name="CloudControllerServiceInvalidServiceGroupException"></soap:fault> </wsdl:fault> </wsdl:operation> - <wsdl:operation name="deployCartridgeDefinition"> - <soap:operation soapAction="urn:deployCartridgeDefinition" style="document"></soap:operation> + <wsdl:operation name="getServiceGroupSubGroups"> + <soap:operation soapAction="urn:getServiceGroupSubGroups" style="document"></soap:operation> <wsdl:input> <soap:body use="literal"></soap:body> </wsdl:input> - <wsdl:fault name="CloudControllerServiceInvalidCartridgeDefinitionException"> - <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeDefinitionException"></soap:fault> - </wsdl:fault> - <wsdl:fault name="CloudControllerServiceInvalidIaasProviderException"> - <soap:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"></soap:fault> + <wsdl:output> + <soap:body use="literal"></soap:body> + </wsdl:output> + <wsdl:fault name="CloudControllerServiceInvalidServiceGroupException"> + <soap:fault use="literal" name="CloudControllerServiceInvalidServiceGroupException"></soap:fault> </wsdl:fault> </wsdl:operation> - <wsdl:operation name="getServiceGroupSubGroups"> - <soap:operation soapAction="urn:getServiceGroupSubGroups" style="document"></soap:operation> + <wsdl:operation name="getServiceGroup"> + <soap:operation soapAction="urn:getServiceGroup" style="document"></soap:operation> <wsdl:input> <soap:body use="literal"></soap:body> </wsdl:input> @@ -993,6 +1004,18 @@ <soap:fault use="literal" name="CloudControllerServiceInvalidServiceGroupException"></soap:fault> </wsdl:fault> </wsdl:operation> + <wsdl:operation name="deployCartridgeDefinition"> + <soap:operation soapAction="urn:deployCartridgeDefinition" style="document"></soap:operation> + <wsdl:input> + <soap:body use="literal"></soap:body> + </wsdl:input> + <wsdl:fault name="CloudControllerServiceInvalidCartridgeDefinitionException"> + <soap:fault use="literal" name="CloudControllerServiceInvalidCartridgeDefinitionException"></soap:fault> + </wsdl:fault> + <wsdl:fault name="CloudControllerServiceInvalidIaasProviderException"> + <soap:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"></soap:fault> + </wsdl:fault> + </wsdl:operation> <wsdl:operation name="undeployServiceGroup"> <soap:operation soapAction="urn:undeployServiceGroup" style="document"></soap:operation> <wsdl:input> @@ -1182,16 +1205,13 @@ <soap12:fault use="literal" name="CloudControllerServiceUnregisteredCartridgeException"></soap12:fault> </wsdl:fault> </wsdl:operation> - <wsdl:operation name="getServiceGroup"> - <soap12:operation soapAction="urn:getServiceGroup" style="document"></soap12:operation> + <wsdl:operation name="unDeployApplicationDefinition"> + <soap12:operation soapAction="urn:unDeployApplicationDefinition" style="document"></soap12:operation> <wsdl:input> <soap12:body use="literal"></soap12:body> </wsdl:input> - <wsdl:output> - <soap12:body use="literal"></soap12:body> - </wsdl:output> - <wsdl:fault name="CloudControllerServiceInvalidServiceGroupException"> - <soap12:fault use="literal" name="CloudControllerServiceInvalidServiceGroupException"></soap12:fault> + <wsdl:fault name="CloudControllerServiceApplicationDefinitionException"> + <soap12:fault use="literal" name="CloudControllerServiceApplicationDefinitionException"></soap12:fault> </wsdl:fault> </wsdl:operation> <wsdl:operation name="getServiceGroupDependencies"> @@ -1206,20 +1226,20 @@ <soap12:fault use="literal" name="CloudControllerServiceInvalidServiceGroupException"></soap12:fault> </wsdl:fault> </wsdl:operation> - <wsdl:operation name="deployCartridgeDefinition"> - <soap12:operation soapAction="urn:deployCartridgeDefinition" style="document"></soap12:operation> + <wsdl:operation name="getServiceGroupSubGroups"> + <soap12:operation soapAction="urn:getServiceGroupSubGroups" style="document"></soap12:operation> <wsdl:input> <soap12:body use="literal"></soap12:body> </wsdl:input> - <wsdl:fault name="CloudControllerServiceInvalidCartridgeDefinitionException"> - <soap12:fault use="literal" name="CloudControllerServiceInvalidCartridgeDefinitionException"></soap12:fault> - </wsdl:fault> - <wsdl:fault name="CloudControllerServiceInvalidIaasProviderException"> - <soap12:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"></soap12:fault> + <wsdl:output> + <soap12:body use="literal"></soap12:body> + </wsdl:output> + <wsdl:fault name="CloudControllerServiceInvalidServiceGroupException"> + <soap12:fault use="literal" name="CloudControllerServiceInvalidServiceGroupException"></soap12:fault> </wsdl:fault> </wsdl:operation> - <wsdl:operation name="getServiceGroupSubGroups"> - <soap12:operation soapAction="urn:getServiceGroupSubGroups" style="document"></soap12:operation> + <wsdl:operation name="getServiceGroup"> + <soap12:operation soapAction="urn:getServiceGroup" style="document"></soap12:operation> <wsdl:input> <soap12:body use="literal"></soap12:body> </wsdl:input> @@ -1230,6 +1250,18 @@ <soap12:fault use="literal" name="CloudControllerServiceInvalidServiceGroupException"></soap12:fault> </wsdl:fault> </wsdl:operation> + <wsdl:operation name="deployCartridgeDefinition"> + <soap12:operation soapAction="urn:deployCartridgeDefinition" style="document"></soap12:operation> + <wsdl:input> + <soap12:body use="literal"></soap12:body> + </wsdl:input> + <wsdl:fault name="CloudControllerServiceInvalidCartridgeDefinitionException"> + <soap12:fault use="literal" name="CloudControllerServiceInvalidCartridgeDefinitionException"></soap12:fault> + </wsdl:fault> + <wsdl:fault name="CloudControllerServiceInvalidIaasProviderException"> + <soap12:fault use="literal" name="CloudControllerServiceInvalidIaasProviderException"></soap12:fault> + </wsdl:fault> + </wsdl:operation> <wsdl:operation name="undeployServiceGroup"> <soap12:operation soapAction="urn:undeployServiceGroup" style="document"></soap12:operation> <wsdl:input> @@ -1398,14 +1430,11 @@ <mime:content type="text/xml" part="parameters"></mime:content> </wsdl:output> </wsdl:operation> - <wsdl:operation name="getServiceGroup"> - <http:operation location="getServiceGroup"></http:operation> + <wsdl:operation name="unDeployApplicationDefinition"> + <http:operation location="unDeployApplicationDefinition"></http:operation> <wsdl:input> <mime:content type="text/xml" part="parameters"></mime:content> </wsdl:input> - <wsdl:output> - <mime:content type="text/xml" part="parameters"></mime:content> - </wsdl:output> </wsdl:operation> <wsdl:operation name="getServiceGroupDependencies"> <http:operation location="getServiceGroupDependencies"></http:operation> @@ -1416,14 +1445,17 @@ <mime:content type="text/xml" part="parameters"></mime:content> </wsdl:output> </wsdl:operation> - <wsdl:operation name="deployCartridgeDefinition"> - <http:operation location="deployCartridgeDefinition"></http:operation> + <wsdl:operation name="getServiceGroupSubGroups"> + <http:operation location="getServiceGroupSubGroups"></http:operation> <wsdl:input> <mime:content type="text/xml" part="parameters"></mime:content> </wsdl:input> + <wsdl:output> + <mime:content type="text/xml" part="parameters"></mime:content> + </wsdl:output> </wsdl:operation> - <wsdl:operation name="getServiceGroupSubGroups"> - <http:operation location="getServiceGroupSubGroups"></http:operation> + <wsdl:operation name="getServiceGroup"> + <http:operation location="getServiceGroup"></http:operation> <wsdl:input> <mime:content type="text/xml" part="parameters"></mime:content> </wsdl:input> @@ -1431,6 +1463,12 @@ <mime:content type="text/xml" part="parameters"></mime:content> </wsdl:output> </wsdl:operation> + <wsdl:operation name="deployCartridgeDefinition"> + <http:operation location="deployCartridgeDefinition"></http:operation> + <wsdl:input> + <mime:content type="text/xml" part="parameters"></mime:content> + </wsdl:input> + </wsdl:operation> <wsdl:operation name="undeployServiceGroup"> <http:operation location="undeployServiceGroup"></http:operation> <wsdl:input>
