You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/09/24 13:31:30 UTC
[04/12] git commit: Adding ListUsers API method,
and changes to existing code
Adding ListUsers API method, and changes to existing code
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/38d7f726
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/38d7f726
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/38d7f726
Branch: refs/heads/docker-integration
Commit: 38d7f7269893166d0ab154e0e5e8b4a399a1a9e3
Parents: d789aa6
Author: lasinducharith <la...@gmail.com>
Authored: Mon Sep 15 19:21:30 2014 +0530
Committer: Nirmal Fernando <ni...@gmail.com>
Committed: Wed Sep 24 17:00:43 2014 +0530
----------------------------------------------------------------------
.../stratos/cli/RestCommandLineService.java | 82 ++++++
.../apache/stratos/cli/StratosApplication.java | 5 +
.../apache/stratos/cli/beans/UserInfoBean.java | 3 -
.../stratos/cli/commands/DeleteUserCommand.java | 6 +-
.../stratos/cli/commands/ListAllUsers.java | 65 +++++
.../apache/stratos/cli/utils/CliConstants.java | 5 +
.../internal/ADCManagementServerComponent.java | 267 ++++++++++---------
.../manager/listener/TenantUserRoleCreator.java | 42 +--
.../manager/user/mgt/StratosUserManager.java | 91 +++++--
.../manager/utils/CartridgeConstants.java | 17 --
.../manager/utils/PermissionConstants.java | 36 +++
.../stratos/manager/utils/UserRoleCreator.java | 46 ++--
.../rest/endpoint/services/ServiceUtils.java | 46 +++-
.../rest/endpoint/services/StratosAdmin.java | 16 ++
.../stratos-test/WEB-INF/schemas/schema.xsd | 6 +-
.../webapp/stratos/WEB-INF/schemas/schema.xsd | 6 +-
16 files changed, 487 insertions(+), 252 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/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 7aa3d90..85ffb05 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
@@ -96,6 +96,7 @@ public class RestCommandLineService {
private final String deactivateTenantRestEndPoint = "/stratos/admin/tenant/deactivate";
private final String activateTenantRestEndPoint = "/stratos/admin/tenant/activate";
private final String listAllTenantRestEndPoint = "/stratos/admin/tenant/list";
+ private final String listAllUserRestEndPoint = "/stratos/admin/user/list";
private final String getListAvailableCartridgeInfoRestEndPoint = "/stratos/admin/cartridge/available/info";
@@ -1247,6 +1248,71 @@ public class RestCommandLineService {
}
}
+ // This method helps to list all users
+ public void listAllUsers() throws CommandException {
+ DefaultHttpClient httpClient = new DefaultHttpClient();
+ try {
+ HttpResponse response = restClient.doGet(httpClient, restClient.getBaseURL()
+ + listAllUserRestEndPoint);
+
+ String responseCode = "" + response.getStatusLine().getStatusCode();
+ String resultString = getHttpResponseString(response);
+
+ GsonBuilder gsonBuilder = new GsonBuilder();
+ Gson gson = gsonBuilder.create();
+
+ if ( ! responseCode.equals(CliConstants.RESPONSE_OK)) {
+ ExceptionMapper exception = gson.fromJson(resultString, ExceptionMapper.class);
+ System.out.println(exception);
+ return;
+ }
+
+ if (resultString == null) {
+ System.out.println("Response content is empty");
+ return;
+ }
+
+ UserInfoList userInfoList = gson.fromJson(resultString, UserInfoList.class);
+
+ if (userInfoList == null) {
+ System.out.println("User information list is empty");
+ return;
+ }
+
+ RowMapper<UserInfoBean> userInfoMapper = new RowMapper<UserInfoBean>() {
+
+ public String[] getData(UserInfoBean userInfo) {
+ String[] data = new String[2];
+ data[0] = userInfo.getUserName();
+ data[1] = userInfo.getRole();
+ return data;
+ }
+ };
+
+ UserInfoBean[] users = new UserInfoBean[userInfoList.getUserInfoBean().size()];
+ users = userInfoList.getUserInfoBean().toArray(users);
+
+ if (users.length == 0) {
+ String message = "Cannot find any User. "
+ + "Please create a new user using [" + CliConstants.ADD_USER + "] command.";
+ if (logger.isDebugEnabled()) {
+ logger.debug(message);
+ }
+ System.out.println(message);
+ return;
+ }
+
+ System.out.println("Available Tenants:" );
+ CommandLineUtils.printTable(users, userInfoMapper, "Username", "Role");
+ System.out.println();
+
+ } catch (Exception e) {
+ handleException("Exception in listing partitions", e);
+ } finally {
+ httpClient.getConnectionManager().shutdown();
+ }
+ }
+
// This method helps to unsubscribe cartridges
public void unsubscribe(String alias) throws CommandException {
DefaultHttpClient httpClient = new DefaultHttpClient();
@@ -1990,6 +2056,22 @@ public class RestCommandLineService {
}
}
+ // This class convert JSON string to UserInfoBean object
+ private class UserInfoList {
+ private ArrayList<UserInfoBean> userInfoBean;
+
+ public ArrayList<UserInfoBean> getUserInfoBean() {
+ return userInfoBean;
+ }
+
+ public void setUserInfoBean(ArrayList<UserInfoBean> userInfoBean) {
+ this.userInfoBean = userInfoBean;
+ }
+
+ UserInfoList() {
+ userInfoBean = new ArrayList<UserInfoBean>();
+ }
+ }
// This class is for convert JSON string to CartridgeList object
private class CartridgeList {
private ArrayList<Cartridge> cartridge;
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/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 fae2db5..2ecd891 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
@@ -58,6 +58,7 @@ import org.apache.stratos.cli.commands.DescribePartitionCommand;
import org.apache.stratos.cli.commands.ExitCommand;
import org.apache.stratos.cli.commands.HelpCommand;
import org.apache.stratos.cli.commands.ListAllTenants;
+import org.apache.stratos.cli.commands.ListAllUsers;
import org.apache.stratos.cli.commands.ListCartridgesCommand;
import org.apache.stratos.cli.commands.ListDeployServiceCommand;
import org.apache.stratos.cli.commands.ListMemberCommand;
@@ -137,12 +138,16 @@ public class StratosApplication extends CommandLineApplication<StratosCommandCon
command = new AddTenantCommand();
commands.put(command.getName(), command);
+ //Adding User Operations
command = new AddUserCommand();
commands.put(command.getName(), command);
command = new DeleteUserCommand();
commands.put(command.getName(), command);
+ command = new ListAllUsers();
+ commands.put(command.getName(), command);
+
//command = new DeleteTenantCommand();
//commands.put(command.getName(), command);
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/UserInfoBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/UserInfoBean.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/UserInfoBean.java
index 9830f2e..9f36223 100644
--- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/UserInfoBean.java
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/beans/UserInfoBean.java
@@ -19,9 +19,6 @@
package org.apache.stratos.cli.beans;
-import javax.xml.bind.annotation.XmlRootElement;
-
-@XmlRootElement
public class UserInfoBean {
private String userName;
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DeleteUserCommand.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DeleteUserCommand.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DeleteUserCommand.java
index ab46374..9be1f26 100644
--- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DeleteUserCommand.java
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/DeleteUserCommand.java
@@ -56,11 +56,11 @@ public class DeleteUserCommand implements Command<StratosCommandContext> {
logger.debug("Executing {} command...", getName());
}
if (args != null && args.length == 1) {
- String id = args[0];
+ String username = args[0];
if (logger.isDebugEnabled()) {
- logger.debug("Getting delete user info {}", id);
+ logger.debug("Getting delete user info {}", username);
}
- RestCommandLineService.getInstance().deleteUser(id);
+ RestCommandLineService.getInstance().deleteUser(username);
return CliConstants.SUCCESSFUL_CODE;
} else {
context.getStratosApplication().printUsage(getName());
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListAllUsers.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListAllUsers.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListAllUsers.java
new file mode 100644
index 0000000..bea160e
--- /dev/null
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/commands/ListAllUsers.java
@@ -0,0 +1,65 @@
+/**
+ * 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.cli.commands;
+
+import org.apache.commons.cli.Options;
+import org.apache.stratos.cli.Command;
+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 ListAllUsers implements Command<StratosCommandContext> {
+
+ private static final Logger logger = LoggerFactory.getLogger(ListAllUsers.class);
+
+ public ListAllUsers(){
+ }
+
+ public String getName() {
+ return CliConstants.LIST_USERS;
+ }
+
+ public String getDescription() {
+ return "List available users";
+ }
+
+ public String getArgumentSyntax() {
+ return null;
+ }
+
+ public int execute(StratosCommandContext context, String[] args) throws CommandException {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Executing {} command...", getName());
+ }
+ if (args == null || args.length == 0) {
+ RestCommandLineService.getInstance().listAllUsers();
+ return CliConstants.SUCCESSFUL_CODE;
+ } else {
+ context.getStratosApplication().printUsage(getName());
+ return CliConstants.BAD_ARGS_CODE;
+ }
+ }
+
+ public Options getOptions() {
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java
index bda791b..cebed60 100644
--- a/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java
+++ b/components/org.apache.stratos.cli/src/main/java/org/apache/stratos/cli/utils/CliConstants.java
@@ -110,6 +110,11 @@ public class CliConstants {
public static final String LIST_TENANTS = "list-tenants";
/**
+ * List tenants
+ */
+ public static final String LIST_USERS = "list-users";
+
+ /**
* List deployment policies
*/
public static final String LIST_DEPLOYMENT_POLICIES = "list-deployment-policies";
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/ADCManagementServerComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/ADCManagementServerComponent.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/ADCManagementServerComponent.java
index cc9f34f..38ec2c5 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/ADCManagementServerComponent.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/internal/ADCManagementServerComponent.java
@@ -1,18 +1,18 @@
/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
+ * 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
+ * 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
+ * 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
+ * "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.
*/
@@ -21,23 +21,26 @@ package org.apache.stratos.manager.internal;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.manager.listener.InstanceStatusListener;
+import org.apache.stratos.manager.listener.TenantUserRoleCreator;
import org.apache.stratos.manager.publisher.TenantEventPublisher;
import org.apache.stratos.manager.publisher.TenantSynchronizerTaskScheduler;
import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
import org.apache.stratos.manager.topology.receiver.StratosManagerTopologyEventReceiver;
import org.apache.stratos.manager.utils.CartridgeConfigFileReader;
+import org.apache.stratos.manager.utils.UserRoleCreator;
+import org.apache.stratos.messaging.broker.publish.EventPublisherPool;
import org.apache.stratos.messaging.broker.subscribe.TopicSubscriber;
import org.apache.stratos.messaging.util.Constants;
import org.osgi.service.component.ComponentContext;
import org.wso2.carbon.ntask.core.service.TaskService;
import org.wso2.carbon.registry.core.service.RegistryService;
+import org.wso2.carbon.user.api.UserStoreManager;
+import org.wso2.carbon.user.core.UserRealm;
import org.wso2.carbon.user.core.service.RealmService;
import org.wso2.carbon.utils.ConfigurationContextService;
/**
- * @scr.component
- * name=
- * "org.wso2.carbon.hosting.mgt.internal.ADCManagementServerComponent"
+ * @scr.component name="org.wso2.carbon.hosting.mgt.internal.ADCManagementServerComponent"
* immediate="true"
* @scr.reference name="config.context.service"
* interface="org.wso2.carbon.utils.ConfigurationContextService"
@@ -53,141 +56,141 @@ import org.wso2.carbon.utils.ConfigurationContextService;
* "org.wso2.carbon.registry.core.service.RegistryService"
* cardinality="1..1" policy="dynamic" bind="setRegistryService"
* unbind="unsetRegistryService"
- * @scr.reference name="ntask.component"
- * interface="org.wso2.carbon.ntask.core.service.TaskService"
+ * @scr.reference name="ntask.component" interface="org.wso2.carbon.ntask.core.service.TaskService"
* cardinality="1..1" policy="dynamic" bind="setTaskService"
* unbind="unsetTaskService"
*/
public class ADCManagementServerComponent {
- private static final Log log = LogFactory.getLog(ADCManagementServerComponent.class);
- private StratosManagerTopologyEventReceiver stratosManagerTopologyEventReceiver;
+ private static final Log log = LogFactory.getLog(ADCManagementServerComponent.class);
+ private StratosManagerTopologyEventReceiver stratosManagerTopologyEventReceiver;
- protected void activate(ComponentContext componentContext) throws Exception {
+ protected void activate(ComponentContext componentContext) throws Exception {
try {
CartridgeConfigFileReader.readProperties();
- // Schedule complete tenant event synchronizer
- if (log.isDebugEnabled()) {
- log.debug("Scheduling tenant synchronizer task...");
- }
- TenantSynchronizerTaskScheduler.schedule(ServiceReferenceHolder.getInstance()
- .getTaskService());
-
- // Register tenant event publisher
- if (log.isDebugEnabled()) {
- log.debug("Starting tenant event publisher...");
- }
- TenantEventPublisher tenantEventPublisher = new TenantEventPublisher();
- componentContext.getBundleContext()
- .registerService(org.apache.stratos.common.listeners.TenantMgtListener.class.getName(),
- tenantEventPublisher, null);
-
- // Start instance status topic subscriber
- if (log.isDebugEnabled()) {
- log.debug("Starting instance status topic subscriber...");
- }
- TopicSubscriber subscriber = new TopicSubscriber(Constants.INSTANCE_STATUS_TOPIC);
- subscriber.setMessageListener(new InstanceStatusListener());
- Thread tsubscriber = new Thread(subscriber);
+ // Schedule complete tenant event synchronizer
+ if(log.isDebugEnabled()) {
+ log.debug("Scheduling tenant synchronizer task...");
+ }
+ TenantSynchronizerTaskScheduler.schedule(ServiceReferenceHolder.getInstance().getTaskService());
+
+ // Register tenant event publisher
+ if(log.isDebugEnabled()) {
+ log.debug("Starting tenant event publisher...");
+ }
+ TenantEventPublisher tenantEventPublisher = new TenantEventPublisher();
+ componentContext.getBundleContext().registerService(
+ org.apache.stratos.common.listeners.TenantMgtListener.class.getName(),
+ tenantEventPublisher, null);
+
+ // Start instance status topic subscriber
+ if(log.isDebugEnabled()) {
+ log.debug("Starting instance status topic subscriber...");
+ }
+ TopicSubscriber subscriber = new TopicSubscriber(Constants.INSTANCE_STATUS_TOPIC);
+ subscriber.setMessageListener(new InstanceStatusListener());
+ Thread tsubscriber = new Thread(subscriber);
tsubscriber.start();
- // initializing the topology event subscriber
- /*
- * TopicSubscriber topologyTopicSubscriber = new
- * TopicSubscriber(Constants.TOPOLOGY_TOPIC);
- * topologyTopicSubscriber.setMessageListener(new
- * TopologyEventListner());
- * Thread topologyTopicSubscriberThread = new
- * Thread(topologyTopicSubscriber);
- * topologyTopicSubscriberThread.start();
- *
- * //Starting Topology Receiver
- * TopologyReceiver topologyReceiver = new TopologyReceiver();
- * Thread topologyReceiverThread = new Thread(topologyReceiver);
- * topologyReceiverThread.start();
- */
-
- stratosManagerTopologyEventReceiver = new StratosManagerTopologyEventReceiver();
- Thread topologyReceiverThread = new Thread(stratosManagerTopologyEventReceiver);
- topologyReceiverThread.start();
- log.info("Topology receiver thread started");
-
- // retrieve persisted CartridgeSubscriptions
- new DataInsertionAndRetrievalManager().cachePersistedSubscriptions();
-
- // Component activated successfully
- log.info("ADC management server component is activated");
-
- } catch (Exception e) {
- if (log.isFatalEnabled()) {
- log.fatal("Could not activate ADC management server component", e);
- }
- }
- }
-
- protected void setConfigurationContextService(ConfigurationContextService contextService) {
- DataHolder.setClientConfigContext(contextService.getClientConfigContext());
- DataHolder.setServerConfigContext(contextService.getServerConfigContext());
-
- }
-
- protected void unsetConfigurationContextService(ConfigurationContextService contextService) {
- DataHolder.setClientConfigContext(null);
- DataHolder.setServerConfigContext(null);
- }
-
- protected void setRealmService(RealmService realmService) {
- // keeping the realm service in the DataHolder class
- DataHolder.setRealmService(realmService);
- }
-
- protected void unsetRealmService(RealmService realmService) {
- }
-
- protected void setRegistryService(RegistryService registryService) {
- try {
- DataHolder.setRegistryService(registryService);
+ RealmService realmService = DataHolder.getRealmService();
+ UserRealm realm = realmService.getBootstrapRealm();
+ UserStoreManager userStoreManager = realm.getUserStoreManager();
+ //Create a Internal/user Role at server start-up
+ UserRoleCreator.CreateTenantUserRole(userStoreManager);
+
+ TenantUserRoleCreator tenantUserRoleCreator = new TenantUserRoleCreator();
+ componentContext.getBundleContext().registerService(
+ org.apache.stratos.common.listeners.TenantMgtListener.class.getName(),
+ tenantUserRoleCreator, null);
+
+ //initializing the topology event subscriber
+ /*TopicSubscriber topologyTopicSubscriber = new TopicSubscriber(Constants.TOPOLOGY_TOPIC);
+ topologyTopicSubscriber.setMessageListener(new TopologyEventListner());
+ Thread topologyTopicSubscriberThread = new Thread(topologyTopicSubscriber);
+ topologyTopicSubscriberThread.start();
+
+ //Starting Topology Receiver
+ TopologyReceiver topologyReceiver = new TopologyReceiver();
+ Thread topologyReceiverThread = new Thread(topologyReceiver);
+ topologyReceiverThread.start();*/
+
+ stratosManagerTopologyEventReceiver = new StratosManagerTopologyEventReceiver();
+ Thread topologyReceiverThread = new Thread(stratosManagerTopologyEventReceiver);
+ topologyReceiverThread.start();
+ log.info("Topology receiver thread started");
+
+ // retrieve persisted CartridgeSubscriptions
+ new DataInsertionAndRetrievalManager().cachePersistedSubscriptions();
+
+ //Component activated successfully
+ log.info("ADC management server component is activated");
+
} catch (Exception e) {
- log.error("Cannot retrieve governance registry", e);
+ if(log.isFatalEnabled()) {
+ log.fatal("Could not activate ADC management server component", e);
+ }
}
}
- protected void unsetRegistryService(RegistryService registryService) {
- }
-
- /*
- * protected void setTopologyManagementService(TopologyManagementService
- * topologyMgtService) {
- * DataHolder.setTopologyMgtService(topologyMgtService);
- * }
- *
- * protected void unsetTopologyManagementService(TopologyManagementService
- * topologyMgtService) {
- * }
- */
-
- protected void setTaskService(TaskService taskService) {
- if (log.isDebugEnabled()) {
- log.debug("Setting the task service");
- }
- ServiceReferenceHolder.getInstance().setTaskService(taskService);
- }
-
- protected void unsetTaskService(TaskService taskService) {
- if (log.isDebugEnabled()) {
- log.debug("Un-setting the task service");
- }
- ServiceReferenceHolder.getInstance().setTaskService(null);
- }
-
- protected void deactivate(ComponentContext context) {
- // Close event publisher connections to message broker
- // EventPublisherPool.close(Constants.INSTANCE_NOTIFIER_TOPIC);
- // EventPublisherPool.close(Constants.TENANT_TOPIC);
-
- // terminate Stratos Manager Topology Receiver
- stratosManagerTopologyEventReceiver.terminate();
- }
+ protected void setConfigurationContextService(ConfigurationContextService contextService) {
+ DataHolder.setClientConfigContext(contextService.getClientConfigContext());
+ DataHolder.setServerConfigContext(contextService.getServerConfigContext());
+
+ }
+
+ protected void unsetConfigurationContextService(ConfigurationContextService contextService) {
+ DataHolder.setClientConfigContext(null);
+ DataHolder.setServerConfigContext(null);
+ }
+
+ protected void setRealmService(RealmService realmService) {
+ // keeping the realm service in the DataHolder class
+ DataHolder.setRealmService(realmService);
+ }
+
+ protected void unsetRealmService(RealmService realmService) {
+ }
+
+ protected void setRegistryService(RegistryService registryService) {
+ try {
+ DataHolder.setRegistryService(registryService);
+ } catch (Exception e) {
+ log.error("Cannot retrieve governance registry", e);
+ }
+ }
+
+ protected void unsetRegistryService(RegistryService registryService) {
+ }
+
+ /*protected void setTopologyManagementService(TopologyManagementService topologyMgtService) {
+ DataHolder.setTopologyMgtService(topologyMgtService);
+ }
+
+ protected void unsetTopologyManagementService(TopologyManagementService topologyMgtService) {
+ }*/
+
+ protected void setTaskService(TaskService taskService) {
+ if (log.isDebugEnabled()) {
+ log.debug("Setting the task service");
+ }
+ ServiceReferenceHolder.getInstance().setTaskService(taskService);
+ }
+
+ protected void unsetTaskService(TaskService taskService) {
+ if (log.isDebugEnabled()) {
+ log.debug("Un-setting the task service");
+ }
+ ServiceReferenceHolder.getInstance().setTaskService(null);
+ }
+
+ protected void deactivate(ComponentContext context) {
+ // Close event publisher connections to message broker
+ EventPublisherPool.close(Constants.INSTANCE_NOTIFIER_TOPIC);
+ EventPublisherPool.close(Constants.TENANT_TOPIC);
+
+ //terminate Stratos Manager Topology Receiver
+ stratosManagerTopologyEventReceiver.terminate();
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/listener/TenantUserRoleCreator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/listener/TenantUserRoleCreator.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/listener/TenantUserRoleCreator.java
index 50dc6ad..97d42dc 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/listener/TenantUserRoleCreator.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/listener/TenantUserRoleCreator.java
@@ -25,7 +25,9 @@ import org.apache.stratos.common.beans.TenantInfoBean;
import org.apache.stratos.common.exception.StratosException;
import org.apache.stratos.common.listeners.TenantMgtListener;
import org.apache.stratos.manager.internal.DataHolder;
+import org.apache.stratos.manager.user.mgt.exception.UserManagementException;
import org.apache.stratos.manager.utils.CartridgeConstants;
+import org.apache.stratos.manager.utils.UserRoleCreator;
import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.user.api.Permission;
@@ -39,11 +41,10 @@ import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
public class TenantUserRoleCreator implements TenantMgtListener {
private transient static final Log log = LogFactory.getLog(TenantUserRoleCreator.class);
- private static String role = "Internal/user";
/**
* Create an 'user' role at tenant creation time
- * @param tenantInfo
+ * @param tenantInfo TenantInfoBean
* @throws StratosException
*/
@Override
@@ -55,37 +56,18 @@ public class TenantUserRoleCreator implements TenantMgtListener {
PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
carbonContext.setTenantDomain(tenantInfo.getTenantDomain());
carbonContext.setTenantId(tenantInfo.getTenantId());
-
+ //Get tenant UserRealm & UserStoreManager
UserRealm userRealm = DataHolder.getRealmService().getTenantUserRealm(tenantInfo.getTenantId());
- UserStoreManager manager = userRealm.getUserStoreManager();
-
- if (!manager.isExistingRole(role)) {
- if (log.isDebugEnabled()) {
- log.debug("Creating new role: " + role);
- }
-
- Permission[] TenantUserPermissions = new Permission[]{ new Permission(CartridgeConstants.Permissions.VIEW_AUTOSCALING_POLICY, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_DEPLOYMENT_POLICY, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_CARTRIDGE, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_SERVICE, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_SUBSCRIPTION, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_DOMAIN, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_CLUSTER, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_INSTANCE, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_KUBERNETES, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.ADD_GIT_SYNC, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.ADD_SUBSCRIPTION, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.ADD_DOMAIN, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.REST_LOGIN, UserMgtConstants.EXECUTE_ACTION),
- };
-
- String[] userList = new String[]{};
- manager.addRole(role, userList, TenantUserPermissions);
- }
+ UserStoreManager userStoreManager = userRealm.getUserStoreManager();
+
+ UserRoleCreator.CreateTenantUserRole(userStoreManager);
} catch (UserStoreException e) {
- log.error("Error while creating the role: " + role + " - " +
- e.getMessage());
+ log.error(e.getMessage(), e);
+ throw new StratosException(e.getMessage(), e);
+ } catch (UserManagementException e) {
+ log.error(e.getMessage(), e);
+ throw new StratosException(e.getMessage(), e);
} finally {
PrivilegedCarbonContext.endTenantFlow();
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/user/mgt/StratosUserManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/user/mgt/StratosUserManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/user/mgt/StratosUserManager.java
index ae55ad9..75996df 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/user/mgt/StratosUserManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/user/mgt/StratosUserManager.java
@@ -22,6 +22,7 @@ package org.apache.stratos.manager.user.mgt;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.beans.TenantInfoBean;
import org.apache.stratos.manager.internal.DataHolder;
import org.apache.stratos.manager.user.mgt.beans.UserInfoBean;
import org.apache.stratos.manager.user.mgt.exception.UserManagementException;
@@ -33,18 +34,13 @@ import org.wso2.carbon.user.core.service.RealmService;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
public class StratosUserManager {
private transient static final Log log = LogFactory.getLog(StratosUserManager.class);
- private UserStoreManager userStoreManager;
-
-
- public StratosUserManager(UserStoreManager userStoreManager) {
- this.userStoreManager = userStoreManager;
-
- }
+ private String internalEveryoneRole = "Internal/everyone";
/**
* Add a user to the user store
@@ -52,7 +48,7 @@ public class StratosUserManager {
* @param userInfoBean
* @throws UserStoreException
*/
- public void addUser(UserInfoBean userInfoBean) throws UserManagementException {
+ public void addUser(UserStoreManager userStoreManager, UserInfoBean userInfoBean) throws UserManagementException {
try {
@@ -61,6 +57,7 @@ public class StratosUserManager {
log.debug("Creating new User: " + userInfoBean.getUserName());
}
}
+
String[] roles = new String[1];
roles[0] = userInfoBean.getRole();
Map<String, String> claims = new HashMap<String, String>();
@@ -74,16 +71,15 @@ public class StratosUserManager {
log.error(e.getMessage(), e);
throw new UserManagementException(e.getMessage(), e);
}
-
}
/**
- * Delete the user with the given user name
+ * Delete the user with the given username
*
- * @param userName The user name
+ * @param userName The username
* @throws UserStoreException
*/
- public void deleteUser(String userName) throws UserManagementException {
+ public void deleteUser(UserStoreManager userStoreManager, String userName) throws UserManagementException {
try {
userStoreManager.deleteUser(userName);
@@ -99,29 +95,19 @@ public class StratosUserManager {
*
* @param userInfoBean
*/
- public void updateUser(UserInfoBean userInfoBean) throws UserManagementException {
+ public void updateUser(UserStoreManager userStoreManager, UserInfoBean userInfoBean) throws UserManagementException {
try {
if (userStoreManager.isExistingUser(userInfoBean.getUserName())) {
String[] newRoles = new String[1];
newRoles[0] = userInfoBean.getRole();
-
- //String[] rolesToDelete = new String[1];
- ArrayList<String> rolesToDelete = new ArrayList<String>();
- String[] currentRolesList = userStoreManager.getRoleListOfUser(userInfoBean.getUserName());
- for(String role: currentRolesList){
- if(!role.equals("Internal/everyone")){
- rolesToDelete.add(role);
- }
- }
- String[] rolesToDeleteArray = new String[rolesToDelete.size()];
Map<String, String> claims = new HashMap<String, String>();
claims.put(UserCoreConstants.ClaimTypeURIs.EMAIL_ADDRESS, userInfoBean.getEmail());
claims.put(UserCoreConstants.ClaimTypeURIs.GIVEN_NAME, userInfoBean.getFirstName());
claims.put(UserCoreConstants.ClaimTypeURIs.SURNAME, userInfoBean.getLastName());
- userStoreManager.updateRoleListOfUser(userInfoBean.getUserName(), rolesToDelete.toArray(rolesToDeleteArray), newRoles);
+ userStoreManager.updateRoleListOfUser(userInfoBean.getUserName(), getRefinedListOfRolesOfUser(userStoreManager, userInfoBean.getUserName()), newRoles);
userStoreManager.setUserClaimValue(userInfoBean.getUserName(),UserCoreConstants.ClaimTypeURIs.EMAIL_ADDRESS, userInfoBean.getEmail(),userInfoBean.getProfileName());
userStoreManager.setUserClaimValue(userInfoBean.getUserName(),UserCoreConstants.ClaimTypeURIs.GIVEN_NAME, userInfoBean.getFirstName(),userInfoBean.getProfileName());
userStoreManager.setUserClaimValue(userInfoBean.getUserName(),UserCoreConstants.ClaimTypeURIs.SURNAME, userInfoBean.getLastName(),userInfoBean.getProfileName());
@@ -135,4 +121,61 @@ public class StratosUserManager {
}
+ /**
+ * Get a List of usernames and associated Roles
+ * @return List<UserInfoBean>
+ * @throws UserManagementException
+ */
+ public List<UserInfoBean> getAllUsers(UserStoreManager userStoreManager) throws UserManagementException{
+
+ String[] userRoles = null;
+ List<UserInfoBean> userList = new ArrayList<UserInfoBean>();
+
+ try {
+ userRoles = userStoreManager.getRoleNames();
+
+ for(String userRole: userRoles){
+ UserInfoBean userInfoBean = new UserInfoBean();
+ userInfoBean.setUserName(userRole);
+ userInfoBean.setRole(getRefinedListOfRolesOfUser(userStoreManager, userRole)[0]);
+ userList.add(userInfoBean);
+ }
+
+ } catch (UserStoreException e) {
+ log.error(e.getMessage(), e);
+ throw new UserManagementException(e.getMessage(), e);
+ }
+
+ return userList;
+ }
+
+ /**
+ * Get the List of userRoles except the everyone role
+ * @param username
+ * @return
+ * @throws UserManagementException
+ */
+ private String[] getRefinedListOfRolesOfUser(UserStoreManager userStoreManager, String username) throws UserManagementException{
+
+ ArrayList<String> rolesWithoutEveryoneRole = new ArrayList<String>();
+
+ try {
+
+ String[] allUserRoles = userStoreManager.getRoleListOfUser(username);
+
+ for(String role: allUserRoles){
+ if(!role.equals(internalEveryoneRole)){
+ rolesWithoutEveryoneRole.add(role);
+ }
+ }
+
+ } catch (UserStoreException e) {
+ log.error(e.getMessage(), e);
+ throw new UserManagementException(e.getMessage(), e);
+ }
+
+ String[] rolesWithoutEveryoneRoleArray = new String[rolesWithoutEveryoneRole.size()];
+ return rolesWithoutEveryoneRole.toArray(rolesWithoutEveryoneRoleArray);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/CartridgeConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/CartridgeConstants.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/CartridgeConstants.java
index fd0597f..2c6014e 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/CartridgeConstants.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/CartridgeConstants.java
@@ -105,21 +105,4 @@ public class CartridgeConstants {
public static final String ACTUAL_HOST = "actual.host";
public static final String HOSTINFO = "hostinfo/";
}
-
- public static final class Permissions {
- public static final String ADD_SUBSCRIPTION = "/permission/admin/manage/add/subscription";
- public static final String REST_LOGIN = "/permission/admin/restlogin";
- public static final String ADD_GIT_SYNC = "/permission/admin/manage/add/sync";
- public static final String ADD_DOMAIN = "/permission/admin/manage/add/domain";
- public static final String VIEW_AUTOSCALING_POLICY = "/permission/admin/manage/view/autoscalingPolicy";
- public static final String VIEW_DEPLOYMENT_POLICY = "/permission/admin/manage/view/deploymentPolicy";
- public static final String VIEW_SUBSCRIPTION = "/permission/admin/manage/view/subscription";
- public static final String VIEW_CARTRIDGE = "/permission/admin/manage/view/cartridge";
- public static final String VIEW_SERVICE = "/permission/admin/manage/view/service";
- public static final String VIEW_DOMAIN = "/permission/admin/manage/view/domain";
- public static final String VIEW_CLUSTER = "/permission/admin/manage/view/cluster";
- public static final String VIEW_INSTANCE = "/permission/admin/manage/view/instance";
- public static final String VIEW_KUBERNETES = "/permission/admin/manage/view/kubernetes";
- public static final String VIEW_PARTITION = "/permission/admin/manage/view/partition";
- }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/PermissionConstants.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/PermissionConstants.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/PermissionConstants.java
new file mode 100644
index 0000000..1235d5e
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/PermissionConstants.java
@@ -0,0 +1,36 @@
+/*
+ * 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.manager.utils;
+
+public class PermissionConstants {
+ public static final String ADD_SUBSCRIPTION = "/permission/admin/manage/add/subscription";
+ public static final String REST_LOGIN = "/permission/admin/restlogin";
+ public static final String ADD_GIT_SYNC = "/permission/admin/manage/add/sync";
+ public static final String ADD_DOMAIN = "/permission/admin/manage/add/domain";
+ public static final String VIEW_AUTOSCALING_POLICY = "/permission/admin/manage/view/autoscalingPolicy";
+ public static final String VIEW_DEPLOYMENT_POLICY = "/permission/admin/manage/view/deploymentPolicy";
+ public static final String VIEW_SUBSCRIPTION = "/permission/admin/manage/view/subscription";
+ public static final String VIEW_CARTRIDGE = "/permission/admin/manage/view/cartridge";
+ public static final String VIEW_SERVICE = "/permission/admin/manage/view/service";
+ public static final String VIEW_DOMAIN = "/permission/admin/manage/view/domain";
+ public static final String VIEW_CLUSTER = "/permission/admin/manage/view/cluster";
+ public static final String VIEW_INSTANCE = "/permission/admin/manage/view/instance";
+ public static final String VIEW_KUBERNETES = "/permission/admin/manage/view/kubernetes";
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/UserRoleCreator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/UserRoleCreator.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/UserRoleCreator.java
index a38fe45..1e92359 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/UserRoleCreator.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/UserRoleCreator.java
@@ -23,6 +23,7 @@ package org.apache.stratos.manager.utils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.manager.internal.DataHolder;
+import org.apache.stratos.manager.user.mgt.exception.UserManagementException;
import org.wso2.carbon.user.api.Permission;
import org.wso2.carbon.user.api.UserStoreException;
import org.wso2.carbon.user.api.UserStoreManager;
@@ -33,45 +34,42 @@ import org.wso2.carbon.user.mgt.UserMgtConstants;
public class UserRoleCreator {
private transient static final Log log = LogFactory.getLog(UserRoleCreator.class);
- private static String role = "Internal/user";
+ private static String userRole = "Internal/user";
/**
- * Creating a Tenant User Carbon Role at Server Start-up
+ * Creating a Internal/user Role at Carbon Server Start-up
*/
- public static void CreateTenantUserRole() {
+ public static void CreateTenantUserRole(UserStoreManager manager) throws UserManagementException{
try {
- RealmService realmService = DataHolder.getRealmService();
- UserRealm realm = realmService.getBootstrapRealm();
- UserStoreManager manager = realm.getUserStoreManager();
-
- if (!manager.isExistingRole(role)) {
+ if (!manager.isExistingRole(userRole)) {
if (log.isDebugEnabled()) {
- log.debug("Creating new role: " + role);
+ log.debug("Creating new role: " + userRole);
}
- Permission[] TenantUserPermissions = new Permission[]{ new Permission(CartridgeConstants.Permissions.VIEW_AUTOSCALING_POLICY, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_DEPLOYMENT_POLICY, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_CARTRIDGE, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_SERVICE, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_SUBSCRIPTION, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_DOMAIN, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_CLUSTER, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_INSTANCE, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.VIEW_KUBERNETES, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.ADD_GIT_SYNC, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.ADD_SUBSCRIPTION, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.ADD_DOMAIN, UserMgtConstants.EXECUTE_ACTION),
- new Permission(CartridgeConstants.Permissions.REST_LOGIN, UserMgtConstants.EXECUTE_ACTION),
+ Permission[] TenantUserPermissions = new Permission[]{ new Permission(PermissionConstants.VIEW_AUTOSCALING_POLICY, UserMgtConstants.EXECUTE_ACTION),
+ new Permission(PermissionConstants.VIEW_DEPLOYMENT_POLICY, UserMgtConstants.EXECUTE_ACTION),
+ new Permission(PermissionConstants.VIEW_CARTRIDGE, UserMgtConstants.EXECUTE_ACTION),
+ new Permission(PermissionConstants.VIEW_SERVICE, UserMgtConstants.EXECUTE_ACTION),
+ new Permission(PermissionConstants.VIEW_SUBSCRIPTION, UserMgtConstants.EXECUTE_ACTION),
+ new Permission(PermissionConstants.VIEW_DOMAIN, UserMgtConstants.EXECUTE_ACTION),
+ new Permission(PermissionConstants.VIEW_CLUSTER, UserMgtConstants.EXECUTE_ACTION),
+ new Permission(PermissionConstants.VIEW_INSTANCE, UserMgtConstants.EXECUTE_ACTION),
+ new Permission(PermissionConstants.VIEW_KUBERNETES, UserMgtConstants.EXECUTE_ACTION),
+ new Permission(PermissionConstants.ADD_GIT_SYNC, UserMgtConstants.EXECUTE_ACTION),
+ new Permission(PermissionConstants.ADD_SUBSCRIPTION, UserMgtConstants.EXECUTE_ACTION),
+ new Permission(PermissionConstants.ADD_DOMAIN, UserMgtConstants.EXECUTE_ACTION),
+ new Permission(PermissionConstants.REST_LOGIN, UserMgtConstants.EXECUTE_ACTION),
};
String[] userList = new String[]{};
- manager.addRole(role, userList, TenantUserPermissions);
+ manager.addRole(userRole, userList, TenantUserPermissions);
}
} catch (UserStoreException e) {
- log.error("Error while creating the role: " + role + " - " +
+ log.error("Error while creating the role: " + userRole + " - " +
e.getMessage());
+ throw new UserManagementException(e.getMessage(), e);
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/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 d8fc8ac..a9b1dc7 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
@@ -93,6 +93,7 @@ public class ServiceUtils {
private static Log log = LogFactory.getLog(ServiceUtils.class);
private static ServiceDeploymentManager serviceDeploymentManager = new ServiceDeploymentManager();
+ private static StratosUserManager stratosUserManager = new StratosUserManager();
static void deployCartridge(CartridgeDefinitionBean cartridgeDefinitionBean, ConfigurationContext ctxt,
String userName, String tenantDomain) throws RestAPIException {
@@ -1270,60 +1271,79 @@ public class ServiceUtils {
public static void addUser(UserInfoBean userInfoBean) throws RestAPIException {
try {
- getStratosUserManager().addUser(userInfoBean);
+
+ stratosUserManager.addUser(getTenantUserStoreManager(), userInfoBean);
+
} catch (UserManagementException e) {
log.error(e.getMessage(), e);
throw new RestAPIException(e.getMessage(), e);
}
-
- log.info("Successfully added an user with UserName " + userInfoBean.getUserName());
+ log.info("Successfully added an user with Username " + userInfoBean.getUserName());
}
public static void updateUser(UserInfoBean userInfoBean) throws RestAPIException {
try {
- getStratosUserManager().updateUser(userInfoBean);
+
+ stratosUserManager.updateUser(getTenantUserStoreManager(), userInfoBean);
+
} catch (UserManagementException e) {
log.error(e.getMessage(), e);
throw new RestAPIException(e.getMessage(), e);
}
- log.info("Successfully updated an user with UserName " + userInfoBean.getUserName());
+ log.info("Successfully updated an user with Username " + userInfoBean.getUserName());
}
public static void deleteUser(String userName) throws RestAPIException {
try {
- getStratosUserManager().deleteUser(userName);
+
+ stratosUserManager.deleteUser(getTenantUserStoreManager(), userName);
+
+ } catch (UserManagementException e) {
+ log.error(e.getMessage(), e);
+ throw new RestAPIException(e.getMessage(), e);
+ }
+ log.info("Successfully deleted an user with Username " + userName);
+ }
+
+ public static List<UserInfoBean> getAllUsers() throws RestAPIException {
+
+ List<UserInfoBean> userList = null;
+
+ try {
+
+ userList = stratosUserManager.getAllUsers(getTenantUserStoreManager());
+
} catch (UserManagementException e) {
log.error(e.getMessage(), e);
throw new RestAPIException(e.getMessage(), e);
}
- log.info("Successfully deleted an user with UserName " + userName);
+ return userList;
}
/**
- * Get Tenant aware UserStore
+ * Get Tenant aware UserStoreManager
*
* @return
* @throws RestAPIException
*/
- private static StratosUserManager getStratosUserManager() throws RestAPIException {
+ private static UserStoreManager getTenantUserStoreManager() throws RestAPIException {
CarbonContext carbonContext = CarbonContext.getThreadLocalCarbonContext();
UserRealm userRealm = null;
- StratosUserManager stratosUserManager = null;
+ UserStoreManager userStoreManager = null;
try {
userRealm = carbonContext.getUserRealm();
- UserStoreManager userStoreManager = userRealm.getUserStoreManager();
- stratosUserManager = new StratosUserManager(userStoreManager);
+ userStoreManager = userRealm.getUserStoreManager();
} catch (UserStoreException e) {
log.error(e.getMessage(), e);
throw new RestAPIException(e.getMessage(), e);
}
- return stratosUserManager;
+ return userStoreManager;
}
public static boolean deployKubernetesGroup(KubernetesGroup kubernetesGroupBean) throws RestAPIException {
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/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 1569a53..3f42af2 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
@@ -1179,6 +1179,22 @@ public class StratosAdmin extends AbstractAdmin {
return Response.created(url).build();
}
+ @GET
+ @Path("/user/list")
+ @Produces("application/json")
+ @AuthorizationAction("/permission/admin/manage/add/users")
+ public UserInfoBean[] retrieveUsers() throws RestAPIException {
+ List<UserInfoBean> userList = null;
+ try {
+ userList = ServiceUtils.getAllUsers();
+ } catch (Exception e) {
+ String msg = "Error in retrieving users";
+ log.error(msg, e);
+ throw new RestAPIException(msg);
+ }
+ return userList.toArray(new UserInfoBean[userList.size()]);
+ }
+
@POST
@Path("/kubernetes/deploy/group")
@Produces("application/json")
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd
index 0ff4cc8..ff395de 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd
+++ b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd
@@ -20,9 +20,9 @@
<xs:element name="userName" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
<xs:element name="credential" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
<xs:element name="role" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
- <xs:element name="firstName" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
- <xs:element name="lastName" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
- <xs:element name="email" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
+ <xs:element name="firstName" type="xs:string" minOccurs="0" maxOccurs="1" nillable="false"/>
+ <xs:element name="lastName" type="xs:string" minOccurs="0" maxOccurs="1" nillable="false"/>
+ <xs:element name="email" type="xs:string" minOccurs="0" maxOccurs="1" nillable="false"/>
<xs:element name="profileName" type="xs:string" minOccurs="0" maxOccurs="1" nillable="false"/>
</xs:all>
</xs:complexType>
http://git-wip-us.apache.org/repos/asf/stratos/blob/38d7f726/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd
index 3d51481..d9e276c 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd
+++ b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd
@@ -20,9 +20,9 @@
<xs:element name="userName" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
<xs:element name="credential" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
<xs:element name="role" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
- <xs:element name="firstName" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
- <xs:element name="lastName" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
- <xs:element name="email" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
+ <xs:element name="firstName" type="xs:string" minOccurs="0" maxOccurs="1" nillable="false"/>
+ <xs:element name="lastName" type="xs:string" minOccurs="0" maxOccurs="1" nillable="false"/>
+ <xs:element name="email" type="xs:string" minOccurs="0" maxOccurs="1" nillable="false"/>
<xs:element name="profileName" type="xs:string" minOccurs="0" maxOccurs="1" nillable="false"/>
</xs:all>
</xs:complexType>