You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2014/03/27 13:29:15 UTC
[09/10] git commit: STRATOS-561 Added CLI command and back-end
implementation
STRATOS-561 Added CLI command and back-end implementation
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/bf70f20f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/bf70f20f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/bf70f20f
Branch: refs/heads/master
Commit: bf70f20f9198b1f32b07eea85401e5e1c801df5a
Parents: 5e2fac6
Author: M. Isuru Tharanga Chrishantha Perera <is...@apache.org>
Authored: Thu Mar 27 17:58:28 2014 +0530
Committer: M. Isuru Tharanga Chrishantha Perera <is...@apache.org>
Committed: Thu Mar 27 17:58:28 2014 +0530
----------------------------------------------------------------------
.../stratos/cli/RestCommandLineService.java | 27 ++++++++++++++
.../apache/stratos/cli/StratosApplication.java | 5 ++-
.../stratos/cli/commands/SyncCommand.java | 8 ++--
.../repository/RepositoryNotification.java | 39 +++++++++++---------
.../rest/endpoint/services/ServiceUtils.java | 15 ++++++++
.../rest/endpoint/services/StratosAdmin.java | 11 ++++++
6 files changed, 82 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/bf70f20f/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java
index 61c5314..b49f1c9 100644
--- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/RestCommandLineService.java
@@ -82,6 +82,7 @@ public class RestCommandLineService {
private final String addTenantEndPoint = "/stratos/admin/tenant";
private final String unsubscribeTenantEndPoint = "/stratos/admin/cartridge/unsubscribe";
private final String cartridgeDeploymentEndPoint = "/stratos/admin/cartridge/definition";
+ private final String syncEndPoint = "/stratos/admin/sync";
private final String partitionDeploymentEndPoint = "/stratos/admin/policy/deployment/partition";
private final String autoscalingPolicyDeploymentEndPoint = "/stratos/admin/policy/autoscale";
private final String deploymentPolicyDeploymentEndPoint = "/stratos/admin/policy/deployment";
@@ -1648,6 +1649,32 @@ public class RestCommandLineService {
httpClient.getConnectionManager().shutdown();
}
}
+
+ public void sync(String alias) throws CommandException {
+ DefaultHttpClient httpClient = new DefaultHttpClient();
+ try {
+ HttpResponse response = restClient.doPost(httpClient, restClient.getBaseURL() + syncEndPoint, alias);
+
+ String responseCode = "" + response.getStatusLine().getStatusCode();
+
+ if (responseCode.equals(CliConstants.RESPONSE_OK)) {
+ System.out.format("Synchronizing repository for alias: %s%n", alias);
+ return;
+ } else {
+ GsonBuilder gsonBuilder = new GsonBuilder();
+ Gson gson = gsonBuilder.create();
+ String resultString = getHttpResponseString(response);
+ ExceptionMapper exception = gson.fromJson(resultString, ExceptionMapper.class);
+ System.out.println(exception);
+ return;
+ }
+
+ } catch (Exception e) {
+ handleException("Exception when synchronizing repository for alias: " + alias, e);
+ } finally {
+ httpClient.getConnectionManager().shutdown();
+ }
+ }
// This class convert JSON string to deploymentpolicylist object
private class DeploymentPolicyList {
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/bf70f20f/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java
index 9d435d7..8a888ee 100644
--- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/StratosApplication.java
@@ -64,6 +64,7 @@ import org.apache.stratos.cli.commands.PartitionCommand;
import org.apache.stratos.cli.commands.PartitionDeploymentCommand;
import org.apache.stratos.cli.commands.SubscribeCommand;
import org.apache.stratos.cli.commands.SubscribedCartridgeInfoCommand;
+import org.apache.stratos.cli.commands.SyncCommand;
import org.apache.stratos.cli.commands.UndeployCartridgeDefinitionCommand;
import org.apache.stratos.cli.commands.UndeployServiceDefinitionCommand;
import org.apache.stratos.cli.commands.UnsubscribeCommand;
@@ -206,8 +207,8 @@ public class StratosApplication extends CommandLineApplication<StratosCommandCon
//command = new RemoveDomainMappingCommand();
//commands.put(command.getName(), command);
- //command = new SyncCommand();
- //commands.put(command.getName(), command);
+ command = new SyncCommand();
+ commands.put(command.getName(), command);
//command = new PoliciesCommand();
//commands.put(command.getName(), command);
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/bf70f20f/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/SyncCommand.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/SyncCommand.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/SyncCommand.java
index 7c32a27..f866813 100644
--- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/SyncCommand.java
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/SyncCommand.java
@@ -19,13 +19,13 @@
package org.apache.stratos.cli.commands;
import org.apache.commons.cli.Options;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import org.apache.stratos.cli.Command;
-import org.apache.stratos.cli.CommandLineService;
+import org.apache.stratos.cli.RestCommandLineService;
import org.apache.stratos.cli.StratosCommandContext;
import org.apache.stratos.cli.exception.CommandException;
import org.apache.stratos.cli.utils.CliConstants;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class SyncCommand implements Command<StratosCommandContext> {
@@ -60,7 +60,7 @@ public class SyncCommand implements Command<StratosCommandContext> {
logger.debug("Synchronizing repository for alias {}", alias);
}
- CommandLineService.getInstance().sync(alias);
+ RestCommandLineService.getInstance().sync(alias);
return CliConstants.SUCCESSFUL_CODE;
} else {
context.getStratosApplication().printUsage(getName());
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/bf70f20f/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/repository/RepositoryNotification.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/repository/RepositoryNotification.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/repository/RepositoryNotification.java
index 6b543d2..a814055 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/repository/RepositoryNotification.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/repository/RepositoryNotification.java
@@ -48,24 +48,29 @@ public class RepositoryNotification {
}
for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
-
- if (cartridgeSubscription.getRepository() != null) {
- InstanceNotificationPublisher publisher = new InstanceNotificationPublisher();
- publisher.sendArtifactUpdateEvent(cartridgeSubscription.getRepository(), String.valueOf(cartridgeSubscription.getCluster().getId()),
- String.valueOf(cartridgeSubscription.getSubscriber().getTenantId()));
-
- if (log.isDebugEnabled()) {
- log.debug("Git pull request from " + cartridgeSubscription.getRepository() + "repository, for the tenant " +
- String.valueOf(cartridgeSubscription.getSubscriber().getTenantId()));
- }
-
- } else {
- if(log.isDebugEnabled()) {
- log.debug("No repository found for subscription with alias: " + cartridgeSubscription.getAlias() + ", type: " + cartridgeSubscription.getType()+
- ". Not sending the Artifact Updated event");
- }
- }
+ updateRepository(cartridgeSubscription);
}
}
}
+
+ public void updateRepository(CartridgeSubscription cartridgeSubscription) {
+ if (cartridgeSubscription.getRepository() != null) {
+ InstanceNotificationPublisher publisher = new InstanceNotificationPublisher();
+ publisher.sendArtifactUpdateEvent(cartridgeSubscription.getRepository(),
+ String.valueOf(cartridgeSubscription.getCluster().getId()),
+ String.valueOf(cartridgeSubscription.getSubscriber().getTenantId()));
+
+ if (log.isDebugEnabled()) {
+ log.debug("Git pull request from " + cartridgeSubscription.getRepository()
+ + "repository, for the tenant "
+ + String.valueOf(cartridgeSubscription.getSubscriber().getTenantId()));
+ }
+
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("No repository found for subscription with alias: " + cartridgeSubscription.getAlias()
+ + ", type: " + cartridgeSubscription.getType() + ". Not sending the Artifact Updated event");
+ }
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/bf70f20f/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 ce3bcf1..54eb15b 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
@@ -954,6 +954,10 @@ public class ServiceUtils {
}
return true;
}
+
+ public static CartridgeSubscription getCartridgeSubscription(String alias, ConfigurationContext configurationContext) {
+ return cartridgeSubsciptionManager.getCartridgeSubscription(ApplicationManagementUtil.getTenantId(configurationContext), alias);
+ }
static SubscriptionInfo subscribeToCartridge (CartridgeInfoBean cartridgeInfoBean, ConfigurationContext configurationContext, String tenantUsername,
String tenantDomain) throws RestAPIException {
@@ -1164,5 +1168,16 @@ public class ServiceUtils {
throw new RestAPIException(msg, e);
}
}
+
+ static void sendRepositoryNotification(CartridgeSubscription cartridgeSubscription) throws RestAPIException {
+ try {
+ RepositoryNotification repoNotification = new RepositoryNotification();
+ repoNotification.updateRepository(cartridgeSubscription);
+ } catch (Exception e) {
+ String msg = "Failed to get git repository notifications. Cause : " + e.getMessage();
+ log.error(msg, e);
+ throw new RestAPIException(msg, e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/bf70f20f/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 8198848..5f411dc 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
@@ -26,6 +26,7 @@ import org.apache.stratos.common.util.ClaimsMgtUtil;
import org.apache.stratos.common.util.CommonUtil;
import org.apache.stratos.manager.dto.Cartridge;
import org.apache.stratos.manager.dto.SubscriptionInfo;
+import org.apache.stratos.manager.subscription.CartridgeSubscription;
import org.apache.stratos.rest.endpoint.ServiceHolder;
import org.apache.stratos.rest.endpoint.Utils;
import org.apache.stratos.rest.endpoint.annotation.AuthorizationAction;
@@ -61,6 +62,7 @@ import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@@ -961,6 +963,15 @@ public class StratosAdmin extends AbstractAdmin {
ServiceUtils.getGitRepositoryNotification(payload);
}
+
+ @POST
+ @Path("/sync")
+ @Consumes("application/json")
+ @AuthorizationAction("/permission/protected/manage/monitor/tenants")
+ public void synchronizeRepository(String alias) throws RestAPIException {
+ CartridgeSubscription cartridgeSubscription = ServiceUtils.getCartridgeSubscription(alias, getConfigContext());
+ ServiceUtils.sendRepositoryNotification(cartridgeSubscription);
+ }
private List<TenantInfoBean> getAllTenants() throws RestAPIException {
TenantManager tenantManager = ServiceHolder.getTenantManager();