You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ga...@apache.org on 2015/01/25 18:59:26 UTC
[2/2] stratos git commit: Add put http method to update cartridges
Add put http method to update cartridges
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/aa6e3e10
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/aa6e3e10
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/aa6e3e10
Branch: refs/heads/master
Commit: aa6e3e1053ea82409c71dcb89fdd766f9beca602
Parents: e4c0dc7
Author: Gayan Gunarathne <ga...@wso2.com>
Authored: Sun Jan 25 23:14:12 2015 +0530
Committer: Gayan Gunarathne <ga...@wso2.com>
Committed: Sun Jan 25 23:27:55 2015 +0530
----------------------------------------------------------------------
.../CartridgeDefinitionNotExistsException.java | 44 ++
.../services/CloudControllerService.java | 11 +
.../impl/CloudControllerServiceImpl.java | 54 ++
.../client/CloudControllerServiceClient.java | 7 +
.../rest/endpoint/api/StratosApiV41.java | 19 +
.../rest/endpoint/api/StratosApiV41Utils.java | 31 +
.../main/resources/CloudControllerService.wsdl | 785 ++++++++++---------
7 files changed, 592 insertions(+), 359 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/aa6e3e10/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/CartridgeDefinitionNotExistsException.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/CartridgeDefinitionNotExistsException.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/CartridgeDefinitionNotExistsException.java
new file mode 100644
index 0000000..c16e15a
--- /dev/null
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/exception/CartridgeDefinitionNotExistsException.java
@@ -0,0 +1,44 @@
+/*
+ * 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.apache.stratos.cloud.controller.exception;
+
+public class CartridgeDefinitionNotExistsException extends Exception {
+
+ private static final long serialVersionUID = -6326227079367867222L;
+ private String message;
+
+ public CartridgeDefinitionNotExistsException(String msg) {
+ super(msg);
+ this.setMessage(msg);
+ }
+
+ public CartridgeDefinitionNotExistsException(String msg, Exception ex) {
+ super(msg, ex);
+ this.setMessage(msg);
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/aa6e3e10/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
index 1bbcdf7..a0650b8 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/CloudControllerService.java
@@ -41,6 +41,17 @@ public interface CloudControllerService {
*/
void addCartridge(CartridgeConfig cartridgeConfig)
throws InvalidCartridgeDefinitionException, InvalidIaasProviderException, CartridgeAlreadyExistsException;
+
+ /**
+ * Update a cartridge
+ * @param cartridgeConfig
+ * @throws InvalidCartridgeDefinitionException
+ * @throws InvalidIaasProviderException
+ * @throws org.apache.stratos.cloud.controller.exception.CartridgeDefinitionNotExistsException
+ */
+ public void updateCartridge(CartridgeConfig cartridgeConfig) throws InvalidCartridgeDefinitionException,
+ InvalidIaasProviderException,
+ CartridgeDefinitionNotExistsException;
/**
* Remove a cartridge
http://git-wip-us.apache.org/repos/asf/stratos/blob/aa6e3e10/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
index b537039..c0259a9 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/services/impl/CloudControllerServiceImpl.java
@@ -108,6 +108,60 @@ public class CloudControllerServiceImpl implements CloudControllerService {
}
}
+ @Override
+ public void updateCartridge(CartridgeConfig cartridgeConfig) throws InvalidCartridgeDefinitionException,
+ InvalidIaasProviderException,
+ CartridgeDefinitionNotExistsException {
+
+ handleNullObject(cartridgeConfig, "Cartridge definition is null");
+
+ if (log.isInfoEnabled()) {
+ log.info("Adding cartridge: [cartridge-type] " + cartridgeConfig.getType());
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("Cartridge definition: " + cartridgeConfig.toString());
+ }
+
+ Cartridge cartridge = null;
+ try {
+ cartridge = CloudControllerUtil.toCartridge(cartridgeConfig);
+ } catch (Exception e) {
+ String msg = "Invalid cartridge definition: [cartridge-type] " + cartridgeConfig.getType();
+ log.error(msg, e);
+ throw new InvalidCartridgeDefinitionException(msg, e);
+ }
+
+ // TODO transaction begins
+ String cartridgeType = cartridge.getType();
+ // Undeploy if already deployed
+ if (cloudControllerContext.getCartridge(cartridgeType) != null) {
+ Cartridge cartridgeToBeRemoved = cloudControllerContext.getCartridge(cartridgeType);
+ // undeploy
+ try {
+ removeCartridge(cartridgeToBeRemoved.getType());
+ } catch (InvalidCartridgeTypeException ignore) {
+ }
+ copyIaasProviders(cartridge, cartridgeToBeRemoved);
+ }
+ else{
+ throw new CartridgeDefinitionNotExistsException("This cartridge definition not exists");
+ }
+
+ // Add cartridge to the cloud controller context and persist
+ CloudControllerContext.getInstance().addCartridge(cartridge);
+ CloudControllerContext.getInstance().persist();
+
+ List<Cartridge> cartridgeList = new ArrayList<Cartridge>();
+ cartridgeList.add(cartridge);
+
+ TopologyBuilder.handleServiceCreated(cartridgeList);
+ // transaction ends
+
+ if (log.isInfoEnabled()) {
+ log.info("Successfully added cartridge: [cartridge-type] " + cartridgeType);
+ }
+ }
+
private void copyIaasProviders(Cartridge destCartridge,
Cartridge sourceCartridge) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/aa6e3e10/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
index ee63797..9c387dd 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/CloudControllerServiceClient.java
@@ -85,6 +85,13 @@ public class CloudControllerServiceClient {
stub.addCartridge(cartridgeConfig);
}
+ public void updateCartridge(CartridgeConfig cartridgeConfig)
+ throws RemoteException, CloudControllerServiceInvalidCartridgeDefinitionExceptionException,
+ CloudControllerServiceInvalidIaasProviderExceptionException,
+ CloudControllerServiceCartridgeDefinitionNotExistsExceptionException {
+ stub.updateCartridge(cartridgeConfig);
+ }
+
public void removeCartridge(String cartridgeType) throws RemoteException, CloudControllerServiceInvalidCartridgeTypeExceptionException {
stub.removeCartridge(cartridgeType);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/aa6e3e10/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
index 35145f4..aeef4c2 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
@@ -153,6 +153,25 @@ public class StratosApiV41 extends AbstractApi {
return Response.created(url).build();
}
+ /**
+ * Updates the cartridge definition.
+ *
+ * @param cartridgeDefinitionBean the cartridge definition bean
+ * @return the response
+ * @throws RestAPIException the rest api exception
+ */
+ @PUT
+ @Path("/cartridges")
+ @Produces("application/json")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/admin/manage/add/cartridgeDefinition")
+ public Response updateCartridge(CartridgeBean cartridgeDefinitionBean)
+ throws RestAPIException {
+ StratosApiV41Utils.updateCartridge(cartridgeDefinitionBean);
+ URI url = uriInfo.getAbsolutePathBuilder().path(cartridgeDefinitionBean.getType()).build();
+ return Response.created(url).build();
+
+ }
/**
* Gets all available cartridges.
*
http://git-wip-us.apache.org/repos/asf/stratos/blob/aa6e3e10/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
index 5330036..ccbd306 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
@@ -116,6 +116,36 @@ public class StratosApiV41Utils {
}
}
+ public static void updateCartridge(CartridgeBean cartridgeDefinition) throws RestAPIException {
+
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Adding cartridge: [cartridge-type] %s ", cartridgeDefinition.getType()));
+ }
+
+ CartridgeConfig cartridgeConfig =
+ ObjectConverter.convertCartridgeBeanToStubCartridgeConfig(cartridgeDefinition);
+ if (cartridgeConfig == null) {
+ throw new RestAPIException("Could not read cartridge definition, cartridge deployment failed");
+ }
+ if (StringUtils.isEmpty(cartridgeConfig.getCategory())) {
+ throw new RestAPIException(String.format("Category is not specified in cartridge: [cartridge-type] %s",
+ cartridgeConfig.getType()));
+ }
+ CloudControllerServiceClient cloudControllerServiceClient = CloudControllerServiceClient.getInstance();
+ cloudControllerServiceClient.updateCartridge(cartridgeConfig);
+
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Successfully added cartridge: [cartridge-type] %s ",
+ cartridgeDefinition.getType()));
+ }
+ } catch (Exception e) {
+ String msg = "Could not add cartridge";
+ log.error(msg, e);
+ throw new RestAPIException(msg);
+ }
+ }
+
public static void removeCartridge(String cartridgeType) throws RestAPIException {
try {
@@ -1604,4 +1634,5 @@ public class StratosApiV41Utils {
throw new RuntimeException(message, e);
}
}
+
}