You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/01/10 21:34:05 UTC
[1/2] stratos git commit: Implementing domain mappings rest api
methods
Repository: stratos
Updated Branches:
refs/heads/master 4a724b159 -> c1517c504
Implementing domain mappings rest api methods
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/2c4d8b96
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/2c4d8b96
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/2c4d8b96
Branch: refs/heads/master
Commit: 2c4d8b96ba19bfc90c30b44c749abb4d1afe8e5e
Parents: 4a724b1
Author: Imesh Gunaratne <im...@apache.org>
Authored: Sun Jan 11 01:43:11 2015 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Sun Jan 11 01:43:11 2015 +0530
----------------------------------------------------------------------
.../mapping/ApplicationDomainMappingsBean.java | 49 ++++++++++
.../domain/mapping/DomainMappingBean.java | 57 ++++++++++++
.../client/StratosManagerServiceClient.java | 14 +++
.../rest/endpoint/api/StratosApiV41.java | 36 ++++++++
.../rest/endpoint/api/StratosApiV41Utils.java | 97 ++++++++++++++++++++
.../util/converter/ObjectConverter.java | 16 ++++
6 files changed, 269 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c4d8b96/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/domain/mapping/ApplicationDomainMappingsBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/domain/mapping/ApplicationDomainMappingsBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/domain/mapping/ApplicationDomainMappingsBean.java
new file mode 100644
index 0000000..de536f5
--- /dev/null
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/domain/mapping/ApplicationDomainMappingsBean.java
@@ -0,0 +1,49 @@
+/*
+ * 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.common.beans.application.domain.mapping;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+import java.util.List;
+
+@XmlRootElement(name="applicationDomainMappings")
+public class ApplicationDomainMappingsBean implements Serializable {
+
+ private static final long serialVersionUID = 8896916017135654616L;
+
+ private String applicationId;
+ private List<DomainMappingBean> domainMappings;
+
+ public String getApplicationId() {
+ return applicationId;
+ }
+
+ public void setApplicationId(String applicationId) {
+ this.applicationId = applicationId;
+ }
+
+ public List<DomainMappingBean> getDomainMappings() {
+ return domainMappings;
+ }
+
+ public void setDomainMappings(List<DomainMappingBean> domainMappings) {
+ this.domainMappings = domainMappings;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c4d8b96/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/domain/mapping/DomainMappingBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/domain/mapping/DomainMappingBean.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/domain/mapping/DomainMappingBean.java
new file mode 100644
index 0000000..78039af
--- /dev/null
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/beans/application/domain/mapping/DomainMappingBean.java
@@ -0,0 +1,57 @@
+/*
+ * 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.common.beans.application.domain.mapping;
+
+import javax.xml.bind.annotation.XmlRootElement;
+import java.io.Serializable;
+
+@XmlRootElement(name="domainMapping")
+public class DomainMappingBean implements Serializable {
+
+ private static final long serialVersionUID = -9070100712931939993L;
+
+ private String cartridgeAlias;
+ private String domainName;
+ private String contextPath;
+
+ public String getCartridgeAlias() {
+ return cartridgeAlias;
+ }
+
+ public void setCartridgeAlias(String cartridgeAlias) {
+ this.cartridgeAlias = cartridgeAlias;
+ }
+
+ public String getDomainName() {
+ return domainName;
+ }
+
+ public void setDomainName(String domainName) {
+ this.domainName = domainName;
+ }
+
+ public String getContextPath() {
+ return contextPath;
+ }
+
+ public void setContextPath(String contextPath) {
+ this.contextPath = contextPath;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c4d8b96/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/StratosManagerServiceClient.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/StratosManagerServiceClient.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/StratosManagerServiceClient.java
index d8c4a9a..b5767df 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/StratosManagerServiceClient.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/StratosManagerServiceClient.java
@@ -27,8 +27,10 @@ import org.apache.commons.logging.LogFactory;
import org.apache.stratos.common.constants.StratosConstants;
import org.apache.stratos.manager.service.stub.StratosManagerServiceApplicationSignUpExceptionException;
import org.apache.stratos.manager.service.stub.StratosManagerServiceArtifactDistributionCoordinatorExceptionException;
+import org.apache.stratos.manager.service.stub.StratosManagerServiceDomainMappingExceptionException;
import org.apache.stratos.manager.service.stub.StratosManagerServiceStub;
import org.apache.stratos.manager.service.stub.domain.application.signup.ApplicationSignUp;
+import org.apache.stratos.manager.service.stub.domain.domain.mapping.DomainMapping;
import java.rmi.RemoteException;
@@ -141,4 +143,16 @@ public class StratosManagerServiceClient {
public void notifyArtifactUpdatedEventForRepository(String repoUrl) throws StratosManagerServiceArtifactDistributionCoordinatorExceptionException, RemoteException {
stub.notifyArtifactUpdatedEventForRepository(repoUrl);
}
+
+ public void addDomainMapping(DomainMapping domainMapping) throws RemoteException, StratosManagerServiceDomainMappingExceptionException {
+ stub.addDomainMapping(domainMapping);
+ }
+
+ public void removeDomainMapping(String applicationId, int tenantId, String domainName) throws RemoteException, StratosManagerServiceDomainMappingExceptionException {
+ stub.removeDomainMapping(applicationId, tenantId, domainName);
+ }
+
+ public DomainMapping[] getDomainMappings(String applicationId, int tenantId) throws RemoteException, StratosManagerServiceDomainMappingExceptionException {
+ return stub.getDomainMappings(applicationId, tenantId);
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c4d8b96/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 54b90fb..bddba05 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
@@ -23,6 +23,8 @@ import org.apache.commons.logging.LogFactory;
import org.apache.stratos.common.beans.*;
import org.apache.stratos.common.beans.application.ApplicationBean;
import org.apache.stratos.common.beans.application.GroupBean;
+import org.apache.stratos.common.beans.application.domain.mapping.ApplicationDomainMappingsBean;
+import org.apache.stratos.common.beans.application.domain.mapping.DomainMappingBean;
import org.apache.stratos.common.beans.application.signup.ApplicationSignUpBean;
import org.apache.stratos.common.beans.policy.autoscale.AutoscalePolicyBean;
import org.apache.stratos.common.beans.policy.deployment.DeploymentPolicyBean;
@@ -450,6 +452,40 @@ public class StratosApiV41 extends AbstractApi {
return Response.ok().build();
}
+ @POST
+ @Path("/applications/{applicationId}/domainMappings")
+ @Produces("application/json")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/protected/manage/monitor/tenants")
+ public Response addDomainMappings(@PathParam("applicationId") String applicationId,
+ ApplicationDomainMappingsBean domainMapppingsBean) throws RestAPIException {
+ StratosApiV41Utils.addApplicationDomainMappings(applicationId, domainMapppingsBean);
+ return Response.ok().build();
+ }
+
+ @DELETE
+ @Path("/applications/{applicationId}/domainMappings")
+ @Produces("application/json")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/protected/manage/monitor/tenants")
+ public Response removeDomainMappings(@PathParam("applicationId") String applicationId,
+ ApplicationDomainMappingsBean domainMapppingsBean) throws RestAPIException {
+ StratosApiV41Utils.removeApplicationDomainMappings(applicationId, domainMapppingsBean);
+ return Response.ok().build();
+ }
+
+ @GET
+ @Path("/applications/{applicationId}/domainMappings")
+ @Produces("application/json")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/protected/manage/monitor/tenants")
+ public Response getDomainMappings(@PathParam("applicationId") String applicationId) throws RestAPIException {
+ List<DomainMappingBean> domainMappingsBeanList = StratosApiV41Utils.getApplicationDomainMappings(applicationId);
+ DomainMappingBean[] domainMappingsBeans = domainMappingsBeanList.toArray(
+ new DomainMappingBean[domainMappingsBeanList.size()]);
+ return Response.ok(domainMappingsBeans).build();
+ }
+
/**
* Undeploy application.
*
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c4d8b96/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 cc3ed64..5e44d0e 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
@@ -36,6 +36,8 @@ import org.apache.stratos.cloud.controller.stub.domain.Volume;
import org.apache.stratos.common.beans.PropertyBean;
import org.apache.stratos.common.beans.application.ApplicationBean;
import org.apache.stratos.common.beans.application.GroupBean;
+import org.apache.stratos.common.beans.application.domain.mapping.ApplicationDomainMappingsBean;
+import org.apache.stratos.common.beans.application.domain.mapping.DomainMappingBean;
import org.apache.stratos.common.beans.application.signup.ApplicationSignUpBean;
import org.apache.stratos.common.beans.artifact.repository.GitNotificationPayloadBean;
import org.apache.stratos.common.beans.cartridge.CartridgeBean;
@@ -56,6 +58,7 @@ import org.apache.stratos.common.client.StratosManagerServiceClient;
import org.apache.stratos.common.util.CommonUtil;
import org.apache.stratos.manager.service.stub.domain.application.signup.ApplicationSignUp;
import org.apache.stratos.manager.service.stub.domain.application.signup.ArtifactRepository;
+import org.apache.stratos.manager.service.stub.domain.domain.mapping.DomainMapping;
import org.apache.stratos.manager.utils.ApplicationManagementUtil;
import org.apache.stratos.manager.utils.CartridgeConstants;
import org.apache.stratos.messaging.domain.application.Application;
@@ -1513,4 +1516,98 @@ public class StratosApiV41Utils {
throw new RestAPIException(message, e);
}
}
+
+ public static void addApplicationDomainMappings(String applicationId,
+ ApplicationDomainMappingsBean domainMapppingsBean) throws RestAPIException {
+
+ try {
+ int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
+ StratosManagerServiceClient serviceClient = StratosManagerServiceClient.getInstance();
+ if(domainMapppingsBean.getDomainMappings() != null) {
+
+ for(DomainMappingBean domainMappingBean : domainMapppingsBean.getDomainMappings()) {
+ ClusterDataHolder clusterDataHolder = findClusterDataHolder(applicationId, domainMappingBean.getCartridgeAlias());
+
+ DomainMapping domainMapping = ObjectConverter.convertDomainMappingBeanToStubDomainMapping(domainMappingBean);
+ domainMapping.setApplicationId(applicationId);
+ domainMapping.setTenantId(tenantId);
+ domainMapping.setServiceName(clusterDataHolder.getServiceType());
+ domainMapping.setClusterId(clusterDataHolder.getClusterId());
+ serviceClient.addDomainMapping(domainMapping);
+
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Domain mapping added: [application-id] %s [tenant-id] %d " +
+ "[domain-name] %s [context-path] %s", applicationId, tenantId,
+ domainMapping.getDomainName(), domainMapping.getContextPath()));
+ }
+ }
+ }
+ } catch (Exception e) {
+ String message = "Could not add domain mappings: [application-id] " + applicationId;
+ log.error(message, e);
+ throw new RestAPIException(message, e);
+ }
+ }
+
+ private static ClusterDataHolder findClusterDataHolder(String applicationId, String cartridgeAlias) {
+ Application application = ApplicationManager.getApplications().getApplication(applicationId);
+ if(application == null) {
+ throw new RuntimeException(String.format("Application not found: [application-id] %s", applicationId));
+ }
+
+ ClusterDataHolder clusterDataHolder = application.getClusterData(cartridgeAlias);
+ if(clusterDataHolder == null) {
+ throw new RuntimeException(String.format("Cluster data not found for cartridge alias: [application-id] %s " +
+ "[cartridge-alias] %s", applicationId, cartridgeAlias));
+ }
+ return clusterDataHolder;
+ }
+
+ public static void removeApplicationDomainMappings(String applicationId,
+ ApplicationDomainMappingsBean domainMapppingsBean)
+ throws RestAPIException {
+
+ try {
+ int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
+ StratosManagerServiceClient serviceClient = StratosManagerServiceClient.getInstance();
+ if(domainMapppingsBean.getDomainMappings() != null) {
+
+ for(DomainMappingBean domainMappingBean : domainMapppingsBean.getDomainMappings()) {
+ serviceClient.removeDomainMapping(applicationId, tenantId, domainMappingBean.getDomainName());
+
+ if(log.isInfoEnabled()) {
+ log.info(String.format("Domain mapping removed: [application-id] %s [tenant-id] %d " +
+ "[domain-name] %s", applicationId, tenantId,
+ domainMappingBean.getDomainName()));
+ }
+ }
+ }
+ } catch (Exception e) {
+ String message = "Could not remove domain mappings: [application-id] " + applicationId;
+ log.error(message, e);
+ throw new RestAPIException(message, e);
+ }
+ }
+
+ public static List<DomainMappingBean> getApplicationDomainMappings(String applicationId) throws RestAPIException {
+ try {
+ int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
+ List<DomainMappingBean> domainMappingsBeans = new ArrayList<DomainMappingBean>();
+ StratosManagerServiceClient serviceClient = StratosManagerServiceClient.getInstance();
+ DomainMapping[] domainMappings = serviceClient.getDomainMappings(applicationId, tenantId);
+ if(domainMappings != null) {
+ for(DomainMapping domainMapping : domainMappings) {
+ if(domainMapping != null) {
+ DomainMappingBean domainMappingBean = ObjectConverter.convertStubDomainMappingToDomainMappingBean(domainMapping);
+ domainMappingsBeans.add(domainMappingBean);
+ }
+ }
+ }
+ return domainMappingsBeans;
+ } catch (Exception e) {
+ String message = "Could not get domain mappings: [application-id] " + applicationId;
+ log.error(message, e);
+ throw new RestAPIException(message, e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/2c4d8b96/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
index 7ef13f7..de0c1db 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/util/converter/ObjectConverter.java
@@ -30,6 +30,7 @@ import org.apache.stratos.cloud.controller.stub.domain.*;
import org.apache.stratos.common.Properties;
import org.apache.stratos.common.Property;
import org.apache.stratos.common.beans.application.*;
+import org.apache.stratos.common.beans.application.domain.mapping.DomainMappingBean;
import org.apache.stratos.common.beans.application.signup.ApplicationSignUpBean;
import org.apache.stratos.common.beans.artifact.repository.ArtifactRepositoryBean;
import org.apache.stratos.common.beans.cartridge.*;
@@ -49,6 +50,7 @@ import org.apache.stratos.common.beans.topology.*;
import org.apache.stratos.common.util.CommonUtil;
import org.apache.stratos.manager.service.stub.domain.application.signup.ApplicationSignUp;
import org.apache.stratos.manager.service.stub.domain.application.signup.ArtifactRepository;
+import org.apache.stratos.manager.service.stub.domain.domain.mapping.DomainMapping;
import org.apache.stratos.messaging.domain.application.Application;
import org.apache.stratos.messaging.domain.application.Group;
import org.apache.stratos.messaging.domain.instance.ApplicationInstance;
@@ -1682,4 +1684,18 @@ public class ObjectConverter {
}
return applicationSignUpBean;
}
+
+ public static DomainMapping convertDomainMappingBeanToStubDomainMapping(DomainMappingBean domainMappingBean) {
+ DomainMapping domainMapping = new DomainMapping();
+ domainMapping.setDomainName(domainMappingBean.getDomainName());
+ domainMapping.setContextPath(domainMappingBean.getContextPath());
+ return domainMapping;
+ }
+
+ public static DomainMappingBean convertStubDomainMappingToDomainMappingBean(DomainMapping domainMapping) {
+ DomainMappingBean domainMappingBean = new DomainMappingBean();
+ domainMappingBean.setDomainName(domainMapping.getDomainName());
+ domainMappingBean.setContextPath(domainMapping.getContextPath());
+ return domainMappingBean;
+ }
}
[2/2] stratos git commit: Fixing NPE issue in domain mapping handler
Posted by im...@apache.org.
Fixing NPE issue in domain mapping handler
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/c1517c50
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/c1517c50
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/c1517c50
Branch: refs/heads/master
Commit: c1517c50402f23246cc37c9b9d78710116a35a49
Parents: 2c4d8b9
Author: Imesh Gunaratne <im...@apache.org>
Authored: Sun Jan 11 01:51:43 2015 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Sun Jan 11 01:51:43 2015 +0530
----------------------------------------------------------------------
.../apache/stratos/manager/components/DomainMappingHandler.java | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/c1517c50/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/components/DomainMappingHandler.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/components/DomainMappingHandler.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/components/DomainMappingHandler.java
index 3aaf014..75b31a8 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/components/DomainMappingHandler.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/components/DomainMappingHandler.java
@@ -123,7 +123,10 @@ public class DomainMappingHandler {
public DomainMapping[] getDomainMappings(String applicationId, int tenantId) throws DomainMappingException {
try {
ApplicationSignUp applicationSignUp = applicationSignUpHandler.getApplicationSignUp(applicationId, tenantId);
- return applicationSignUp.getDomainMappings();
+ if(applicationSignUp != null) {
+ return applicationSignUp.getDomainMappings();
+ }
+ return null;
} catch (Exception e) {
String message = String.format("Could not get domain mappings: [application-id] %s [tenant-id] %d",
applicationId, tenantId);